--*/
-#include "CdProcs.h"
+#include "cdprocs.h"
//
// The Bug check file id for this module
VOID
CdQueryBasicInfo (
- IN PIRP_CONTEXT IrpContext,
- IN PFCB Fcb,
- IN OUT PFILE_BASIC_INFORMATION Buffer,
- IN OUT PULONG Length
+ _In_ PIRP_CONTEXT IrpContext,
+ _In_ PFCB Fcb,
+ _Out_ PFILE_BASIC_INFORMATION Buffer,
+ _Inout_ PULONG Length
);
VOID
CdQueryStandardInfo (
- IN PIRP_CONTEXT IrpContext,
- IN PFCB Fcb,
- IN OUT PFILE_STANDARD_INFORMATION Buffer,
- IN OUT PULONG Length
+ _In_ PIRP_CONTEXT IrpContext,
+ _In_ PFCB Fcb,
+ _Out_ PFILE_STANDARD_INFORMATION Buffer,
+ _Inout_ PULONG Length
);
VOID
CdQueryInternalInfo (
- IN PIRP_CONTEXT IrpContext,
- IN PFCB Fcb,
- IN OUT PFILE_INTERNAL_INFORMATION Buffer,
- IN OUT PULONG Length
+ _In_ PIRP_CONTEXT IrpContext,
+ _In_ PFCB Fcb,
+ _Out_ PFILE_INTERNAL_INFORMATION Buffer,
+ _Inout_ PULONG Length
);
VOID
CdQueryEaInfo (
- IN PIRP_CONTEXT IrpContext,
- IN PFCB Fcb,
- IN OUT PFILE_EA_INFORMATION Buffer,
- IN OUT PULONG Length
+ _In_ PIRP_CONTEXT IrpContext,
+ _In_ PFCB Fcb,
+ _Out_ PFILE_EA_INFORMATION Buffer,
+ _Inout_ PULONG Length
);
VOID
CdQueryPositionInfo (
- IN PIRP_CONTEXT IrpContext,
- IN PFILE_OBJECT FileObject,
- IN OUT PFILE_POSITION_INFORMATION Buffer,
- IN OUT PULONG Length
+ _In_ PIRP_CONTEXT IrpContext,
+ _In_ PFILE_OBJECT FileObject,
+ _Out_ PFILE_POSITION_INFORMATION Buffer,
+ _Inout_ PULONG Length
);
NTSTATUS
CdQueryNameInfo (
- IN PIRP_CONTEXT IrpContext,
- IN PFILE_OBJECT FileObject,
- IN OUT PFILE_NAME_INFORMATION Buffer,
- IN OUT PULONG Length
+ _In_ PIRP_CONTEXT IrpContext,
+ _In_ PFILE_OBJECT FileObject,
+ _Out_ PFILE_NAME_INFORMATION Buffer,
+ _Inout_ PULONG Length
);
+_Requires_lock_held_(_Global_critical_region_)
NTSTATUS
CdQueryAlternateNameInfo (
- IN PIRP_CONTEXT IrpContext,
- IN PFCB Fcb,
- IN PCCB Ccb,
- IN OUT PFILE_NAME_INFORMATION Buffer,
- IN OUT PULONG Length
+ _In_ PIRP_CONTEXT IrpContext,
+ _In_ PFCB Fcb,
+ _In_ PCCB Ccb,
+ _Out_ PFILE_NAME_INFORMATION Buffer,
+ _Inout_ PULONG Length
);
VOID
CdQueryNetworkInfo (
- IN PIRP_CONTEXT IrpContext,
- IN PFCB Fcb,
- IN OUT PFILE_NETWORK_OPEN_INFORMATION Buffer,
- IN OUT PULONG Length
+ _In_ PIRP_CONTEXT IrpContext,
+ _In_ PFCB Fcb,
+ _Out_ PFILE_NETWORK_OPEN_INFORMATION Buffer,
+ _Inout_ PULONG Length
);
#ifdef ALLOC_PRAGMA
#endif
\f
+_Requires_lock_held_(_Global_critical_region_)
NTSTATUS
CdCommonQueryInfo (
- IN PIRP_CONTEXT IrpContext,
- IN PIRP Irp
+ _Inout_ PIRP_CONTEXT IrpContext,
+ _Inout_ PIRP Irp
)
/*++
// Use a try-finally to facilitate cleanup.
//
- try {
+ _SEH2_TRY {
//
// We only support query on file and directory handles.
if (!FlagOn( Fcb->FcbState, FCB_STATE_INITIALIZED )) {
- ASSERT( TypeOfOpen == UserDirectoryOpen );
- CdCreateInternalStream( IrpContext, Fcb->Vcb, Fcb );
+ NT_ASSERT( TypeOfOpen == UserDirectoryOpen );
+ CdVerifyOrCreateDirStreamFile( IrpContext, Fcb);
}
//
Irp->IoStatus.Information = IrpSp->Parameters.QueryFile.Length - Length;
- } finally {
+ } _SEH2_FINALLY {
//
// Release the file.
CdReleaseFile( IrpContext, Fcb );
}
- }
+ } _SEH2_END;
//
// Complete the request if we didn't raise.
}
\f
+_Requires_lock_held_(_Global_critical_region_)
NTSTATUS
CdCommonSetInfo (
- IN PIRP_CONTEXT IrpContext,
- IN PIRP Irp
+ _Inout_ PIRP_CONTEXT IrpContext,
+ _Inout_ PIRP Irp
)
/*++
CdAcquireFileShared( IrpContext, Fcb );
- try {
+ _SEH2_TRY {
//
// Make sure the Fcb is in a usable condition. This
Status = STATUS_SUCCESS;
try_exit: NOTHING;
- } finally {
+ } _SEH2_FINALLY {
CdReleaseFile( IrpContext, Fcb );
- }
+ } _SEH2_END;
//
// Complete the request if there was no raise.
return Status;
}
-\f
+
+_Function_class_(FAST_IO_QUERY_BASIC_INFO)
+_IRQL_requires_same_\f
+_Success_(return != FALSE)
BOOLEAN
NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
CdFastQueryBasicInfo (
- IN PFILE_OBJECT FileObject,
- IN BOOLEAN Wait,
- IN OUT PFILE_BASIC_INFORMATION Buffer,
- OUT PIO_STATUS_BLOCK IoStatus,
- IN PDEVICE_OBJECT DeviceObject
+ _In_ PFILE_OBJECT FileObject,
+ _In_ BOOLEAN Wait,
+ _Out_ PFILE_BASIC_INFORMATION Buffer,
+ _Out_ PIO_STATUS_BLOCK IoStatus,
+ _In_ PDEVICE_OBJECT DeviceObject
)
/*++
PAGED_CODE();
+ UNREFERENCED_PARAMETER( DeviceObject );
+
ASSERT_FILE_OBJECT( FileObject );
FsRtlEnterFileSystem();
// Use a try-finally to facilitate cleanup.
//
- try {
+ _SEH2_TRY {
//
// Only deal with 'good' Fcb's.
Result = TRUE;
}
- } finally {
+ } _SEH2_FINALLY {
ExReleaseResourceLite( Fcb->Resource );
FsRtlExitFileSystem();
- }
+ } _SEH2_END;
return Result;
}
-\f
+
+_Function_class_(FAST_IO_QUERY_STANDARD_INFO)
+_IRQL_requires_same_
+_Success_(return != FALSE)
BOOLEAN
NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
CdFastQueryStdInfo (
- IN PFILE_OBJECT FileObject,
- IN BOOLEAN Wait,
- IN OUT PFILE_STANDARD_INFORMATION Buffer,
- OUT PIO_STATUS_BLOCK IoStatus,
- IN PDEVICE_OBJECT DeviceObject
+ _In_ PFILE_OBJECT FileObject,
+ _In_ BOOLEAN Wait,
+ _Out_ PFILE_STANDARD_INFORMATION Buffer,
+ _Out_ PIO_STATUS_BLOCK IoStatus,
+ _In_ PDEVICE_OBJECT DeviceObject
)
/*++
PAGED_CODE();
+ UNREFERENCED_PARAMETER( DeviceObject );
+
ASSERT_FILE_OBJECT( FileObject );
FsRtlEnterFileSystem();
// Use a try-finally to facilitate cleanup.
//
- try {
+ _SEH2_TRY {
//
// Only deal with 'good' Fcb's.
Result = TRUE;
}
- } finally {
+ } _SEH2_FINALLY {
ExReleaseResourceLite( Fcb->Resource );
FsRtlExitFileSystem();
- }
+ } _SEH2_END;
return Result;
}
-\f
+
+_Function_class_(FAST_IO_QUERY_NETWORK_OPEN_INFO)
+_IRQL_requires_same_
+_Success_(return != FALSE)
BOOLEAN
NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
CdFastQueryNetworkInfo (
- IN PFILE_OBJECT FileObject,
- IN BOOLEAN Wait,
- OUT PFILE_NETWORK_OPEN_INFORMATION Buffer,
- OUT PIO_STATUS_BLOCK IoStatus,
- IN PDEVICE_OBJECT DeviceObject
+ _In_ PFILE_OBJECT FileObject,
+ _In_ BOOLEAN Wait,
+ _Out_ PFILE_NETWORK_OPEN_INFORMATION Buffer,
+ _Out_ PIO_STATUS_BLOCK IoStatus,
+ _In_ PDEVICE_OBJECT DeviceObject
)
/*++
PAGED_CODE();
+ UNREFERENCED_PARAMETER( DeviceObject );
+
ASSERT_FILE_OBJECT( FileObject );
FsRtlEnterFileSystem();
// Use a try-finally to facilitate cleanup.
//
- try {
+ _SEH2_TRY {
//
// Only deal with 'good' Fcb's.
Result = TRUE;
}
- } finally {
+ } _SEH2_FINALLY {
ExReleaseResourceLite( Fcb->Resource );
FsRtlExitFileSystem();
- }
+ } _SEH2_END;
return Result;
}
VOID
CdQueryBasicInfo (
- IN PIRP_CONTEXT IrpContext,
- IN PFCB Fcb,
- IN OUT PFILE_BASIC_INFORMATION Buffer,
- IN OUT PULONG Length
+ _In_ PIRP_CONTEXT IrpContext,
+ _In_ PFCB Fcb,
+ _Out_ PFILE_BASIC_INFORMATION Buffer,
+ _Inout_ PULONG Length
)
/*++
{
PAGED_CODE();
+ UNREFERENCED_PARAMETER( IrpContext );
+
//
// We only support creation, last modify and last write times on Cdfs.
//
VOID
CdQueryStandardInfo (
- IN PIRP_CONTEXT IrpContext,
- IN PFCB Fcb,
- IN OUT PFILE_STANDARD_INFORMATION Buffer,
- IN OUT PULONG Length
+ _In_ PIRP_CONTEXT IrpContext,
+ _In_ PFCB Fcb,
+ _Out_ PFILE_STANDARD_INFORMATION Buffer,
+ _Inout_ PULONG Length
)
/*++
{
PAGED_CODE();
+ UNREFERENCED_PARAMETER( IrpContext );
+
//
// There is only one link and delete is never pending on a Cdrom file.
//
VOID
CdQueryInternalInfo (
- IN PIRP_CONTEXT IrpContext,
- IN PFCB Fcb,
- IN OUT PFILE_INTERNAL_INFORMATION Buffer,
- IN OUT PULONG Length
+ _In_ PIRP_CONTEXT IrpContext,
+ _In_ PFCB Fcb,
+ _Out_ PFILE_INTERNAL_INFORMATION Buffer,
+ _Inout_ PULONG Length
)
/*++
{
PAGED_CODE();
+ UNREFERENCED_PARAMETER( IrpContext );
+
//
// Index number is the file Id number in the Fcb.
//
VOID
CdQueryEaInfo (
- IN PIRP_CONTEXT IrpContext,
- IN PFCB Fcb,
- IN OUT PFILE_EA_INFORMATION Buffer,
- IN OUT PULONG Length
+ _In_ PIRP_CONTEXT IrpContext,
+ _In_ PFCB Fcb,
+ _Out_ PFILE_EA_INFORMATION Buffer,
+ _Inout_ PULONG Length
)
/*++
{
PAGED_CODE();
+ UNREFERENCED_PARAMETER( IrpContext );
+ UNREFERENCED_PARAMETER( Fcb );
+
//
// No Ea's on Cdfs volumes.
//
VOID
CdQueryPositionInfo (
- IN PIRP_CONTEXT IrpContext,
- IN PFILE_OBJECT FileObject,
- IN OUT PFILE_POSITION_INFORMATION Buffer,
- IN OUT PULONG Length
+ _In_ PIRP_CONTEXT IrpContext,
+ _In_ PFILE_OBJECT FileObject,
+ _Out_ PFILE_POSITION_INFORMATION Buffer,
+ _Inout_ PULONG Length
)
/*++
{
PAGED_CODE();
+ UNREFERENCED_PARAMETER( IrpContext );
+
//
// Get the current position found in the file object.
//
NTSTATUS
CdQueryNameInfo (
- IN PIRP_CONTEXT IrpContext,
- IN PFILE_OBJECT FileObject,
- IN OUT PFILE_NAME_INFORMATION Buffer,
- IN OUT PULONG Length
+ _In_ PIRP_CONTEXT IrpContext,
+ _In_ PFILE_OBJECT FileObject,
+ _Out_ PFILE_NAME_INFORMATION Buffer,
+ _Inout_ PULONG Length
)
/*++
PAGED_CODE();
- ASSERT(*Length >= sizeof(ULONG));
+ UNREFERENCED_PARAMETER( IrpContext );
+
+ NT_ASSERT(*Length >= sizeof(ULONG));
//
// Simply copy the name in the file object to the user's buffer.
// Local support routine
//
+_Requires_lock_held_(_Global_critical_region_)
NTSTATUS
CdQueryAlternateNameInfo (
- IN PIRP_CONTEXT IrpContext,
- IN PFCB Fcb,
- IN PCCB Ccb,
- IN OUT PFILE_NAME_INFORMATION Buffer,
- IN OUT PULONG Length
+ _In_ PIRP_CONTEXT IrpContext,
+ _In_ PFCB Fcb,
+ _In_ PCCB Ccb,
+ _Out_ PFILE_NAME_INFORMATION Buffer,
+ _Inout_ PULONG Length
)
/*++
{
NTSTATUS Status = STATUS_SUCCESS;
- DIRENT_ENUM_CONTEXT DirContext;
- DIRENT Dirent;
+ DIRENT_ENUM_CONTEXT DirContext = {0};
+ DIRENT Dirent = {0};
PUNICODE_STRING NameToUse;
ULONG DirentOffset;
- COMPOUND_PATH_ENTRY CompoundPathEntry;
+ COMPOUND_PATH_ENTRY CompoundPathEntry = {{0}};/* ReactOS Change: GCC "missing braces around initializer" */
FILE_ENUM_CONTEXT FileContext;
- PFCB ParentFcb;
+ PFCB ParentFcb = NULL;
BOOLEAN ReleaseParentFcb = FALSE;
BOOLEAN CleanupFileLookup = FALSE;
// Use a try-finally to cleanup the structures.
//
- try {
+ _SEH2_TRY {
ParentFcb = Fcb->ParentFcb;
CdAcquireFileShared( IrpContext, ParentFcb );
ReleaseParentFcb = TRUE;
- //
- // Do an unsafe test to see if we need to create a file object.
- //
-
- if (ParentFcb->FileObject == NULL) {
-
- CdCreateInternalStream( IrpContext, ParentFcb->Vcb, ParentFcb );
- }
+ CdVerifyOrCreateDirStreamFile( IrpContext, ParentFcb);
if (CdFidIsDirectory( Fcb->FileId)) {
RtlCopyMemory( Buffer->FileName, ShortNameBuffer, Buffer->FileNameLength );
try_exit: NOTHING;
- } finally {
+ } _SEH2_FINALLY {
if (CleanupFileLookup) {
CdCleanupDirContext( IrpContext, &DirContext );
- CdCleanupDirent( IrpContext, &Dirent );
+ CdCleanupDirent( IrpContext, &Dirent );/* ReactOS Change: GCC "passing argument 1 from incompatible pointer type" */
} else if (CleanupDirectoryLookup) {
CdReleaseFile( IrpContext, ParentFcb );
}
- }
+ } _SEH2_END;
//
// Reduce the available bytes by the amount stored into this buffer.
VOID
CdQueryNetworkInfo (
- IN PIRP_CONTEXT IrpContext,
- IN PFCB Fcb,
- IN OUT PFILE_NETWORK_OPEN_INFORMATION Buffer,
- IN OUT PULONG Length
+ _In_ PIRP_CONTEXT IrpContext,
+ _In_ PFCB Fcb,
+ _Out_ PFILE_NETWORK_OPEN_INFORMATION Buffer,
+ _Inout_ PULONG Length
)
/*++
{
PAGED_CODE();
+ UNREFERENCED_PARAMETER( IrpContext );
+
//
// We only support creation, last modify and last write times on Cdfs.
//