mirror of
https://github.com/reactos/reactos.git
synced 2024-12-28 18:15:11 +00:00
[CDFS_NEW] Re-apply many of the reactos-specific changes and fix build.
- Also, get rid of the old diff file.
This commit is contained in:
parent
fd34548263
commit
5429771b99
32 changed files with 541 additions and 1198 deletions
|
@ -44,7 +44,7 @@ Abstract:
|
||||||
|
|
||||||
--*/
|
--*/
|
||||||
|
|
||||||
#include "CdProcs.h"
|
#include "cdprocs.h"
|
||||||
|
|
||||||
//
|
//
|
||||||
// The Bug check file id for this module
|
// The Bug check file id for this module
|
||||||
|
@ -86,8 +86,10 @@ CdDiskOffsetFromMcbEntry (
|
||||||
|
|
||||||
_Requires_lock_held_(_Global_critical_region_)
|
_Requires_lock_held_(_Global_critical_region_)
|
||||||
VOID
|
VOID
|
||||||
|
#ifdef _MSC_VER
|
||||||
// PREFast currently has no way to express the Fcb==Fcb->Vcb->VolumeDasdFcb early return
|
// PREFast currently has no way to express the Fcb==Fcb->Vcb->VolumeDasdFcb early return
|
||||||
#pragma warning(suppress: 6001 6101)
|
#pragma warning(suppress: 6001 6101)
|
||||||
|
#endif
|
||||||
CdLookupAllocation (
|
CdLookupAllocation (
|
||||||
_In_ PIRP_CONTEXT IrpContext,
|
_In_ PIRP_CONTEXT IrpContext,
|
||||||
_In_ PFCB Fcb,
|
_In_ PFCB Fcb,
|
||||||
|
@ -164,7 +166,7 @@ Return Value:
|
||||||
// Use a try finally to facilitate cleanup.
|
// Use a try finally to facilitate cleanup.
|
||||||
//
|
//
|
||||||
|
|
||||||
try {
|
_SEH2_TRY {
|
||||||
|
|
||||||
//
|
//
|
||||||
// We use a loop to perform the lookup. If we don't find the mapping in the
|
// We use a loop to perform the lookup. If we don't find the mapping in the
|
||||||
|
@ -308,7 +310,7 @@ Return Value:
|
||||||
FirstPass = FALSE;
|
FirstPass = FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
} finally {
|
} _SEH2_FINALLY {
|
||||||
|
|
||||||
if (CleanupParent) {
|
if (CleanupParent) {
|
||||||
|
|
||||||
|
@ -323,7 +325,7 @@ Return Value:
|
||||||
}
|
}
|
||||||
|
|
||||||
if (UnlockFcb) { CdUnlockFcb( IrpContext, Fcb ); }
|
if (UnlockFcb) { CdUnlockFcb( IrpContext, Fcb ); }
|
||||||
}
|
} _SEH2_END;
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,7 +14,7 @@ Abstract:
|
||||||
|
|
||||||
--*/
|
--*/
|
||||||
|
|
||||||
#include "CdProcs.h"
|
#include "cdprocs.h"
|
||||||
|
|
||||||
//
|
//
|
||||||
// The Bug check file id for this module
|
// The Bug check file id for this module
|
||||||
|
@ -95,7 +95,7 @@ Return Value:
|
||||||
// Use a try-finally to facilitate cleanup.
|
// Use a try-finally to facilitate cleanup.
|
||||||
//
|
//
|
||||||
|
|
||||||
try {
|
_SEH2_TRY {
|
||||||
|
|
||||||
//
|
//
|
||||||
// Create the internal stream. The Vpb should be pointing at our volume
|
// Create the internal stream. The Vpb should be pointing at our volume
|
||||||
|
@ -281,7 +281,7 @@ Return Value:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
} finally {
|
} _SEH2_FINALLY {
|
||||||
|
|
||||||
//
|
//
|
||||||
// Cleanup any dirent structures we may have used.
|
// Cleanup any dirent structures we may have used.
|
||||||
|
@ -323,7 +323,7 @@ Return Value:
|
||||||
}
|
}
|
||||||
|
|
||||||
CdUnlockFcb( IrpContext, Fcb );
|
CdUnlockFcb( IrpContext, Fcb );
|
||||||
}
|
} _SEH2_END;
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,7 +17,7 @@ Abstract:
|
||||||
|
|
||||||
--*/
|
--*/
|
||||||
|
|
||||||
#include "CdProcs.h"
|
#include "cdprocs.h"
|
||||||
|
|
||||||
#ifdef CD_SANITY
|
#ifdef CD_SANITY
|
||||||
BOOLEAN CdTestTopLevel = TRUE;
|
BOOLEAN CdTestTopLevel = TRUE;
|
||||||
|
@ -287,7 +287,7 @@ Return Value:
|
||||||
// Use a try-except to handle the exception cases.
|
// Use a try-except to handle the exception cases.
|
||||||
//
|
//
|
||||||
|
|
||||||
try {
|
_SEH2_TRY {
|
||||||
|
|
||||||
//
|
//
|
||||||
// If the IrpContext is NULL then this is the first pass through
|
// If the IrpContext is NULL then this is the first pass through
|
||||||
|
@ -436,10 +436,10 @@ Return Value:
|
||||||
CdCompleteRequest( IrpContext, Irp, Status );
|
CdCompleteRequest( IrpContext, Irp, Status );
|
||||||
}
|
}
|
||||||
|
|
||||||
} except( CdExceptionFilter( IrpContext, GetExceptionInformation() )) {
|
} _SEH2_EXCEPT( CdExceptionFilter( IrpContext, _SEH2_GetExceptionInformation() )) {
|
||||||
|
|
||||||
Status = CdProcessException( IrpContext, Irp, GetExceptionCode() );
|
Status = CdProcessException( IrpContext, Irp, _SEH2_GetExceptionCode() );
|
||||||
}
|
} _SEH2_END;
|
||||||
|
|
||||||
} while (Status == STATUS_CANT_WAIT);
|
} while (Status == STATUS_CANT_WAIT);
|
||||||
|
|
||||||
|
@ -597,7 +597,9 @@ Return Value:
|
||||||
|
|
||||||
if (TestStatus && !FsRtlIsNtstatusExpected( ExceptionCode )) {
|
if (TestStatus && !FsRtlIsNtstatusExpected( ExceptionCode )) {
|
||||||
|
|
||||||
#pragma prefast( suppress: __WARNING_USE_OTHER_FUNCTION, "We're corrupted." )
|
#ifdef _MSC_VER
|
||||||
|
#pragma prefast( suppress: __WARNING_USE_OTHER_FUNCTION, "We're corrupted." )
|
||||||
|
#endif
|
||||||
CdBugCheck( (ULONG_PTR) ExceptionPointer->ExceptionRecord,
|
CdBugCheck( (ULONG_PTR) ExceptionPointer->ExceptionRecord,
|
||||||
(ULONG_PTR) ExceptionPointer->ContextRecord,
|
(ULONG_PTR) ExceptionPointer->ContextRecord,
|
||||||
(ULONG_PTR) ExceptionPointer->ExceptionRecord->ExceptionAddress );
|
(ULONG_PTR) ExceptionPointer->ExceptionRecord->ExceptionAddress );
|
||||||
|
@ -686,7 +688,7 @@ Return Value:
|
||||||
// Note that (children of) CdFsdPostRequest can raise (Mdl allocation).
|
// Note that (children of) CdFsdPostRequest can raise (Mdl allocation).
|
||||||
//
|
//
|
||||||
|
|
||||||
try {
|
_SEH2_TRY {
|
||||||
|
|
||||||
if (ExceptionCode == STATUS_CANT_WAIT) {
|
if (ExceptionCode == STATUS_CANT_WAIT) {
|
||||||
|
|
||||||
|
@ -702,11 +704,10 @@ Return Value:
|
||||||
ExceptionCode = CdFsdPostRequest( IrpContext, Irp );
|
ExceptionCode = CdFsdPostRequest( IrpContext, Irp );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
except( CdExceptionFilter( IrpContext, GetExceptionInformation() )) {
|
_SEH2_EXCEPT( CdExceptionFilter( IrpContext, _SEH2_GetExceptionInformation() )) {
|
||||||
|
|
||||||
ExceptionCode = GetExceptionCode();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
ExceptionCode = _SEH2_GetExceptionCode();
|
||||||
|
} _SEH2_END;
|
||||||
//
|
//
|
||||||
// If we posted the request or our caller will retry then just return here.
|
// If we posted the request or our caller will retry then just return here.
|
||||||
//
|
//
|
||||||
|
@ -1009,6 +1010,10 @@ Return Value:
|
||||||
|
|
||||||
{
|
{
|
||||||
PTHREAD_CONTEXT CurrentThreadContext;
|
PTHREAD_CONTEXT CurrentThreadContext;
|
||||||
|
#ifdef __REACTOS__
|
||||||
|
ULONG_PTR StackTop;
|
||||||
|
ULONG_PTR StackBottom;
|
||||||
|
#endif
|
||||||
|
|
||||||
PAGED_CODE();
|
PAGED_CODE();
|
||||||
|
|
||||||
|
@ -1040,9 +1045,21 @@ Return Value:
|
||||||
// If this is not a valid Cdfs context then use the input thread
|
// If this is not a valid Cdfs context then use the input thread
|
||||||
// context and store it in the top level context.
|
// context and store it in the top level context.
|
||||||
//
|
//
|
||||||
|
|
||||||
|
#ifdef __REACTOS__
|
||||||
|
IoGetStackLimits( &StackTop, &StackBottom);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef _MSC_VER
|
||||||
#pragma warning(suppress: 6011) // Bug in PREFast around bitflag operations
|
#pragma warning(suppress: 6011) // Bug in PREFast around bitflag operations
|
||||||
|
#endif
|
||||||
if (FlagOn( IrpContext->Flags, IRP_CONTEXT_FLAG_TOP_LEVEL ) ||
|
if (FlagOn( IrpContext->Flags, IRP_CONTEXT_FLAG_TOP_LEVEL ) ||
|
||||||
|
#ifndef __REACTOS__
|
||||||
(!IoWithinStackLimits( (ULONG_PTR)CurrentThreadContext, sizeof( THREAD_CONTEXT ) ) ||
|
(!IoWithinStackLimits( (ULONG_PTR)CurrentThreadContext, sizeof( THREAD_CONTEXT ) ) ||
|
||||||
|
#else
|
||||||
|
(((ULONG_PTR) CurrentThreadContext > StackBottom - sizeof( THREAD_CONTEXT )) ||
|
||||||
|
((ULONG_PTR) CurrentThreadContext <= StackTop) ||
|
||||||
|
#endif
|
||||||
FlagOn( (ULONG_PTR) CurrentThreadContext, 0x3 ) ||
|
FlagOn( (ULONG_PTR) CurrentThreadContext, 0x3 ) ||
|
||||||
(CurrentThreadContext->Cdfs != 0x53464443))) {
|
(CurrentThreadContext->Cdfs != 0x53464443))) {
|
||||||
|
|
||||||
|
@ -1073,6 +1090,7 @@ _Function_class_(FAST_IO_CHECK_IF_POSSIBLE)
|
||||||
_IRQL_requires_same_
|
_IRQL_requires_same_
|
||||||
_Success_(return != FALSE)
|
_Success_(return != FALSE)
|
||||||
BOOLEAN
|
BOOLEAN
|
||||||
|
NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
|
||||||
CdFastIoCheckIfPossible (
|
CdFastIoCheckIfPossible (
|
||||||
_In_ PFILE_OBJECT FileObject,
|
_In_ PFILE_OBJECT FileObject,
|
||||||
_In_ PLARGE_INTEGER FileOffset,
|
_In_ PLARGE_INTEGER FileOffset,
|
||||||
|
|
|
@ -13,7 +13,7 @@ Abstract:
|
||||||
|
|
||||||
--*/
|
--*/
|
||||||
|
|
||||||
#include "CdProcs.h"
|
#include "cdprocs.h"
|
||||||
|
|
||||||
//
|
//
|
||||||
// The Bug check file id for this module
|
// The Bug check file id for this module
|
||||||
|
@ -25,6 +25,7 @@ Abstract:
|
||||||
DRIVER_INITIALIZE DriverEntry;
|
DRIVER_INITIALIZE DriverEntry;
|
||||||
|
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
|
NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
|
||||||
DriverEntry(
|
DriverEntry(
|
||||||
_In_ PDRIVER_OBJECT DriverObject,
|
_In_ PDRIVER_OBJECT DriverObject,
|
||||||
_In_ PUNICODE_STRING RegistryPath
|
_In_ PUNICODE_STRING RegistryPath
|
||||||
|
@ -35,6 +36,7 @@ DriverEntry(
|
||||||
DRIVER_UNLOAD CdUnload;
|
DRIVER_UNLOAD CdUnload;
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
|
NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
|
||||||
CdUnload(
|
CdUnload(
|
||||||
_In_ PDRIVER_OBJECT DriverObject
|
_In_ PDRIVER_OBJECT DriverObject
|
||||||
);
|
);
|
||||||
|
@ -43,6 +45,10 @@ NTSTATUS
|
||||||
CdInitializeGlobalData (
|
CdInitializeGlobalData (
|
||||||
_In_ PDRIVER_OBJECT DriverObject,
|
_In_ PDRIVER_OBJECT DriverObject,
|
||||||
_In_ PDEVICE_OBJECT FileSystemDeviceObject
|
_In_ PDEVICE_OBJECT FileSystemDeviceObject
|
||||||
|
#ifdef __REACTOS__
|
||||||
|
,
|
||||||
|
IN PDEVICE_OBJECT HddFileSystemDeviceObject
|
||||||
|
#endif
|
||||||
);
|
);
|
||||||
|
|
||||||
#ifdef ALLOC_PRAGMA
|
#ifdef ALLOC_PRAGMA
|
||||||
|
@ -57,6 +63,7 @@ CdInitializeGlobalData (
|
||||||
//
|
//
|
||||||
|
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
|
NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
|
||||||
DriverEntry(
|
DriverEntry(
|
||||||
_In_ PDRIVER_OBJECT DriverObject,
|
_In_ PDRIVER_OBJECT DriverObject,
|
||||||
_In_ PUNICODE_STRING RegistryPath
|
_In_ PUNICODE_STRING RegistryPath
|
||||||
|
@ -86,6 +93,9 @@ Return Value:
|
||||||
UNICODE_STRING UnicodeString;
|
UNICODE_STRING UnicodeString;
|
||||||
PDEVICE_OBJECT CdfsFileSystemDeviceObject;
|
PDEVICE_OBJECT CdfsFileSystemDeviceObject;
|
||||||
FS_FILTER_CALLBACKS FilterCallbacks;
|
FS_FILTER_CALLBACKS FilterCallbacks;
|
||||||
|
#ifdef __REACTOS__
|
||||||
|
PDEVICE_OBJECT HddFileSystemDeviceObject;
|
||||||
|
#endif
|
||||||
|
|
||||||
UNREFERENCED_PARAMETER( RegistryPath );
|
UNREFERENCED_PARAMETER( RegistryPath );
|
||||||
|
|
||||||
|
@ -107,11 +117,34 @@ Return Value:
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef __REACTOS__
|
||||||
|
//
|
||||||
|
// Create the HDD device object.
|
||||||
|
//
|
||||||
|
|
||||||
|
RtlInitUnicodeString( &UnicodeString, L"\\CdfsHdd" );
|
||||||
|
|
||||||
|
Status = IoCreateDevice( DriverObject,
|
||||||
|
0,
|
||||||
|
&UnicodeString,
|
||||||
|
FILE_DEVICE_DISK_FILE_SYSTEM,
|
||||||
|
0,
|
||||||
|
FALSE,
|
||||||
|
&HddFileSystemDeviceObject );
|
||||||
|
|
||||||
|
if (!NT_SUCCESS( Status )) {
|
||||||
|
IoDeleteDevice (CdfsFileSystemDeviceObject);
|
||||||
|
return Status;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef _MSC_VER
|
||||||
#pragma prefast(push)
|
#pragma prefast(push)
|
||||||
#pragma prefast(disable: 28155, "the dispatch routine has the correct type, prefast is just being paranoid.")
|
#pragma prefast(disable: 28155, "the dispatch routine has the correct type, prefast is just being paranoid.")
|
||||||
#pragma prefast(disable: 28168, "the dispatch routine has the correct type, prefast is just being paranoid.")
|
#pragma prefast(disable: 28168, "the dispatch routine has the correct type, prefast is just being paranoid.")
|
||||||
#pragma prefast(disable: 28169, "the dispatch routine has the correct type, prefast is just being paranoid.")
|
#pragma prefast(disable: 28169, "the dispatch routine has the correct type, prefast is just being paranoid.")
|
||||||
#pragma prefast(disable: 28175, "we're allowed to change these.")
|
#pragma prefast(disable: 28175, "we're allowed to change these.")
|
||||||
|
#endif
|
||||||
|
|
||||||
DriverObject->DriverUnload = CdUnload;
|
DriverObject->DriverUnload = CdUnload;
|
||||||
|
|
||||||
|
@ -143,9 +176,11 @@ Return Value:
|
||||||
DriverObject->MajorFunction[IRP_MJ_CLEANUP] =
|
DriverObject->MajorFunction[IRP_MJ_CLEANUP] =
|
||||||
DriverObject->MajorFunction[IRP_MJ_PNP] =
|
DriverObject->MajorFunction[IRP_MJ_PNP] =
|
||||||
DriverObject->MajorFunction[IRP_MJ_SHUTDOWN] = (PDRIVER_DISPATCH) CdFsdDispatch;
|
DriverObject->MajorFunction[IRP_MJ_SHUTDOWN] = (PDRIVER_DISPATCH) CdFsdDispatch;
|
||||||
|
#ifdef _MSC_VER
|
||||||
#pragma prefast(pop)
|
#pragma prefast(pop)
|
||||||
|
|
||||||
#pragma prefast(suppress: 28175, "this is a file system driver, we're allowed to touch FastIoDispatch.")
|
#pragma prefast(suppress: 28175, "this is a file system driver, we're allowed to touch FastIoDispatch.")
|
||||||
|
#endif
|
||||||
DriverObject->FastIoDispatch = &CdFastIoDispatch;
|
DriverObject->FastIoDispatch = &CdFastIoDispatch;
|
||||||
|
|
||||||
//
|
//
|
||||||
|
@ -164,6 +199,9 @@ Return Value:
|
||||||
if (!NT_SUCCESS( Status )) {
|
if (!NT_SUCCESS( Status )) {
|
||||||
|
|
||||||
IoDeleteDevice( CdfsFileSystemDeviceObject );
|
IoDeleteDevice( CdfsFileSystemDeviceObject );
|
||||||
|
#ifdef __REACTOS__
|
||||||
|
IoDeleteDevice (HddFileSystemDeviceObject);
|
||||||
|
#endif
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -171,9 +209,16 @@ Return Value:
|
||||||
// Initialize the global data structures
|
// Initialize the global data structures
|
||||||
//
|
//
|
||||||
|
|
||||||
|
#ifndef __REACTOS__
|
||||||
Status = CdInitializeGlobalData( DriverObject, CdfsFileSystemDeviceObject );
|
Status = CdInitializeGlobalData( DriverObject, CdfsFileSystemDeviceObject );
|
||||||
|
#else
|
||||||
|
Status = CdInitializeGlobalData( DriverObject, CdfsFileSystemDeviceObject, HddFileSystemDeviceObject );
|
||||||
|
#endif
|
||||||
if (!NT_SUCCESS (Status)) {
|
if (!NT_SUCCESS (Status)) {
|
||||||
IoDeleteDevice (CdfsFileSystemDeviceObject);
|
IoDeleteDevice (CdfsFileSystemDeviceObject);
|
||||||
|
#ifdef __REACTOS__
|
||||||
|
IoDeleteDevice (HddFileSystemDeviceObject);
|
||||||
|
#endif
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -184,9 +229,16 @@ Return Value:
|
||||||
//
|
//
|
||||||
|
|
||||||
CdfsFileSystemDeviceObject->Flags |= DO_LOW_PRIORITY_FILESYSTEM;
|
CdfsFileSystemDeviceObject->Flags |= DO_LOW_PRIORITY_FILESYSTEM;
|
||||||
|
#ifdef __REACTOS__
|
||||||
|
HddFileSystemDeviceObject->Flags |= DO_LOW_PRIORITY_FILESYSTEM;
|
||||||
|
#endif
|
||||||
|
|
||||||
IoRegisterFileSystem( CdfsFileSystemDeviceObject );
|
IoRegisterFileSystem( CdfsFileSystemDeviceObject );
|
||||||
ObReferenceObject (CdfsFileSystemDeviceObject);
|
ObReferenceObject (CdfsFileSystemDeviceObject);
|
||||||
|
#ifdef __REACTOS__
|
||||||
|
IoRegisterFileSystem( HddFileSystemDeviceObject );
|
||||||
|
ObReferenceObject (HddFileSystemDeviceObject);
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef CDFS_TELEMETRY_DATA
|
#ifdef CDFS_TELEMETRY_DATA
|
||||||
//
|
//
|
||||||
|
@ -206,6 +258,7 @@ Return Value:
|
||||||
|
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
|
NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
|
||||||
CdUnload(
|
CdUnload(
|
||||||
_In_ PDRIVER_OBJECT DriverObject
|
_In_ PDRIVER_OBJECT DriverObject
|
||||||
)
|
)
|
||||||
|
@ -245,6 +298,9 @@ Return Value:
|
||||||
IoFreeWorkItem (CdData.CloseItem);
|
IoFreeWorkItem (CdData.CloseItem);
|
||||||
ExDeleteResourceLite( &CdData.DataResource );
|
ExDeleteResourceLite( &CdData.DataResource );
|
||||||
ObDereferenceObject (CdData.FileSystemDeviceObject);
|
ObDereferenceObject (CdData.FileSystemDeviceObject);
|
||||||
|
#ifdef __REACTOS__
|
||||||
|
ObDereferenceObject (CdData.HddFileSystemDeviceObject);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
|
@ -255,6 +311,10 @@ NTSTATUS
|
||||||
CdInitializeGlobalData (
|
CdInitializeGlobalData (
|
||||||
_In_ PDRIVER_OBJECT DriverObject,
|
_In_ PDRIVER_OBJECT DriverObject,
|
||||||
_In_ PDEVICE_OBJECT FileSystemDeviceObject
|
_In_ PDEVICE_OBJECT FileSystemDeviceObject
|
||||||
|
#ifdef __REACTOS__
|
||||||
|
,
|
||||||
|
IN PDEVICE_OBJECT HddFileSystemDeviceObject
|
||||||
|
#endif
|
||||||
)
|
)
|
||||||
|
|
||||||
/*++
|
/*++
|
||||||
|
@ -284,8 +344,10 @@ Return Value:
|
||||||
|
|
||||||
CdFastIoDispatch.SizeOfFastIoDispatch = sizeof(FAST_IO_DISPATCH);
|
CdFastIoDispatch.SizeOfFastIoDispatch = sizeof(FAST_IO_DISPATCH);
|
||||||
|
|
||||||
|
#ifdef _MSC_VER
|
||||||
#pragma prefast(push)
|
#pragma prefast(push)
|
||||||
#pragma prefast(disable:28155, "these are all correct")
|
#pragma prefast(disable:28155, "these are all correct")
|
||||||
|
#endif
|
||||||
|
|
||||||
CdFastIoDispatch.FastIoCheckIfPossible = CdFastIoCheckIfPossible; // CheckForFastIo
|
CdFastIoDispatch.FastIoCheckIfPossible = CdFastIoCheckIfPossible; // CheckForFastIo
|
||||||
CdFastIoDispatch.FastIoRead = FsRtlCopyRead; // Read
|
CdFastIoDispatch.FastIoRead = FsRtlCopyRead; // Read
|
||||||
|
@ -295,7 +357,6 @@ Return Value:
|
||||||
CdFastIoDispatch.FastIoUnlockSingle = CdFastUnlockSingle; // UnlockSingle
|
CdFastIoDispatch.FastIoUnlockSingle = CdFastUnlockSingle; // UnlockSingle
|
||||||
CdFastIoDispatch.FastIoUnlockAll = CdFastUnlockAll; // UnlockAll
|
CdFastIoDispatch.FastIoUnlockAll = CdFastUnlockAll; // UnlockAll
|
||||||
CdFastIoDispatch.FastIoUnlockAllByKey = CdFastUnlockAllByKey; // UnlockAllByKey
|
CdFastIoDispatch.FastIoUnlockAllByKey = CdFastUnlockAllByKey; // UnlockAllByKey
|
||||||
|
|
||||||
//
|
//
|
||||||
// This callback has been replaced by CdFilterCallbackAcquireForCreateSection.
|
// This callback has been replaced by CdFilterCallbackAcquireForCreateSection.
|
||||||
//
|
//
|
||||||
|
@ -309,7 +370,9 @@ Return Value:
|
||||||
CdFastIoDispatch.PrepareMdlWrite = FsRtlPrepareMdlWriteDev;
|
CdFastIoDispatch.PrepareMdlWrite = FsRtlPrepareMdlWriteDev;
|
||||||
CdFastIoDispatch.MdlWriteComplete = FsRtlMdlWriteCompleteDev;
|
CdFastIoDispatch.MdlWriteComplete = FsRtlMdlWriteCompleteDev;
|
||||||
|
|
||||||
|
#ifdef _MSC_VER
|
||||||
#pragma prefast(pop)
|
#pragma prefast(pop)
|
||||||
|
#endif
|
||||||
|
|
||||||
//
|
//
|
||||||
// Initialize the CdData structure.
|
// Initialize the CdData structure.
|
||||||
|
@ -322,6 +385,9 @@ Return Value:
|
||||||
|
|
||||||
CdData.DriverObject = DriverObject;
|
CdData.DriverObject = DriverObject;
|
||||||
CdData.FileSystemDeviceObject = FileSystemDeviceObject;
|
CdData.FileSystemDeviceObject = FileSystemDeviceObject;
|
||||||
|
#ifdef __REACTOS__
|
||||||
|
CdData.HddFileSystemDeviceObject = HddFileSystemDeviceObject;
|
||||||
|
#endif
|
||||||
|
|
||||||
InitializeListHead( &CdData.VcbQueue );
|
InitializeListHead( &CdData.VcbQueue );
|
||||||
|
|
||||||
|
@ -331,10 +397,10 @@ Return Value:
|
||||||
// Initialize the cache manager callback routines
|
// Initialize the cache manager callback routines
|
||||||
//
|
//
|
||||||
|
|
||||||
CdData.CacheManagerCallbacks.AcquireForLazyWrite = &CdAcquireForCache;
|
CdData.CacheManagerCallbacks.AcquireForLazyWrite = (PVOID)&CdAcquireForCache;/* ReactOS Change: GCC "assignment from incompatible pointer type" */
|
||||||
CdData.CacheManagerCallbacks.ReleaseFromLazyWrite = &CdReleaseFromCache;
|
CdData.CacheManagerCallbacks.ReleaseFromLazyWrite = (PVOID)&CdReleaseFromCache;/* ReactOS Change: GCC "assignment from incompatible pointer type" */
|
||||||
CdData.CacheManagerCallbacks.AcquireForReadAhead = &CdAcquireForCache;
|
CdData.CacheManagerCallbacks.AcquireForReadAhead = (PVOID)&CdAcquireForCache;/* ReactOS Change: GCC "assignment from incompatible pointer type" */
|
||||||
CdData.CacheManagerCallbacks.ReleaseFromReadAhead = &CdReleaseFromCache;
|
CdData.CacheManagerCallbacks.ReleaseFromReadAhead = (PVOID)&CdReleaseFromCache;/* ReactOS Change: GCC "assignment from incompatible pointer type" */
|
||||||
|
|
||||||
CdData.CacheManagerVolumeCallbacks.AcquireForLazyWrite = &CdNoopAcquire;
|
CdData.CacheManagerVolumeCallbacks.AcquireForLazyWrite = &CdNoopAcquire;
|
||||||
CdData.CacheManagerVolumeCallbacks.ReleaseFromLazyWrite = &CdNoopRelease;
|
CdData.CacheManagerVolumeCallbacks.ReleaseFromLazyWrite = &CdNoopRelease;
|
||||||
|
|
|
@ -17,26 +17,31 @@ Abstract:
|
||||||
#ifndef _CDPROCS_
|
#ifndef _CDPROCS_
|
||||||
#define _CDPROCS_
|
#define _CDPROCS_
|
||||||
|
|
||||||
|
#ifdef _MSC_VER
|
||||||
#pragma warning( disable: 4127 ) // conditional expression is constant
|
#pragma warning( disable: 4127 ) // conditional expression is constant
|
||||||
|
|
||||||
#pragma warning( push )
|
#pragma warning( push )
|
||||||
#pragma warning( disable: 4201 ) // nonstandard extension used : nameless struct/union
|
#pragma warning( disable: 4201 ) // nonstandard extension used : nameless struct/union
|
||||||
#pragma warning( disable: 4214 ) // nonstandard extension used : bit field types
|
#pragma warning( disable: 4214 ) // nonstandard extension used : bit field types
|
||||||
|
#endif
|
||||||
|
|
||||||
#include <ntifs.h>
|
#include <ntifs.h>
|
||||||
|
|
||||||
#include <ntddcdrm.h>
|
#include <ntddcdrm.h>
|
||||||
#include <ntdddisk.h>
|
#include <ntdddisk.h>
|
||||||
#include <ntddscsi.h>
|
#include <ntddscsi.h>
|
||||||
|
#ifdef __REACTOS__
|
||||||
|
#include <pseh/pseh2.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef INLINE
|
#ifndef INLINE
|
||||||
#define INLINE __inline
|
#define INLINE __inline
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "nodetype.h"
|
#include "nodetype.h"
|
||||||
#include "Cd.h"
|
#include "cd.h"
|
||||||
#include "CdStruc.h"
|
#include "cdstruc.h"
|
||||||
#include "CdData.h"
|
#include "cddata.h"
|
||||||
|
|
||||||
#ifdef CDFS_TELEMETRY_DATA
|
#ifdef CDFS_TELEMETRY_DATA
|
||||||
|
|
||||||
|
@ -46,7 +51,9 @@ Abstract:
|
||||||
|
|
||||||
#endif // CDFS_TELEMETRY_DATA
|
#endif // CDFS_TELEMETRY_DATA
|
||||||
|
|
||||||
|
#ifdef _MSC_VER
|
||||||
#pragma warning( pop )
|
#pragma warning( pop )
|
||||||
|
#endif
|
||||||
|
|
||||||
//**** x86 compiler bug ****
|
//**** x86 compiler bug ****
|
||||||
|
|
||||||
|
@ -221,8 +228,9 @@ CdPurgeVolume (
|
||||||
_In_ BOOLEAN DismountUnderway
|
_In_ BOOLEAN DismountUnderway
|
||||||
);
|
);
|
||||||
|
|
||||||
|
static /* ReactOS Change: GCC "multiple definition" */
|
||||||
|
INLINE /* GCC only accepts __inline as the first modifier */
|
||||||
VOID
|
VOID
|
||||||
INLINE
|
|
||||||
CdVerifyOrCreateDirStreamFile (
|
CdVerifyOrCreateDirStreamFile (
|
||||||
_In_ PIRP_CONTEXT IrpContext,
|
_In_ PIRP_CONTEXT IrpContext,
|
||||||
_In_ PFCB Fcb
|
_In_ PFCB Fcb
|
||||||
|
@ -364,6 +372,7 @@ CdHijackIrpAndFlushDevice (
|
||||||
// );
|
// );
|
||||||
//
|
//
|
||||||
|
|
||||||
|
#ifndef __REACTOS__
|
||||||
#define CdMapUserBuffer(IC, UB) { \
|
#define CdMapUserBuffer(IC, UB) { \
|
||||||
*(UB) = (PVOID) ( ((IC)->Irp->MdlAddress == NULL) ? \
|
*(UB) = (PVOID) ( ((IC)->Irp->MdlAddress == NULL) ? \
|
||||||
(IC)->Irp->UserBuffer : \
|
(IC)->Irp->UserBuffer : \
|
||||||
|
@ -373,6 +382,18 @@ CdHijackIrpAndFlushDevice (
|
||||||
} \
|
} \
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#else
|
||||||
|
#define CdMapUserBuffer(IC, UB) { \
|
||||||
|
*(UB) = (PVOID) ( ((IC)->Irp->MdlAddress == NULL) ? \
|
||||||
|
(IC)->Irp->UserBuffer : \
|
||||||
|
(MmGetSystemAddressForMdlSafe( (IC)->Irp->MdlAddress, NormalPagePriority))); \
|
||||||
|
if (NULL == *(UB)) { \
|
||||||
|
CdRaiseStatus( (IC), STATUS_INSUFFICIENT_RESOURCES); \
|
||||||
|
} \
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#define CdLockUserBuffer(IC,BL,OP) { \
|
#define CdLockUserBuffer(IC,BL,OP) { \
|
||||||
if ((IC)->Irp->MdlAddress == NULL) { \
|
if ((IC)->Irp->MdlAddress == NULL) { \
|
||||||
|
@ -1071,12 +1092,14 @@ BOOLEAN DummyRestoreIrql(_Inout_ PFAST_MUTEX FastMutex);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
BOOLEAN
|
BOOLEAN
|
||||||
|
NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
|
||||||
CdNoopAcquire (
|
CdNoopAcquire (
|
||||||
_In_ PVOID Fcb,
|
_In_ PVOID Fcb,
|
||||||
_In_ BOOLEAN Wait
|
_In_ BOOLEAN Wait
|
||||||
);
|
);
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
|
NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
|
||||||
CdNoopRelease (
|
CdNoopRelease (
|
||||||
_In_ PVOID Fcb
|
_In_ PVOID Fcb
|
||||||
);
|
);
|
||||||
|
@ -1084,6 +1107,7 @@ CdNoopRelease (
|
||||||
_Requires_lock_held_(_Global_critical_region_)
|
_Requires_lock_held_(_Global_critical_region_)
|
||||||
_When_(return!=0, _Acquires_shared_lock_(*Fcb->Resource))
|
_When_(return!=0, _Acquires_shared_lock_(*Fcb->Resource))
|
||||||
BOOLEAN
|
BOOLEAN
|
||||||
|
NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
|
||||||
CdAcquireForCache (
|
CdAcquireForCache (
|
||||||
_Inout_ PFCB Fcb,
|
_Inout_ PFCB Fcb,
|
||||||
_In_ BOOLEAN Wait
|
_In_ BOOLEAN Wait
|
||||||
|
@ -1092,12 +1116,14 @@ CdAcquireForCache (
|
||||||
_Requires_lock_held_(_Global_critical_region_)
|
_Requires_lock_held_(_Global_critical_region_)
|
||||||
_Releases_lock_(*Fcb->Resource)
|
_Releases_lock_(*Fcb->Resource)
|
||||||
VOID
|
VOID
|
||||||
|
NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
|
||||||
CdReleaseFromCache (
|
CdReleaseFromCache (
|
||||||
_Inout_ PFCB Fcb
|
_Inout_ PFCB Fcb
|
||||||
);
|
);
|
||||||
|
|
||||||
_Requires_lock_held_(_Global_critical_region_)
|
_Requires_lock_held_(_Global_critical_region_)
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
|
NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
|
||||||
CdFilterCallbackAcquireForCreateSection (
|
CdFilterCallbackAcquireForCreateSection (
|
||||||
_In_ PFS_FILTER_CALLBACK_DATA CallbackData,
|
_In_ PFS_FILTER_CALLBACK_DATA CallbackData,
|
||||||
_Unreferenced_parameter_ PVOID *CompletionContext
|
_Unreferenced_parameter_ PVOID *CompletionContext
|
||||||
|
@ -1106,6 +1132,7 @@ CdFilterCallbackAcquireForCreateSection (
|
||||||
_Function_class_(FAST_IO_RELEASE_FILE)
|
_Function_class_(FAST_IO_RELEASE_FILE)
|
||||||
_Requires_lock_held_(_Global_critical_region_)
|
_Requires_lock_held_(_Global_critical_region_)
|
||||||
VOID
|
VOID
|
||||||
|
NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
|
||||||
CdReleaseForCreateSection (
|
CdReleaseForCreateSection (
|
||||||
_In_ PFILE_OBJECT FileObject
|
_In_ PFILE_OBJECT FileObject
|
||||||
);
|
);
|
||||||
|
@ -1324,7 +1351,7 @@ CdTeardownStructures (
|
||||||
sizeof( CD_IO_CONTEXT ), \
|
sizeof( CD_IO_CONTEXT ), \
|
||||||
TAG_IO_CONTEXT )
|
TAG_IO_CONTEXT )
|
||||||
|
|
||||||
#define CdFreeIoContext(IO) CdFreePool( &(IO) )
|
#define CdFreeIoContext(IO) CdFreePool( (PVOID) &(IO) ) /* ReactOS Change: GCC "passing argument 1 from incompatible pointer type" */
|
||||||
|
|
||||||
PFCB
|
PFCB
|
||||||
CdLookupFcbTable (
|
CdLookupFcbTable (
|
||||||
|
@ -1356,15 +1383,20 @@ CdProcessToc (
|
||||||
//
|
//
|
||||||
|
|
||||||
#define CdPagedPool PagedPool
|
#define CdPagedPool PagedPool
|
||||||
|
#ifndef __REACTOS__
|
||||||
#define CdNonPagedPool NonPagedPoolNx
|
#define CdNonPagedPool NonPagedPoolNx
|
||||||
#define CdNonPagedPoolCacheAligned NonPagedPoolNxCacheAligned
|
#define CdNonPagedPoolCacheAligned NonPagedPoolNxCacheAligned
|
||||||
|
#else
|
||||||
|
#define CdNonPagedPool NonPagedPool
|
||||||
|
#define CdNonPagedPoolCacheAligned NonPagedPoolCacheAligned
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Verification support routines. Contained in verfysup.c
|
// Verification support routines. Contained in verfysup.c
|
||||||
//
|
//
|
||||||
|
|
||||||
|
static /* ReactOS Change: GCC "multiple definition" */
|
||||||
INLINE
|
INLINE
|
||||||
BOOLEAN
|
BOOLEAN
|
||||||
CdOperationIsDasdOpen (
|
CdOperationIsDasdOpen (
|
||||||
|
@ -1461,6 +1493,7 @@ CdFsdPostRequest (
|
||||||
|
|
||||||
_Requires_lock_held_(_Global_critical_region_)
|
_Requires_lock_held_(_Global_critical_region_)
|
||||||
VOID
|
VOID
|
||||||
|
NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
|
||||||
CdPrePostIrp (
|
CdPrePostIrp (
|
||||||
_Inout_ PIRP_CONTEXT IrpContext,
|
_Inout_ PIRP_CONTEXT IrpContext,
|
||||||
_Inout_ PIRP Irp
|
_Inout_ PIRP Irp
|
||||||
|
@ -1468,6 +1501,7 @@ CdPrePostIrp (
|
||||||
|
|
||||||
_Requires_lock_held_(_Global_critical_region_)
|
_Requires_lock_held_(_Global_critical_region_)
|
||||||
VOID
|
VOID
|
||||||
|
NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
|
||||||
CdOplockComplete (
|
CdOplockComplete (
|
||||||
_Inout_ PIRP_CONTEXT IrpContext,
|
_Inout_ PIRP_CONTEXT IrpContext,
|
||||||
_Inout_ PIRP Irp
|
_Inout_ PIRP Irp
|
||||||
|
@ -1483,6 +1517,7 @@ CdOplockComplete (
|
||||||
// otherwise
|
// otherwise
|
||||||
//
|
//
|
||||||
|
|
||||||
|
/* GCC complains about multi-line comments.
|
||||||
//#ifndef BooleanFlagOn
|
//#ifndef BooleanFlagOn
|
||||||
//#define BooleanFlagOn(F,SF) ( \
|
//#define BooleanFlagOn(F,SF) ( \
|
||||||
// (BOOLEAN)(((F) & (SF)) != 0) \
|
// (BOOLEAN)(((F) & (SF)) != 0) \
|
||||||
|
@ -1500,6 +1535,7 @@ CdOplockComplete (
|
||||||
// (Flags) &= ~(SingleFlag); \
|
// (Flags) &= ~(SingleFlag); \
|
||||||
//}
|
//}
|
||||||
//#endif
|
//#endif
|
||||||
|
*/
|
||||||
|
|
||||||
//
|
//
|
||||||
// CAST
|
// CAST
|
||||||
|
@ -1575,6 +1611,7 @@ CdOplockComplete (
|
||||||
((ULONG) (L)) >> SECTOR_SHIFT \
|
((ULONG) (L)) >> SECTOR_SHIFT \
|
||||||
)
|
)
|
||||||
|
|
||||||
|
static /* ReactOS Change: GCC "multiple definition" */
|
||||||
INLINE
|
INLINE
|
||||||
ULONG
|
ULONG
|
||||||
SectorsFromLlBytes(
|
SectorsFromLlBytes(
|
||||||
|
@ -2144,16 +2181,24 @@ CdCommonShutdown ( // Implemented in Shutdown.c
|
||||||
// #define try_return(S) { S; goto try_exit; }
|
// #define try_return(S) { S; goto try_exit; }
|
||||||
//
|
//
|
||||||
|
|
||||||
|
#ifndef __REACTOS__
|
||||||
#define try_return(S) { S; goto try_exit; }
|
#define try_return(S) { S; goto try_exit; }
|
||||||
#define try_leave(S) { S; leave; }
|
#define try_leave(S) { S; leave; }
|
||||||
|
#else
|
||||||
|
#define try_return(S) { S; goto try_exit; }
|
||||||
|
#define try_leave(S) { S; _SEH2_LEAVE; }
|
||||||
|
#endif
|
||||||
|
|
||||||
//
|
//
|
||||||
// Encapsulate safe pool freeing
|
// Encapsulate safe pool freeing
|
||||||
//
|
//
|
||||||
|
/* ReactOS Change: GCC "passing argument 1 of CdFreePool from incompatible pointer type" */
|
||||||
|
#define CdFreePool(x) _CdFreePool((PVOID*)(x))
|
||||||
|
|
||||||
|
static /* ReactOS Change: GCC "multiple definition" */
|
||||||
INLINE
|
INLINE
|
||||||
VOID
|
VOID
|
||||||
CdFreePool(
|
_CdFreePool(
|
||||||
_Inout_ _At_(*Pool, __drv_freesMem(Mem) _Post_null_) PVOID *Pool
|
_Inout_ _At_(*Pool, __drv_freesMem(Mem) _Post_null_) PVOID *Pool
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
|
|
|
@ -170,6 +170,12 @@ typedef PVOID PBCB; //**** Bcb's are now part of the cache module
|
||||||
|
|
||||||
#define BYTE_COUNT_EMBEDDED_NAME (32)
|
#define BYTE_COUNT_EMBEDDED_NAME (32)
|
||||||
|
|
||||||
|
#ifdef __REACTOS__
|
||||||
|
#define __volatile
|
||||||
|
#define _Unreferenced_parameter_
|
||||||
|
#define __field_range(a,b)
|
||||||
|
#define __analysis_assert(x)
|
||||||
|
#endif
|
||||||
|
|
||||||
//
|
//
|
||||||
// The CD_MCB is used to store the mapping of logical file offset to
|
// The CD_MCB is used to store the mapping of logical file offset to
|
||||||
|
@ -349,6 +355,10 @@ typedef struct _CD_DATA {
|
||||||
|
|
||||||
PDEVICE_OBJECT FileSystemDeviceObject;
|
PDEVICE_OBJECT FileSystemDeviceObject;
|
||||||
|
|
||||||
|
#ifdef __REACTOS__
|
||||||
|
PDEVICE_OBJECT HddFileSystemDeviceObject;
|
||||||
|
#endif
|
||||||
|
|
||||||
//
|
//
|
||||||
// Following are used to manage the async and delayed close queue.
|
// Following are used to manage the async and delayed close queue.
|
||||||
//
|
//
|
||||||
|
@ -545,8 +555,8 @@ typedef struct _VCB {
|
||||||
//
|
//
|
||||||
|
|
||||||
ULONG VcbCleanup;
|
ULONG VcbCleanup;
|
||||||
__volatile ULONG VcbReference;
|
__volatile LONG VcbReference; /* ReactOS Change: GCC 'pointer targets in passing argument 1 of 'InterlockedXxx' differ in signedness */
|
||||||
__volatile ULONG VcbUserReference;
|
__volatile LONG VcbUserReference; /* ReactOS Change: GCC 'pointer targets in passing argument 1 of 'InterlockedXxx' differ in signedness */
|
||||||
|
|
||||||
//
|
//
|
||||||
// Fcb for the Volume Dasd file, root directory and the Path Table.
|
// Fcb for the Volume Dasd file, root directory and the Path Table.
|
||||||
|
@ -732,7 +742,7 @@ typedef struct _VOLUME_DEVICE_OBJECT {
|
||||||
// executed later.
|
// executed later.
|
||||||
//
|
//
|
||||||
|
|
||||||
__volatile ULONG PostedRequestCount;
|
__volatile LONG PostedRequestCount; /* ReactOS Change: GCC "pointer targets in passing argument 1 of 'InterlockedDecrement' differ in signedness" */
|
||||||
|
|
||||||
//
|
//
|
||||||
// The following field indicates the number of IRP's waiting
|
// The following field indicates the number of IRP's waiting
|
||||||
|
@ -957,7 +967,7 @@ typedef struct _FCB {
|
||||||
//
|
//
|
||||||
|
|
||||||
ULONG FcbCleanup;
|
ULONG FcbCleanup;
|
||||||
__volatile ULONG FcbReference;
|
__volatile LONG FcbReference; /* ReactOS Change: GCC 'pointer targets in passing argument 1 of 'InterlockedXxx' differ in signedness */
|
||||||
ULONG FcbUserReference;
|
ULONG FcbUserReference;
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|
|
@ -14,7 +14,7 @@ Abstract:
|
||||||
|
|
||||||
--*/
|
--*/
|
||||||
|
|
||||||
#include "CdProcs.h"
|
#include "cdprocs.h"
|
||||||
|
|
||||||
//
|
//
|
||||||
// The Bug check file id for this module
|
// The Bug check file id for this module
|
||||||
|
@ -190,7 +190,7 @@ Return Value:
|
||||||
// Use a try-finally to facilitate cleanup.
|
// Use a try-finally to facilitate cleanup.
|
||||||
//
|
//
|
||||||
|
|
||||||
try {
|
_SEH2_TRY {
|
||||||
|
|
||||||
//
|
//
|
||||||
// Case on the type of open that we are trying to cleanup.
|
// Case on the type of open that we are trying to cleanup.
|
||||||
|
@ -258,7 +258,9 @@ Return Value:
|
||||||
|
|
||||||
default :
|
default :
|
||||||
|
|
||||||
|
#ifdef _MSC_VER
|
||||||
#pragma prefast( suppress:__WARNING_USE_OTHER_FUNCTION, "argument bogus" )
|
#pragma prefast( suppress:__WARNING_USE_OTHER_FUNCTION, "argument bogus" )
|
||||||
|
#endif
|
||||||
CdBugCheck( TypeOfOpen, 0, 0 );
|
CdBugCheck( TypeOfOpen, 0, 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -311,15 +313,15 @@ Return Value:
|
||||||
|
|
||||||
IoRemoveShareAccess( FileObject, &Fcb->ShareAccess );
|
IoRemoveShareAccess( FileObject, &Fcb->ShareAccess );
|
||||||
|
|
||||||
} finally {
|
} _SEH2_FINALLY {
|
||||||
|
|
||||||
CdReleaseFcb( IrpContext, Fcb );
|
CdReleaseFcb( IrpContext, Fcb );
|
||||||
|
|
||||||
if (SendUnlockNotification) {
|
if (SendUnlockNotification) {
|
||||||
|
|
||||||
FsRtlNotifyVolumeEvent( FileObject, FSRTL_VOLUME_UNLOCK );
|
FsRtlNotifyVolumeEvent( FileObject, FSRTL_VOLUME_UNLOCK );
|
||||||
}
|
}
|
||||||
}
|
} _SEH2_END;
|
||||||
|
|
||||||
//
|
//
|
||||||
// If appropriate, try to spark teardown by purging the volume. Should
|
// If appropriate, try to spark teardown by purging the volume. Should
|
||||||
|
@ -337,19 +339,19 @@ Return Value:
|
||||||
|
|
||||||
CdAcquireCdData( IrpContext);
|
CdAcquireCdData( IrpContext);
|
||||||
|
|
||||||
try {
|
_SEH2_TRY {
|
||||||
|
|
||||||
CdAcquireVcbExclusive( IrpContext, Vcb, FALSE );
|
CdAcquireVcbExclusive( IrpContext, Vcb, FALSE );
|
||||||
VcbAcquired = TRUE;
|
VcbAcquired = TRUE;
|
||||||
|
|
||||||
CdPurgeVolume( IrpContext, Vcb, FALSE );
|
CdPurgeVolume( IrpContext, Vcb, FALSE );
|
||||||
|
|
||||||
} finally {
|
} _SEH2_FINALLY {
|
||||||
|
|
||||||
if (VcbAcquired) { CdReleaseVcb( IrpContext, Vcb ); }
|
if (VcbAcquired) { CdReleaseVcb( IrpContext, Vcb ); }
|
||||||
|
|
||||||
CdReleaseCdData( IrpContext);
|
CdReleaseCdData( IrpContext);
|
||||||
}
|
} _SEH2_END;
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|
|
@ -42,7 +42,7 @@ Abstract:
|
||||||
|
|
||||||
--*/
|
--*/
|
||||||
|
|
||||||
#include "CdProcs.h"
|
#include "cdprocs.h"
|
||||||
|
|
||||||
//
|
//
|
||||||
// The Bug check file id for this module
|
// The Bug check file id for this module
|
||||||
|
@ -81,6 +81,7 @@ CdRemoveClose (
|
||||||
IO_WORKITEM_ROUTINE CdCloseWorker;
|
IO_WORKITEM_ROUTINE CdCloseWorker;
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
|
NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
|
||||||
CdCloseWorker (
|
CdCloseWorker (
|
||||||
_In_ PDEVICE_OBJECT DeviceObject,
|
_In_ PDEVICE_OBJECT DeviceObject,
|
||||||
_In_opt_ PVOID Context
|
_In_opt_ PVOID Context
|
||||||
|
@ -170,7 +171,7 @@ Return Value:
|
||||||
// Free the IrpContextLite.
|
// Free the IrpContextLite.
|
||||||
//
|
//
|
||||||
|
|
||||||
CdFreeIrpContextLite( (PIRP_CONTEXT_LITE) IrpContext );
|
CdFreeIrpContextLite( *(PVOID*)&IrpContext ); /* ReactOS Change: GCC "error: invalid lvalue in unary '&'" */
|
||||||
|
|
||||||
//
|
//
|
||||||
// Remember we have the IrpContext from the stack.
|
// Remember we have the IrpContext from the stack.
|
||||||
|
@ -318,7 +319,9 @@ Return Value:
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef _MSC_VER
|
||||||
#pragma prefast(suppress:26165, "Esp:1153")
|
#pragma prefast(suppress:26165, "Esp:1153")
|
||||||
|
#endif
|
||||||
FsRtlExitFileSystem();
|
FsRtlExitFileSystem();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -650,6 +653,7 @@ Return Value:
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
|
NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
|
||||||
CdCloseWorker (
|
CdCloseWorker (
|
||||||
_In_ PDEVICE_OBJECT DeviceObject,
|
_In_ PDEVICE_OBJECT DeviceObject,
|
||||||
_In_opt_ PVOID Context
|
_In_opt_ PVOID Context
|
||||||
|
|
|
@ -14,7 +14,7 @@ Abstract:
|
||||||
|
|
||||||
--*/
|
--*/
|
||||||
|
|
||||||
#include "CdProcs.h"
|
#include "cdprocs.h"
|
||||||
|
|
||||||
//
|
//
|
||||||
// The Bug check file id for this module
|
// The Bug check file id for this module
|
||||||
|
@ -119,7 +119,9 @@ CdCompleteFcbOpen (
|
||||||
|
|
||||||
_Requires_lock_held_(_Global_critical_region_)
|
_Requires_lock_held_(_Global_critical_region_)
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
|
#ifdef _MSC_VER
|
||||||
#pragma prefast(suppress:26165, "Esp:1153")
|
#pragma prefast(suppress:26165, "Esp:1153")
|
||||||
|
#endif
|
||||||
CdCommonCreate (
|
CdCommonCreate (
|
||||||
_Inout_ PIRP_CONTEXT IrpContext,
|
_Inout_ PIRP_CONTEXT IrpContext,
|
||||||
_Inout_ PIRP Irp
|
_Inout_ PIRP Irp
|
||||||
|
@ -168,7 +170,7 @@ Return Value:
|
||||||
|
|
||||||
PFILE_OBJECT FileObject;
|
PFILE_OBJECT FileObject;
|
||||||
|
|
||||||
COMPOUND_PATH_ENTRY CompoundPathEntry = {0};
|
COMPOUND_PATH_ENTRY CompoundPathEntry = {{0}};/* ReactOS Change: GCC "missing braces around initializer" */
|
||||||
BOOLEAN CleanupCompoundPathEntry = FALSE;
|
BOOLEAN CleanupCompoundPathEntry = FALSE;
|
||||||
|
|
||||||
FILE_ENUM_CONTEXT FileContext = {0};
|
FILE_ENUM_CONTEXT FileContext = {0};
|
||||||
|
@ -229,7 +231,7 @@ Return Value:
|
||||||
PUNICODE_STRING FileName;
|
PUNICODE_STRING FileName;
|
||||||
PUNICODE_STRING RelatedFileName = NULL;
|
PUNICODE_STRING RelatedFileName = NULL;
|
||||||
|
|
||||||
CD_NAME RemainingName = {0};
|
CD_NAME RemainingName = {{0}};/* ReactOS Change: GCC "missing braces around initializer" */
|
||||||
CD_NAME FinalName;
|
CD_NAME FinalName;
|
||||||
PCD_NAME MatchingName = NULL;
|
PCD_NAME MatchingName = NULL;
|
||||||
|
|
||||||
|
@ -382,7 +384,7 @@ Return Value:
|
||||||
// Use a try-finally to facilitate cleanup.
|
// Use a try-finally to facilitate cleanup.
|
||||||
//
|
//
|
||||||
|
|
||||||
try {
|
_SEH2_TRY {
|
||||||
|
|
||||||
//
|
//
|
||||||
// Verify that the Vcb is not in an unusable condition. This routine
|
// Verify that the Vcb is not in an unusable condition. This routine
|
||||||
|
@ -926,7 +928,7 @@ Return Value:
|
||||||
RelatedCcb ));
|
RelatedCcb ));
|
||||||
|
|
||||||
try_exit: NOTHING;
|
try_exit: NOTHING;
|
||||||
} finally {
|
} _SEH2_FINALLY {
|
||||||
|
|
||||||
//
|
//
|
||||||
// Cleanup the PathEntry if initialized.
|
// Cleanup the PathEntry if initialized.
|
||||||
|
@ -951,7 +953,7 @@ Return Value:
|
||||||
// condition.
|
// condition.
|
||||||
//
|
//
|
||||||
|
|
||||||
if (AbnormalTermination()) {
|
if (_SEH2_AbnormalTermination()) {
|
||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
|
@ -1011,7 +1013,7 @@ Return Value:
|
||||||
//
|
//
|
||||||
|
|
||||||
CdCompleteRequest( IrpContext, Irp, Status );
|
CdCompleteRequest( IrpContext, Irp, Status );
|
||||||
}
|
} _SEH2_END;
|
||||||
|
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
@ -1348,10 +1350,14 @@ Return Value:
|
||||||
//
|
//
|
||||||
// Do a quick check to make sure there are no wildcards.
|
// Do a quick check to make sure there are no wildcards.
|
||||||
//
|
//
|
||||||
|
#ifdef _MSC_VER
|
||||||
#pragma prefast(push)
|
#pragma prefast(push)
|
||||||
#pragma prefast(suppress:26000, "RemainingName->FileName.Buffer = FileName.Buffer + (RelatedNameLength + SeparatorLength); FileName.MaximumLength < (RelatedNameLength + SeparatorLength + RemainingNameLength).")
|
#pragma prefast(suppress:26000, "RemainingName->FileName.Buffer = FileName.Buffer + (RelatedNameLength + SeparatorLength); FileName.MaximumLength < (RelatedNameLength + SeparatorLength + RemainingNameLength).")
|
||||||
|
#endif
|
||||||
if (FsRtlDoesNameContainWildCards( &RemainingName->FileName )) {
|
if (FsRtlDoesNameContainWildCards( &RemainingName->FileName )) {
|
||||||
|
#ifdef _MSC_VER
|
||||||
#pragma prefast(pop)
|
#pragma prefast(pop)
|
||||||
|
#endif
|
||||||
|
|
||||||
return STATUS_OBJECT_NAME_INVALID;
|
return STATUS_OBJECT_NAME_INVALID;
|
||||||
}
|
}
|
||||||
|
@ -1453,10 +1459,14 @@ Return Value:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef _MSC_VER
|
||||||
#pragma prefast(push)
|
#pragma prefast(push)
|
||||||
#pragma prefast(suppress:26030, "RemainingName->FileName.Buffer = FileName.Buffer + (RelatedNameLength + SeparatorLength); FileName.MaximumLength < (RelatedNameLength + SeparatorLength + RemainingNameLength).")
|
#pragma prefast(suppress:26030, "RemainingName->FileName.Buffer = FileName.Buffer + (RelatedNameLength + SeparatorLength); FileName.MaximumLength < (RelatedNameLength + SeparatorLength + RemainingNameLength).")
|
||||||
|
#endif
|
||||||
return STATUS_SUCCESS;
|
return STATUS_SUCCESS;
|
||||||
|
#ifdef _MSC_VER
|
||||||
#pragma prefast(pop)
|
#pragma prefast(pop)
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1528,7 +1538,7 @@ Return Value:
|
||||||
FILE_ENUM_CONTEXT FileContext;
|
FILE_ENUM_CONTEXT FileContext;
|
||||||
BOOLEAN CleanupFileContext = FALSE;
|
BOOLEAN CleanupFileContext = FALSE;
|
||||||
|
|
||||||
COMPOUND_PATH_ENTRY CompoundPathEntry = {0};
|
COMPOUND_PATH_ENTRY CompoundPathEntry = {{0}};/* ReactOS Change: GCC "missing braces around initializer" */
|
||||||
BOOLEAN CleanupCompoundPathEntry = FALSE;
|
BOOLEAN CleanupCompoundPathEntry = FALSE;
|
||||||
|
|
||||||
FILE_ID FileId;
|
FILE_ID FileId;
|
||||||
|
@ -1548,7 +1558,7 @@ Return Value:
|
||||||
// Use a try-finally to facilitate cleanup.
|
// Use a try-finally to facilitate cleanup.
|
||||||
//
|
//
|
||||||
|
|
||||||
try {
|
_SEH2_TRY {
|
||||||
|
|
||||||
//
|
//
|
||||||
// Go ahead and figure out the TypeOfOpen and NodeType. We can
|
// Go ahead and figure out the TypeOfOpen and NodeType. We can
|
||||||
|
@ -1942,7 +1952,7 @@ Return Value:
|
||||||
}
|
}
|
||||||
|
|
||||||
try_exit: NOTHING;
|
try_exit: NOTHING;
|
||||||
} finally {
|
} _SEH2_FINALLY {
|
||||||
|
|
||||||
if (UnlockVcb) {
|
if (UnlockVcb) {
|
||||||
|
|
||||||
|
@ -1958,7 +1968,7 @@ Return Value:
|
||||||
|
|
||||||
CdCleanupCompoundPathEntry( IrpContext, &CompoundPathEntry );
|
CdCleanupCompoundPathEntry( IrpContext, &CompoundPathEntry );
|
||||||
}
|
}
|
||||||
}
|
} _SEH2_END;
|
||||||
|
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
@ -2166,7 +2176,7 @@ Return Value:
|
||||||
// Use a try-finally to facilitate cleanup.
|
// Use a try-finally to facilitate cleanup.
|
||||||
//
|
//
|
||||||
|
|
||||||
try {
|
_SEH2_TRY {
|
||||||
|
|
||||||
//
|
//
|
||||||
// Check the related Ccb to see if this was an OpenByFileId.
|
// Check the related Ccb to see if this was an OpenByFileId.
|
||||||
|
@ -2324,7 +2334,7 @@ Return Value:
|
||||||
IrpSp->Parameters.Create.SecurityContext->DesiredAccess );
|
IrpSp->Parameters.Create.SecurityContext->DesiredAccess );
|
||||||
}
|
}
|
||||||
|
|
||||||
} finally {
|
} _SEH2_FINALLY {
|
||||||
|
|
||||||
//
|
//
|
||||||
// Unlock the Vcb if held.
|
// Unlock the Vcb if held.
|
||||||
|
@ -2343,7 +2353,7 @@ Return Value:
|
||||||
|
|
||||||
CdReleaseFcb( IrpContext, ParentFcb );
|
CdReleaseFcb( IrpContext, ParentFcb );
|
||||||
}
|
}
|
||||||
}
|
} _SEH2_END;
|
||||||
|
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
@ -2443,7 +2453,7 @@ Return Value:
|
||||||
// Use a try-finally to facilitate cleanup.
|
// Use a try-finally to facilitate cleanup.
|
||||||
//
|
//
|
||||||
|
|
||||||
try {
|
_SEH2_TRY {
|
||||||
|
|
||||||
//
|
//
|
||||||
// Check if a version number was used to open this file.
|
// Check if a version number was used to open this file.
|
||||||
|
@ -2614,7 +2624,7 @@ Return Value:
|
||||||
CcbFlags,
|
CcbFlags,
|
||||||
IrpSp->Parameters.Create.SecurityContext->DesiredAccess );
|
IrpSp->Parameters.Create.SecurityContext->DesiredAccess );
|
||||||
|
|
||||||
} finally {
|
} _SEH2_FINALLY {
|
||||||
|
|
||||||
//
|
//
|
||||||
// Unlock the Vcb if held.
|
// Unlock the Vcb if held.
|
||||||
|
@ -2633,7 +2643,7 @@ Return Value:
|
||||||
|
|
||||||
CdReleaseFcb( IrpContext, ParentFcb );
|
CdReleaseFcb( IrpContext, ParentFcb );
|
||||||
}
|
}
|
||||||
}
|
} _SEH2_END;
|
||||||
|
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
@ -2803,8 +2813,8 @@ Return Value:
|
||||||
OplockStatus = FsRtlCheckOplock( CdGetFcbOplock(Fcb),
|
OplockStatus = FsRtlCheckOplock( CdGetFcbOplock(Fcb),
|
||||||
IrpContext->Irp,
|
IrpContext->Irp,
|
||||||
IrpContext,
|
IrpContext,
|
||||||
CdOplockComplete,
|
(PVOID)CdOplockComplete, /* ReactOS Change: GCC "assignment from incompatible pointer type" */
|
||||||
CdPrePostIrp );
|
(PVOID)CdPrePostIrp ); /* ReactOS Change: GCC "assignment from incompatible pointer type" */
|
||||||
|
|
||||||
if (OplockStatus == STATUS_PENDING) {
|
if (OplockStatus == STATUS_PENDING) {
|
||||||
|
|
||||||
|
@ -2835,8 +2845,8 @@ Return Value:
|
||||||
OplockStatus = FsRtlCheckOplock( CdGetFcbOplock(Fcb),
|
OplockStatus = FsRtlCheckOplock( CdGetFcbOplock(Fcb),
|
||||||
IrpContext->Irp,
|
IrpContext->Irp,
|
||||||
IrpContext,
|
IrpContext,
|
||||||
CdOplockComplete,
|
(PVOID)CdOplockComplete,/* ReactOS Change: GCC "assignment from incompatible pointer type" */
|
||||||
CdPrePostIrp );
|
(PVOID)CdPrePostIrp );/* ReactOS Change: GCC "assignment from incompatible pointer type" */
|
||||||
|
|
||||||
if (OplockStatus == STATUS_PENDING) {
|
if (OplockStatus == STATUS_PENDING) {
|
||||||
|
|
||||||
|
|
|
@ -14,7 +14,7 @@ Abstract:
|
||||||
|
|
||||||
--*/
|
--*/
|
||||||
|
|
||||||
#include "CdProcs.h"
|
#include "cdprocs.h"
|
||||||
|
|
||||||
//
|
//
|
||||||
// The Bug check file id for this module
|
// The Bug check file id for this module
|
||||||
|
@ -30,6 +30,7 @@ Abstract:
|
||||||
IO_COMPLETION_ROUTINE CdDevCtrlCompletionRoutine;
|
IO_COMPLETION_ROUTINE CdDevCtrlCompletionRoutine;
|
||||||
|
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
|
NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
|
||||||
CdDevCtrlCompletionRoutine (
|
CdDevCtrlCompletionRoutine (
|
||||||
_In_ PDEVICE_OBJECT DeviceObject,
|
_In_ PDEVICE_OBJECT DeviceObject,
|
||||||
_In_ PIRP Irp,
|
_In_ PIRP Irp,
|
||||||
|
@ -172,6 +173,7 @@ Return Value:
|
||||||
//
|
//
|
||||||
|
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
|
NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
|
||||||
CdDevCtrlCompletionRoutine (
|
CdDevCtrlCompletionRoutine (
|
||||||
_In_ PDEVICE_OBJECT DeviceObject,
|
_In_ PDEVICE_OBJECT DeviceObject,
|
||||||
_In_ PIRP Irp,
|
_In_ PIRP Irp,
|
||||||
|
|
|
@ -13,7 +13,7 @@ Abstract:
|
||||||
|
|
||||||
--*/
|
--*/
|
||||||
|
|
||||||
#include "CdProcs.h"
|
#include "cdprocs.h"
|
||||||
|
|
||||||
//
|
//
|
||||||
// The Bug check file id for this module
|
// The Bug check file id for this module
|
||||||
|
@ -407,7 +407,7 @@ Return Value:
|
||||||
// Use a try-finally to perform the final cleanup.
|
// Use a try-finally to perform the final cleanup.
|
||||||
//
|
//
|
||||||
|
|
||||||
try {
|
_SEH2_TRY {
|
||||||
|
|
||||||
//
|
//
|
||||||
// Loop while there are more bytes to transfer.
|
// Loop while there are more bytes to transfer.
|
||||||
|
@ -568,7 +568,7 @@ Return Value:
|
||||||
}
|
}
|
||||||
|
|
||||||
try_exit: NOTHING;
|
try_exit: NOTHING;
|
||||||
} finally {
|
} _SEH2_FINALLY {
|
||||||
|
|
||||||
//
|
//
|
||||||
// Perform final cleanup on the IoRuns if necessary.
|
// Perform final cleanup on the IoRuns if necessary.
|
||||||
|
@ -578,7 +578,7 @@ Return Value:
|
||||||
|
|
||||||
CdFinishBuffers( IrpContext, IoRuns, CleanupRunCount, TRUE, FALSE );
|
CdFinishBuffers( IrpContext, IoRuns, CleanupRunCount, TRUE, FALSE );
|
||||||
}
|
}
|
||||||
}
|
} _SEH2_END;
|
||||||
|
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
@ -677,7 +677,7 @@ Return Value:
|
||||||
// Use a try-finally to perform the final cleanup.
|
// Use a try-finally to perform the final cleanup.
|
||||||
//
|
//
|
||||||
|
|
||||||
try {
|
_SEH2_TRY {
|
||||||
|
|
||||||
//
|
//
|
||||||
// If the initial offset lies within the RIFF header then copy the
|
// If the initial offset lies within the RIFF header then copy the
|
||||||
|
@ -979,7 +979,7 @@ Return Value:
|
||||||
KeFlushIoBuffers( IrpContext->Irp->MdlAddress, TRUE, FALSE );
|
KeFlushIoBuffers( IrpContext->Irp->MdlAddress, TRUE, FALSE );
|
||||||
|
|
||||||
try_exit: NOTHING;
|
try_exit: NOTHING;
|
||||||
} finally {
|
} _SEH2_FINALLY {
|
||||||
|
|
||||||
//
|
//
|
||||||
// Perform final cleanup on the IoRuns if necessary.
|
// Perform final cleanup on the IoRuns if necessary.
|
||||||
|
@ -989,7 +989,7 @@ Return Value:
|
||||||
|
|
||||||
CdFinishBuffers( IrpContext, IoRuns, CleanupRunCount, TRUE, FALSE );
|
CdFinishBuffers( IrpContext, IoRuns, CleanupRunCount, TRUE, FALSE );
|
||||||
}
|
}
|
||||||
}
|
} _SEH2_END;
|
||||||
|
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
@ -1282,16 +1282,18 @@ Return Value:
|
||||||
// deallocate the Mdl and return the appropriate "expected" status.
|
// deallocate the Mdl and return the appropriate "expected" status.
|
||||||
//
|
//
|
||||||
|
|
||||||
try {
|
_SEH2_TRY {
|
||||||
|
|
||||||
MmProbeAndLockPages( Mdl, IrpContext->Irp->RequestorMode, IoWriteAccess );
|
MmProbeAndLockPages( Mdl, IrpContext->Irp->RequestorMode, IoWriteAccess );
|
||||||
|
|
||||||
Status = STATUS_SUCCESS;
|
Status = STATUS_SUCCESS;
|
||||||
|
|
||||||
|
#ifdef _MSC_VER
|
||||||
#pragma warning(suppress: 6320)
|
#pragma warning(suppress: 6320)
|
||||||
} except(EXCEPTION_EXECUTE_HANDLER) {
|
#endif
|
||||||
|
} _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER) {
|
||||||
|
|
||||||
Status = GetExceptionCode();
|
Status = _SEH2_GetExceptionCode();
|
||||||
|
|
||||||
IoFreeMdl( Mdl );
|
IoFreeMdl( Mdl );
|
||||||
IrpContext->Irp->MdlAddress = NULL;
|
IrpContext->Irp->MdlAddress = NULL;
|
||||||
|
@ -1300,7 +1302,7 @@ Return Value:
|
||||||
|
|
||||||
Status = STATUS_INVALID_USER_BUFFER;
|
Status = STATUS_INVALID_USER_BUFFER;
|
||||||
}
|
}
|
||||||
}
|
} _SEH2_END;
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
|
@ -1890,7 +1892,9 @@ Return Value:
|
||||||
|
|
||||||
CurrentRawOffset = (LONGLONG) ((ULONG) CurrentRawOffset / RAW_SECTOR_SIZE);
|
CurrentRawOffset = (LONGLONG) ((ULONG) CurrentRawOffset / RAW_SECTOR_SIZE);
|
||||||
|
|
||||||
|
#ifdef _MSC_VER
|
||||||
#pragma prefast( suppress: __WARNING_RESULTOFSHIFTCASTTOLARGERSIZE, "This is fine beacuse raw sector size > sector shift" )
|
#pragma prefast( suppress: __WARNING_RESULTOFSHIFTCASTTOLARGERSIZE, "This is fine beacuse raw sector size > sector shift" )
|
||||||
|
#endif
|
||||||
CurrentCookedOffset = (LONGLONG) ((ULONG) CurrentRawOffset << SECTOR_SHIFT );
|
CurrentCookedOffset = (LONGLONG) ((ULONG) CurrentRawOffset << SECTOR_SHIFT );
|
||||||
|
|
||||||
CurrentRawOffset = (LONGLONG) ((ULONG) CurrentRawOffset * RAW_SECTOR_SIZE);
|
CurrentRawOffset = (LONGLONG) ((ULONG) CurrentRawOffset * RAW_SECTOR_SIZE);
|
||||||
|
@ -2384,6 +2388,7 @@ Return Value:
|
||||||
IO_COMPLETION_ROUTINE CdSyncCompletionRoutine;
|
IO_COMPLETION_ROUTINE CdSyncCompletionRoutine;
|
||||||
|
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
|
NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
|
||||||
CdSyncCompletionRoutine (
|
CdSyncCompletionRoutine (
|
||||||
PDEVICE_OBJECT DeviceObject,
|
PDEVICE_OBJECT DeviceObject,
|
||||||
PIRP Irp,
|
PIRP Irp,
|
||||||
|
@ -2514,7 +2519,7 @@ Return Value:
|
||||||
|
|
||||||
CdAcquireCacheForRead( IrpContext);
|
CdAcquireCacheForRead( IrpContext);
|
||||||
|
|
||||||
try {
|
_SEH2_TRY {
|
||||||
|
|
||||||
//
|
//
|
||||||
// Check the cache hasn't gone away due to volume verify failure (which
|
// Check the cache hasn't gone away due to volume verify failure (which
|
||||||
|
@ -2656,18 +2661,20 @@ Return Value:
|
||||||
// pages and update the MDL with physical page information.
|
// pages and update the MDL with physical page information.
|
||||||
//
|
//
|
||||||
|
|
||||||
try {
|
_SEH2_TRY {
|
||||||
|
|
||||||
MmProbeAndLockPages( Vcb->SectorCacheIrp->MdlAddress,
|
MmProbeAndLockPages( Vcb->SectorCacheIrp->MdlAddress,
|
||||||
KernelMode,
|
KernelMode,
|
||||||
(LOCK_OPERATION) IoWriteAccess );
|
(LOCK_OPERATION) IoWriteAccess );
|
||||||
}
|
}
|
||||||
|
#ifdef _MSC_VER
|
||||||
#pragma warning(suppress: 6320)
|
#pragma warning(suppress: 6320)
|
||||||
except(EXCEPTION_EXECUTE_HANDLER) {
|
#endif
|
||||||
|
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER) {
|
||||||
|
|
||||||
IoFreeMdl( Vcb->SectorCacheIrp->MdlAddress );
|
IoFreeMdl( Vcb->SectorCacheIrp->MdlAddress );
|
||||||
Vcb->SectorCacheIrp->MdlAddress = NULL;
|
Vcb->SectorCacheIrp->MdlAddress = NULL;
|
||||||
}
|
} _SEH2_END;
|
||||||
|
|
||||||
if (NULL == Vcb->SectorCacheIrp->MdlAddress) {
|
if (NULL == Vcb->SectorCacheIrp->MdlAddress) {
|
||||||
|
|
||||||
|
@ -2738,10 +2745,10 @@ Return Value:
|
||||||
|
|
||||||
Result = TRUE;
|
Result = TRUE;
|
||||||
}
|
}
|
||||||
finally {
|
_SEH2_FINALLY {
|
||||||
|
|
||||||
CdReleaseCache( IrpContext);
|
CdReleaseCache( IrpContext);
|
||||||
}
|
} _SEH2_END;
|
||||||
|
|
||||||
return Result;
|
return Result;
|
||||||
}
|
}
|
||||||
|
@ -3418,6 +3425,7 @@ Return Value:
|
||||||
//
|
//
|
||||||
|
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
|
NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
|
||||||
CdMultiSyncCompletionRoutine (
|
CdMultiSyncCompletionRoutine (
|
||||||
PDEVICE_OBJECT DeviceObject,
|
PDEVICE_OBJECT DeviceObject,
|
||||||
PIRP Irp,
|
PIRP Irp,
|
||||||
|
@ -3505,6 +3513,7 @@ Return Value:
|
||||||
//
|
//
|
||||||
|
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
|
NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
|
||||||
CdMultiAsyncCompletionRoutine (
|
CdMultiAsyncCompletionRoutine (
|
||||||
PDEVICE_OBJECT DeviceObject,
|
PDEVICE_OBJECT DeviceObject,
|
||||||
PIRP Irp,
|
PIRP Irp,
|
||||||
|
@ -3624,6 +3633,7 @@ Return Value:
|
||||||
//
|
//
|
||||||
|
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
|
NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
|
||||||
CdSingleSyncCompletionRoutine (
|
CdSingleSyncCompletionRoutine (
|
||||||
PDEVICE_OBJECT DeviceObject,
|
PDEVICE_OBJECT DeviceObject,
|
||||||
PIRP Irp,
|
PIRP Irp,
|
||||||
|
@ -3687,6 +3697,7 @@ Return Value:
|
||||||
//
|
//
|
||||||
|
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
|
NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
|
||||||
CdSingleAsyncCompletionRoutine (
|
CdSingleAsyncCompletionRoutine (
|
||||||
PDEVICE_OBJECT DeviceObject,
|
PDEVICE_OBJECT DeviceObject,
|
||||||
PIRP Irp,
|
PIRP Irp,
|
||||||
|
|
|
@ -14,7 +14,7 @@ Abstract:
|
||||||
|
|
||||||
--*/
|
--*/
|
||||||
|
|
||||||
#include "CdProcs.h"
|
#include "cdprocs.h"
|
||||||
|
|
||||||
//
|
//
|
||||||
// The Bug check file id for this module
|
// The Bug check file id for this module
|
||||||
|
@ -292,7 +292,7 @@ Return Value:
|
||||||
// Use a try-finally to facilitate cleanup.
|
// Use a try-finally to facilitate cleanup.
|
||||||
//
|
//
|
||||||
|
|
||||||
try {
|
_SEH2_TRY {
|
||||||
|
|
||||||
//
|
//
|
||||||
// Verify the Fcb is still good.
|
// Verify the Fcb is still good.
|
||||||
|
@ -504,7 +504,7 @@ Return Value:
|
||||||
// such trickery.
|
// such trickery.
|
||||||
//
|
//
|
||||||
|
|
||||||
try {
|
_SEH2_TRY {
|
||||||
|
|
||||||
//
|
//
|
||||||
// Zero and initialize the base part of the current entry.
|
// Zero and initialize the base part of the current entry.
|
||||||
|
@ -579,6 +579,9 @@ Return Value:
|
||||||
NamesInfo->FileNameLength = FileNameBytes + SeparatorBytes + VersionStringBytes;
|
NamesInfo->FileNameLength = FileNameBytes + SeparatorBytes + VersionStringBytes;
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
/* ReactOS Change: GCC "enumeration value not handled in switch" */
|
||||||
|
default: break;
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
|
@ -712,8 +715,10 @@ Return Value:
|
||||||
LastEntry = NextEntry;
|
LastEntry = NextEntry;
|
||||||
NextEntry = QuadAlign( Information );
|
NextEntry = QuadAlign( Information );
|
||||||
|
|
||||||
|
#ifdef _MSC_VER
|
||||||
#pragma warning(suppress: 6320)
|
#pragma warning(suppress: 6320)
|
||||||
} except (EXCEPTION_EXECUTE_HANDLER) {
|
#endif
|
||||||
|
} _SEH2_EXCEPT (EXCEPTION_EXECUTE_HANDLER) {
|
||||||
|
|
||||||
//
|
//
|
||||||
// We had a problem filling in the user's buffer, so stop and
|
// We had a problem filling in the user's buffer, so stop and
|
||||||
|
@ -722,13 +727,13 @@ Return Value:
|
||||||
//
|
//
|
||||||
|
|
||||||
Information = 0;
|
Information = 0;
|
||||||
try_leave( Status = GetExceptionCode());
|
try_leave( Status = _SEH2_GetExceptionCode());
|
||||||
}
|
} _SEH2_END;
|
||||||
}
|
}
|
||||||
|
|
||||||
DoCcbUpdate = TRUE;
|
DoCcbUpdate = TRUE;
|
||||||
|
|
||||||
} finally {
|
} _SEH2_FINALLY {
|
||||||
|
|
||||||
//
|
//
|
||||||
// Cleanup our search context - *before* aquiring the FCB mutex exclusive,
|
// Cleanup our search context - *before* aquiring the FCB mutex exclusive,
|
||||||
|
@ -767,7 +772,7 @@ Return Value:
|
||||||
//
|
//
|
||||||
|
|
||||||
CdReleaseFile( IrpContext, Fcb );
|
CdReleaseFile( IrpContext, Fcb );
|
||||||
}
|
} _SEH2_END;
|
||||||
|
|
||||||
//
|
//
|
||||||
// Complete the request here.
|
// Complete the request here.
|
||||||
|
@ -836,7 +841,7 @@ Return Value:
|
||||||
// Use a try-finally to facilitate cleanup.
|
// Use a try-finally to facilitate cleanup.
|
||||||
//
|
//
|
||||||
|
|
||||||
try {
|
_SEH2_TRY {
|
||||||
|
|
||||||
//
|
//
|
||||||
// Verify the Vcb.
|
// Verify the Vcb.
|
||||||
|
@ -861,14 +866,14 @@ Return Value:
|
||||||
NULL,
|
NULL,
|
||||||
NULL );
|
NULL );
|
||||||
|
|
||||||
} finally {
|
} _SEH2_FINALLY {
|
||||||
|
|
||||||
//
|
//
|
||||||
// Release the Vcb.
|
// Release the Vcb.
|
||||||
//
|
//
|
||||||
|
|
||||||
CdReleaseVcb( IrpContext, IrpContext->Vcb );
|
CdReleaseVcb( IrpContext, IrpContext->Vcb );
|
||||||
}
|
} _SEH2_END;
|
||||||
|
|
||||||
//
|
//
|
||||||
// Cleanup the IrpContext.
|
// Cleanup the IrpContext.
|
||||||
|
|
|
@ -65,7 +65,7 @@ Abstract:
|
||||||
|
|
||||||
--*/
|
--*/
|
||||||
|
|
||||||
#include "CdProcs.h"
|
#include "cdprocs.h"
|
||||||
|
|
||||||
//
|
//
|
||||||
// The Bug check file id for this module
|
// The Bug check file id for this module
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
#include "CdProcs.h"
|
#include "cdprocs.h"
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
#define doit(a,b) { printf("%s %04lx %4lx %s\n", #a, FIELD_OFFSET(a,b), sizeof(d.b), #b); }
|
#define doit(a,b) { printf("%s %04lx %4lx %s\n", #a, FIELD_OFFSET(a,b), sizeof(d.b), #b); }
|
||||||
|
|
|
@ -14,7 +14,7 @@ Abstract:
|
||||||
|
|
||||||
--*/
|
--*/
|
||||||
|
|
||||||
#include "CdProcs.h"
|
#include "cdprocs.h"
|
||||||
|
|
||||||
//
|
//
|
||||||
// The Bug check file id for this module
|
// The Bug check file id for this module
|
||||||
|
@ -167,7 +167,7 @@ Return Value:
|
||||||
// Use a try-finally to facilitate cleanup.
|
// Use a try-finally to facilitate cleanup.
|
||||||
//
|
//
|
||||||
|
|
||||||
try {
|
_SEH2_TRY {
|
||||||
|
|
||||||
//
|
//
|
||||||
// We only support query on file and directory handles.
|
// We only support query on file and directory handles.
|
||||||
|
@ -327,7 +327,7 @@ Return Value:
|
||||||
|
|
||||||
Irp->IoStatus.Information = IrpSp->Parameters.QueryFile.Length - Length;
|
Irp->IoStatus.Information = IrpSp->Parameters.QueryFile.Length - Length;
|
||||||
|
|
||||||
} finally {
|
} _SEH2_FINALLY {
|
||||||
|
|
||||||
//
|
//
|
||||||
// Release the file.
|
// Release the file.
|
||||||
|
@ -337,7 +337,7 @@ Return Value:
|
||||||
|
|
||||||
CdReleaseFile( IrpContext, Fcb );
|
CdReleaseFile( IrpContext, Fcb );
|
||||||
}
|
}
|
||||||
}
|
} _SEH2_END;
|
||||||
|
|
||||||
//
|
//
|
||||||
// Complete the request if we didn't raise.
|
// Complete the request if we didn't raise.
|
||||||
|
@ -409,7 +409,7 @@ Return Value:
|
||||||
|
|
||||||
CdAcquireFileShared( IrpContext, Fcb );
|
CdAcquireFileShared( IrpContext, Fcb );
|
||||||
|
|
||||||
try {
|
_SEH2_TRY {
|
||||||
|
|
||||||
//
|
//
|
||||||
// Make sure the Fcb is in a usable condition. This
|
// Make sure the Fcb is in a usable condition. This
|
||||||
|
@ -448,10 +448,10 @@ Return Value:
|
||||||
Status = STATUS_SUCCESS;
|
Status = STATUS_SUCCESS;
|
||||||
|
|
||||||
try_exit: NOTHING;
|
try_exit: NOTHING;
|
||||||
} finally {
|
} _SEH2_FINALLY {
|
||||||
|
|
||||||
CdReleaseFile( IrpContext, Fcb );
|
CdReleaseFile( IrpContext, Fcb );
|
||||||
}
|
} _SEH2_END;
|
||||||
|
|
||||||
//
|
//
|
||||||
// Complete the request if there was no raise.
|
// Complete the request if there was no raise.
|
||||||
|
@ -466,6 +466,7 @@ _Function_class_(FAST_IO_QUERY_BASIC_INFO)
|
||||||
_IRQL_requires_same_
|
_IRQL_requires_same_
|
||||||
_Success_(return != FALSE)
|
_Success_(return != FALSE)
|
||||||
BOOLEAN
|
BOOLEAN
|
||||||
|
NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
|
||||||
CdFastQueryBasicInfo (
|
CdFastQueryBasicInfo (
|
||||||
_In_ PFILE_OBJECT FileObject,
|
_In_ PFILE_OBJECT FileObject,
|
||||||
_In_ BOOLEAN Wait,
|
_In_ BOOLEAN Wait,
|
||||||
|
@ -543,7 +544,7 @@ Return Value:
|
||||||
// Use a try-finally to facilitate cleanup.
|
// Use a try-finally to facilitate cleanup.
|
||||||
//
|
//
|
||||||
|
|
||||||
try {
|
_SEH2_TRY {
|
||||||
|
|
||||||
//
|
//
|
||||||
// Only deal with 'good' Fcb's.
|
// Only deal with 'good' Fcb's.
|
||||||
|
@ -573,12 +574,12 @@ Return Value:
|
||||||
Result = TRUE;
|
Result = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
} finally {
|
} _SEH2_FINALLY {
|
||||||
|
|
||||||
ExReleaseResourceLite( Fcb->Resource );
|
ExReleaseResourceLite( Fcb->Resource );
|
||||||
|
|
||||||
FsRtlExitFileSystem();
|
FsRtlExitFileSystem();
|
||||||
}
|
} _SEH2_END;
|
||||||
|
|
||||||
return Result;
|
return Result;
|
||||||
}
|
}
|
||||||
|
@ -588,6 +589,7 @@ _Function_class_(FAST_IO_QUERY_STANDARD_INFO)
|
||||||
_IRQL_requires_same_
|
_IRQL_requires_same_
|
||||||
_Success_(return != FALSE)
|
_Success_(return != FALSE)
|
||||||
BOOLEAN
|
BOOLEAN
|
||||||
|
NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
|
||||||
CdFastQueryStdInfo (
|
CdFastQueryStdInfo (
|
||||||
_In_ PFILE_OBJECT FileObject,
|
_In_ PFILE_OBJECT FileObject,
|
||||||
_In_ BOOLEAN Wait,
|
_In_ BOOLEAN Wait,
|
||||||
|
@ -665,7 +667,7 @@ Return Value:
|
||||||
// Use a try-finally to facilitate cleanup.
|
// Use a try-finally to facilitate cleanup.
|
||||||
//
|
//
|
||||||
|
|
||||||
try {
|
_SEH2_TRY {
|
||||||
|
|
||||||
//
|
//
|
||||||
// Only deal with 'good' Fcb's.
|
// Only deal with 'good' Fcb's.
|
||||||
|
@ -705,12 +707,12 @@ Return Value:
|
||||||
Result = TRUE;
|
Result = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
} finally {
|
} _SEH2_FINALLY {
|
||||||
|
|
||||||
ExReleaseResourceLite( Fcb->Resource );
|
ExReleaseResourceLite( Fcb->Resource );
|
||||||
|
|
||||||
FsRtlExitFileSystem();
|
FsRtlExitFileSystem();
|
||||||
}
|
} _SEH2_END;
|
||||||
|
|
||||||
return Result;
|
return Result;
|
||||||
}
|
}
|
||||||
|
@ -720,6 +722,7 @@ _Function_class_(FAST_IO_QUERY_NETWORK_OPEN_INFO)
|
||||||
_IRQL_requires_same_
|
_IRQL_requires_same_
|
||||||
_Success_(return != FALSE)
|
_Success_(return != FALSE)
|
||||||
BOOLEAN
|
BOOLEAN
|
||||||
|
NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
|
||||||
CdFastQueryNetworkInfo (
|
CdFastQueryNetworkInfo (
|
||||||
_In_ PFILE_OBJECT FileObject,
|
_In_ PFILE_OBJECT FileObject,
|
||||||
_In_ BOOLEAN Wait,
|
_In_ BOOLEAN Wait,
|
||||||
|
@ -797,7 +800,7 @@ Return Value:
|
||||||
// Use a try-finally to facilitate cleanup.
|
// Use a try-finally to facilitate cleanup.
|
||||||
//
|
//
|
||||||
|
|
||||||
try {
|
_SEH2_TRY {
|
||||||
|
|
||||||
//
|
//
|
||||||
// Only deal with 'good' Fcb's.
|
// Only deal with 'good' Fcb's.
|
||||||
|
@ -842,12 +845,12 @@ Return Value:
|
||||||
Result = TRUE;
|
Result = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
} finally {
|
} _SEH2_FINALLY {
|
||||||
|
|
||||||
ExReleaseResourceLite( Fcb->Resource );
|
ExReleaseResourceLite( Fcb->Resource );
|
||||||
|
|
||||||
FsRtlExitFileSystem();
|
FsRtlExitFileSystem();
|
||||||
}
|
} _SEH2_END;
|
||||||
|
|
||||||
return Result;
|
return Result;
|
||||||
}
|
}
|
||||||
|
@ -1272,7 +1275,7 @@ Return Value:
|
||||||
PUNICODE_STRING NameToUse;
|
PUNICODE_STRING NameToUse;
|
||||||
ULONG DirentOffset;
|
ULONG DirentOffset;
|
||||||
|
|
||||||
COMPOUND_PATH_ENTRY CompoundPathEntry = {0};
|
COMPOUND_PATH_ENTRY CompoundPathEntry = {{0}};/* ReactOS Change: GCC "missing braces around initializer" */
|
||||||
FILE_ENUM_CONTEXT FileContext;
|
FILE_ENUM_CONTEXT FileContext;
|
||||||
|
|
||||||
PFCB ParentFcb = NULL;
|
PFCB ParentFcb = NULL;
|
||||||
|
@ -1307,7 +1310,7 @@ Return Value:
|
||||||
// Use a try-finally to cleanup the structures.
|
// Use a try-finally to cleanup the structures.
|
||||||
//
|
//
|
||||||
|
|
||||||
try {
|
_SEH2_TRY {
|
||||||
|
|
||||||
ParentFcb = Fcb->ParentFcb;
|
ParentFcb = Fcb->ParentFcb;
|
||||||
CdAcquireFileShared( IrpContext, ParentFcb );
|
CdAcquireFileShared( IrpContext, ParentFcb );
|
||||||
|
@ -1418,12 +1421,12 @@ Return Value:
|
||||||
RtlCopyMemory( Buffer->FileName, ShortNameBuffer, Buffer->FileNameLength );
|
RtlCopyMemory( Buffer->FileName, ShortNameBuffer, Buffer->FileNameLength );
|
||||||
|
|
||||||
try_exit: NOTHING;
|
try_exit: NOTHING;
|
||||||
} finally {
|
} _SEH2_FINALLY {
|
||||||
|
|
||||||
if (CleanupFileLookup) {
|
if (CleanupFileLookup) {
|
||||||
|
|
||||||
CdCleanupDirContext( IrpContext, &DirContext );
|
CdCleanupDirContext( IrpContext, &DirContext );
|
||||||
CdCleanupDirent( IrpContext, &Dirent );
|
CdCleanupDirent( IrpContext, &Dirent );/* ReactOS Change: GCC "passing argument 1 from incompatible pointer type" */
|
||||||
|
|
||||||
} else if (CleanupDirectoryLookup) {
|
} else if (CleanupDirectoryLookup) {
|
||||||
|
|
||||||
|
@ -1435,7 +1438,7 @@ Return Value:
|
||||||
|
|
||||||
CdReleaseFile( IrpContext, ParentFcb );
|
CdReleaseFile( IrpContext, ParentFcb );
|
||||||
}
|
}
|
||||||
}
|
} _SEH2_END;
|
||||||
|
|
||||||
//
|
//
|
||||||
// Reduce the available bytes by the amount stored into this buffer.
|
// Reduce the available bytes by the amount stored into this buffer.
|
||||||
|
|
|
@ -13,7 +13,7 @@ Abstract:
|
||||||
|
|
||||||
--*/
|
--*/
|
||||||
|
|
||||||
#include "CdProcs.h"
|
#include "cdprocs.h"
|
||||||
|
|
||||||
//
|
//
|
||||||
// The Bug check file id for this module
|
// The Bug check file id for this module
|
||||||
|
@ -109,8 +109,10 @@ Return Value:
|
||||||
FileObject->FsContext = Fcb;
|
FileObject->FsContext = Fcb;
|
||||||
FileObject->FsContext2 = Ccb;
|
FileObject->FsContext2 = Ccb;
|
||||||
|
|
||||||
|
#ifdef _MSC_VER
|
||||||
#pragma warning( suppress: 4213 )
|
#pragma warning( suppress: 4213 )
|
||||||
SetFlag( ((ULONG_PTR) FileObject->FsContext2), TypeOfOpen );
|
#endif
|
||||||
|
SetFlag( (*(PULONG_PTR)&FileObject->FsContext2), TypeOfOpen ); /* ReactOS Change: GCC "invalid lvalue in assignment" */
|
||||||
|
|
||||||
//
|
//
|
||||||
// Set the Vpb field in the file object.
|
// Set the Vpb field in the file object.
|
||||||
|
@ -186,8 +188,10 @@ Return Value:
|
||||||
*Fcb = FileObject->FsContext;
|
*Fcb = FileObject->FsContext;
|
||||||
*Ccb = FileObject->FsContext2;
|
*Ccb = FileObject->FsContext2;
|
||||||
|
|
||||||
|
#ifdef _MSC_VER
|
||||||
#pragma warning( suppress: 4213 )
|
#pragma warning( suppress: 4213 )
|
||||||
ClearFlag( (ULONG_PTR) *Ccb, TYPE_OF_OPEN_MASK );
|
#endif
|
||||||
|
ClearFlag( (*(PULONG_PTR)Ccb), TYPE_OF_OPEN_MASK ); /* ReactOS Change: GCC "invalid lvalue in assignment" */
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|
|
@ -14,7 +14,7 @@ Abstract:
|
||||||
|
|
||||||
--*/
|
--*/
|
||||||
|
|
||||||
#include "CdProcs.h"
|
#include "cdprocs.h"
|
||||||
|
|
||||||
//
|
//
|
||||||
// The Bug check file id for this module
|
// The Bug check file id for this module
|
||||||
|
@ -532,7 +532,9 @@ CdReMountOldVcb (
|
||||||
|
|
||||||
IoAcquireVpbSpinLock( &SavedIrql );
|
IoAcquireVpbSpinLock( &SavedIrql );
|
||||||
|
|
||||||
|
#ifdef _MSC_VER
|
||||||
#pragma prefast(suppress: 28175, "this is a filesystem driver, touching the vpb is allowed")
|
#pragma prefast(suppress: 28175, "this is a filesystem driver, touching the vpb is allowed")
|
||||||
|
#endif
|
||||||
NewVcb->Vpb->RealDevice->Vpb = OldVcb->Vpb;
|
NewVcb->Vpb->RealDevice->Vpb = OldVcb->Vpb;
|
||||||
|
|
||||||
OldVcb->Vpb->RealDevice = NewVcb->Vpb->RealDevice;
|
OldVcb->Vpb->RealDevice = NewVcb->Vpb->RealDevice;
|
||||||
|
@ -639,6 +641,10 @@ Return Value:
|
||||||
ULONG TocDiskFlags = 0;
|
ULONG TocDiskFlags = 0;
|
||||||
ULONG MediaChangeCount = 0;
|
ULONG MediaChangeCount = 0;
|
||||||
|
|
||||||
|
#ifdef __REACTOS__
|
||||||
|
DEVICE_TYPE FilesystemDeviceType;
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef CDFS_TELEMETRY_DATA
|
#ifdef CDFS_TELEMETRY_DATA
|
||||||
GUID VolumeGuid;
|
GUID VolumeGuid;
|
||||||
GUID VolumeCorrelationId = { 0 };
|
GUID VolumeCorrelationId = { 0 };
|
||||||
|
@ -651,7 +657,16 @@ Return Value:
|
||||||
// always be waitable.
|
// always be waitable.
|
||||||
//
|
//
|
||||||
|
|
||||||
|
#ifdef __REACTOS__
|
||||||
|
if (IrpSp->DeviceObject == CdData.HddFileSystemDeviceObject) {
|
||||||
|
FilesystemDeviceType = FILE_DEVICE_DISK_FILE_SYSTEM;
|
||||||
|
} else {
|
||||||
|
#endif
|
||||||
NT_ASSERT( Vpb->RealDevice->DeviceType == FILE_DEVICE_CD_ROM );
|
NT_ASSERT( Vpb->RealDevice->DeviceType == FILE_DEVICE_CD_ROM );
|
||||||
|
#ifdef __REACTOS__
|
||||||
|
FilesystemDeviceType = FILE_DEVICE_CD_ROM_FILE_SYSTEM;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
NT_ASSERT( FlagOn( IrpContext->Flags, IRP_CONTEXT_FLAG_WAIT ));
|
NT_ASSERT( FlagOn( IrpContext->Flags, IRP_CONTEXT_FLAG_WAIT ));
|
||||||
|
|
||||||
#ifdef CDFS_TELEMETRY_DATA
|
#ifdef CDFS_TELEMETRY_DATA
|
||||||
|
@ -697,7 +712,11 @@ Return Value:
|
||||||
//
|
//
|
||||||
|
|
||||||
Status = CdPerformDevIoCtrl( IrpContext,
|
Status = CdPerformDevIoCtrl( IrpContext,
|
||||||
|
#ifndef __REACTOS__
|
||||||
IOCTL_CDROM_CHECK_VERIFY,
|
IOCTL_CDROM_CHECK_VERIFY,
|
||||||
|
#else
|
||||||
|
(FilesystemDeviceType == FILE_DEVICE_DISK_FILE_SYSTEM ? IOCTL_DISK_CHECK_VERIFY : IOCTL_CDROM_CHECK_VERIFY),
|
||||||
|
#endif
|
||||||
DeviceObjectWeTalkTo,
|
DeviceObjectWeTalkTo,
|
||||||
&MediaChangeCount,
|
&MediaChangeCount,
|
||||||
sizeof(ULONG),
|
sizeof(ULONG),
|
||||||
|
@ -726,7 +745,11 @@ Return Value:
|
||||||
//
|
//
|
||||||
|
|
||||||
Status = CdPerformDevIoCtrl( IrpContext,
|
Status = CdPerformDevIoCtrl( IrpContext,
|
||||||
|
#ifndef __REACTOS__
|
||||||
IOCTL_CDROM_GET_DRIVE_GEOMETRY,
|
IOCTL_CDROM_GET_DRIVE_GEOMETRY,
|
||||||
|
#else
|
||||||
|
(FilesystemDeviceType == FILE_DEVICE_DISK_FILE_SYSTEM ? IOCTL_DISK_GET_DRIVE_GEOMETRY : IOCTL_CDROM_GET_DRIVE_GEOMETRY),
|
||||||
|
#endif
|
||||||
DeviceObjectWeTalkTo,
|
DeviceObjectWeTalkTo,
|
||||||
&DiskGeometry,
|
&DiskGeometry,
|
||||||
sizeof( DISK_GEOMETRY ),
|
sizeof( DISK_GEOMETRY ),
|
||||||
|
@ -769,7 +792,7 @@ Return Value:
|
||||||
// Use a try-finally to facilitate cleanup.
|
// Use a try-finally to facilitate cleanup.
|
||||||
//
|
//
|
||||||
|
|
||||||
try {
|
_SEH2_TRY {
|
||||||
|
|
||||||
//
|
//
|
||||||
// Allocate a buffer to query the TOC.
|
// Allocate a buffer to query the TOC.
|
||||||
|
@ -794,7 +817,11 @@ Return Value:
|
||||||
Status = IoCreateDevice( CdData.DriverObject,
|
Status = IoCreateDevice( CdData.DriverObject,
|
||||||
sizeof( VOLUME_DEVICE_OBJECT ) - sizeof( DEVICE_OBJECT ),
|
sizeof( VOLUME_DEVICE_OBJECT ) - sizeof( DEVICE_OBJECT ),
|
||||||
NULL,
|
NULL,
|
||||||
|
#ifndef __REACTOS__
|
||||||
FILE_DEVICE_CD_ROM_FILE_SYSTEM,
|
FILE_DEVICE_CD_ROM_FILE_SYSTEM,
|
||||||
|
#else
|
||||||
|
FilesystemDeviceType,
|
||||||
|
#endif
|
||||||
0,
|
0,
|
||||||
FALSE,
|
FALSE,
|
||||||
(PDEVICE_OBJECT *) &VolDo );
|
(PDEVICE_OBJECT *) &VolDo );
|
||||||
|
@ -848,7 +875,21 @@ Return Value:
|
||||||
|
|
||||||
if (Status != STATUS_SUCCESS) {
|
if (Status != STATUS_SUCCESS) {
|
||||||
|
|
||||||
|
#ifdef __REACTOS__
|
||||||
|
|
||||||
|
//
|
||||||
|
// Don't bail out if that was a disk based ISO image, it is legit
|
||||||
|
//
|
||||||
|
|
||||||
|
if (FilesystemDeviceType == FILE_DEVICE_DISK_FILE_SYSTEM) {
|
||||||
|
CdFreePool( &CdromToc );
|
||||||
|
Status = STATUS_SUCCESS;
|
||||||
|
} else {
|
||||||
|
#endif
|
||||||
try_leave( Status );
|
try_leave( Status );
|
||||||
|
#ifdef __REACTOS__
|
||||||
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
|
@ -1164,7 +1205,7 @@ Return Value:
|
||||||
|
|
||||||
Status = STATUS_SUCCESS;
|
Status = STATUS_SUCCESS;
|
||||||
|
|
||||||
} finally {
|
} _SEH2_FINALLY {
|
||||||
|
|
||||||
//
|
//
|
||||||
// Free the TOC buffer if not in the Vcb.
|
// Free the TOC buffer if not in the Vcb.
|
||||||
|
@ -1188,7 +1229,7 @@ Return Value:
|
||||||
// If we are not mounting the device, then set the verify bit again.
|
// If we are not mounting the device, then set the verify bit again.
|
||||||
//
|
//
|
||||||
|
|
||||||
if ((AbnormalTermination() || (Status != STATUS_SUCCESS)) &&
|
if ((_SEH2_AbnormalTermination() || (Status != STATUS_SUCCESS)) &&
|
||||||
SetDoVerifyOnFail) {
|
SetDoVerifyOnFail) {
|
||||||
|
|
||||||
CdMarkRealDevForVerify( IrpContext->RealDevice);
|
CdMarkRealDevForVerify( IrpContext->RealDevice);
|
||||||
|
@ -1225,7 +1266,7 @@ Return Value:
|
||||||
//
|
//
|
||||||
|
|
||||||
CdReleaseCdData( IrpContext );
|
CdReleaseCdData( IrpContext );
|
||||||
}
|
} _SEH2_END;
|
||||||
|
|
||||||
//
|
//
|
||||||
// Now send mount notification.
|
// Now send mount notification.
|
||||||
|
@ -1338,7 +1379,7 @@ Return Value:
|
||||||
|
|
||||||
CdAcquireCdData( IrpContext );
|
CdAcquireCdData( IrpContext );
|
||||||
|
|
||||||
try {
|
_SEH2_TRY {
|
||||||
|
|
||||||
CdAcquireVcbExclusive( IrpContext, Vcb, FALSE );
|
CdAcquireVcbExclusive( IrpContext, Vcb, FALSE );
|
||||||
ReleaseVcb = TRUE;
|
ReleaseVcb = TRUE;
|
||||||
|
@ -1682,8 +1723,7 @@ Return Value:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
} _SEH2_FINALLY {
|
||||||
finally {
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Free the TOC buffer if allocated.
|
// Free the TOC buffer if allocated.
|
||||||
|
@ -1708,7 +1748,7 @@ Return Value:
|
||||||
}
|
}
|
||||||
|
|
||||||
CdReleaseCdData( IrpContext );
|
CdReleaseCdData( IrpContext );
|
||||||
}
|
} _SEH2_END;
|
||||||
|
|
||||||
//
|
//
|
||||||
// Now send mount notification.
|
// Now send mount notification.
|
||||||
|
@ -1838,7 +1878,7 @@ Return Value:
|
||||||
// Use a try finally to free the Fcb.
|
// Use a try finally to free the Fcb.
|
||||||
//
|
//
|
||||||
|
|
||||||
try {
|
_SEH2_TRY {
|
||||||
|
|
||||||
//
|
//
|
||||||
// Verify the Fcb.
|
// Verify the Fcb.
|
||||||
|
@ -1868,14 +1908,14 @@ Return Value:
|
||||||
|
|
||||||
Irp = NULL;
|
Irp = NULL;
|
||||||
|
|
||||||
} finally {
|
} _SEH2_FINALLY {
|
||||||
|
|
||||||
//
|
//
|
||||||
// Release all of our resources
|
// Release all of our resources
|
||||||
//
|
//
|
||||||
|
|
||||||
CdReleaseFcb( IrpContext, Fcb );
|
CdReleaseFcb( IrpContext, Fcb );
|
||||||
}
|
} _SEH2_END;
|
||||||
|
|
||||||
//
|
//
|
||||||
// Complete the request if there was no exception.
|
// Complete the request if there was no exception.
|
||||||
|
@ -1951,7 +1991,7 @@ Return Value:
|
||||||
Vcb = Fcb->Vcb;
|
Vcb = Fcb->Vcb;
|
||||||
CdAcquireVcbExclusive( IrpContext, Vcb, FALSE );
|
CdAcquireVcbExclusive( IrpContext, Vcb, FALSE );
|
||||||
|
|
||||||
try {
|
_SEH2_TRY {
|
||||||
|
|
||||||
//
|
//
|
||||||
// Verify the Vcb.
|
// Verify the Vcb.
|
||||||
|
@ -1961,7 +2001,7 @@ Return Value:
|
||||||
|
|
||||||
Status = CdLockVolumeInternal( IrpContext, Vcb, IrpSp->FileObject );
|
Status = CdLockVolumeInternal( IrpContext, Vcb, IrpSp->FileObject );
|
||||||
|
|
||||||
} finally {
|
} _SEH2_FINALLY {
|
||||||
|
|
||||||
//
|
//
|
||||||
// Release the Vcb.
|
// Release the Vcb.
|
||||||
|
@ -1969,11 +2009,11 @@ Return Value:
|
||||||
|
|
||||||
CdReleaseVcb( IrpContext, Vcb );
|
CdReleaseVcb( IrpContext, Vcb );
|
||||||
|
|
||||||
if (AbnormalTermination() || !NT_SUCCESS( Status )) {
|
if (_SEH2_AbnormalTermination() || !NT_SUCCESS( Status )) {
|
||||||
|
|
||||||
FsRtlNotifyVolumeEvent( IrpSp->FileObject, FSRTL_VOLUME_LOCK_FAILED );
|
FsRtlNotifyVolumeEvent( IrpSp->FileObject, FSRTL_VOLUME_LOCK_FAILED );
|
||||||
}
|
}
|
||||||
}
|
} _SEH2_END;
|
||||||
|
|
||||||
//
|
//
|
||||||
// Complete the request if there haven't been any exceptions.
|
// Complete the request if there haven't been any exceptions.
|
||||||
|
@ -2454,7 +2494,12 @@ Return Value:
|
||||||
// We only allow the invalidate call to come in on our file system devices.
|
// We only allow the invalidate call to come in on our file system devices.
|
||||||
//
|
//
|
||||||
|
|
||||||
|
#ifndef __REACTOS__
|
||||||
if (IrpSp->DeviceObject != CdData.FileSystemDeviceObject) {
|
if (IrpSp->DeviceObject != CdData.FileSystemDeviceObject) {
|
||||||
|
#else
|
||||||
|
if (IrpSp->DeviceObject != CdData.FileSystemDeviceObject &&
|
||||||
|
IrpSp->DeviceObject != CdData.HddFileSystemDeviceObject) {
|
||||||
|
#endif
|
||||||
|
|
||||||
CdCompleteRequest( IrpContext, Irp, STATUS_INVALID_DEVICE_REQUEST );
|
CdCompleteRequest( IrpContext, Irp, STATUS_INVALID_DEVICE_REQUEST );
|
||||||
|
|
||||||
|
@ -2507,7 +2552,7 @@ Return Value:
|
||||||
0,
|
0,
|
||||||
*IoFileObjectType,
|
*IoFileObjectType,
|
||||||
KernelMode,
|
KernelMode,
|
||||||
&FileToMarkBad,
|
(PVOID*)&FileToMarkBad, /* ReactOS Change: GCC "passing argument 5 of 'ObReferenceObjectByHandle' from incompatible pointer type" */
|
||||||
NULL );
|
NULL );
|
||||||
|
|
||||||
if (!NT_SUCCESS(Status)) {
|
if (!NT_SUCCESS(Status)) {
|
||||||
|
@ -2578,7 +2623,9 @@ Return Value:
|
||||||
|
|
||||||
IoAcquireVpbSpinLock( &SavedIrql );
|
IoAcquireVpbSpinLock( &SavedIrql );
|
||||||
|
|
||||||
|
#ifdef _MSC_VER
|
||||||
#pragma prefast(suppress: 28175, "this is a filesystem driver, touching the vpb is allowed")
|
#pragma prefast(suppress: 28175, "this is a filesystem driver, touching the vpb is allowed")
|
||||||
|
#endif
|
||||||
if (DeviceToMarkBad->Vpb == Vcb->Vpb) {
|
if (DeviceToMarkBad->Vpb == Vcb->Vpb) {
|
||||||
|
|
||||||
PVPB NewVpb = Vcb->SwapVpb;
|
PVPB NewVpb = Vcb->SwapVpb;
|
||||||
|
@ -2592,11 +2639,15 @@ Return Value:
|
||||||
NewVpb->Size = sizeof( VPB );
|
NewVpb->Size = sizeof( VPB );
|
||||||
NewVpb->RealDevice = DeviceToMarkBad;
|
NewVpb->RealDevice = DeviceToMarkBad;
|
||||||
|
|
||||||
|
#ifdef _MSC_VER
|
||||||
#pragma prefast(push)
|
#pragma prefast(push)
|
||||||
#pragma prefast(disable: 28175, "this is a filesystem driver, touching the vpb is allowed")
|
#pragma prefast(disable: 28175, "this is a filesystem driver, touching the vpb is allowed")
|
||||||
|
#endif
|
||||||
NewVpb->Flags = FlagOn( DeviceToMarkBad->Vpb->Flags, VPB_REMOVE_PENDING );
|
NewVpb->Flags = FlagOn( DeviceToMarkBad->Vpb->Flags, VPB_REMOVE_PENDING );
|
||||||
DeviceToMarkBad->Vpb = NewVpb;
|
DeviceToMarkBad->Vpb = NewVpb;
|
||||||
|
#ifdef _MSC_VER
|
||||||
#pragma prefast(pop)
|
#pragma prefast(pop)
|
||||||
|
#endif
|
||||||
|
|
||||||
Vcb->SwapVpb = NULL;
|
Vcb->SwapVpb = NULL;
|
||||||
}
|
}
|
||||||
|
@ -2871,7 +2922,7 @@ Return Value:
|
||||||
// Check for whether this device supports XA and multi-session.
|
// Check for whether this device supports XA and multi-session.
|
||||||
//
|
//
|
||||||
|
|
||||||
try {
|
_SEH2_TRY {
|
||||||
|
|
||||||
//
|
//
|
||||||
// Allocate a buffer for the last session information.
|
// Allocate a buffer for the last session information.
|
||||||
|
@ -2949,10 +3000,10 @@ Return Value:
|
||||||
ThisPass += 1;
|
ThisPass += 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
} finally {
|
} _SEH2_FINALLY {
|
||||||
|
|
||||||
if (CdromToc != NULL) { CdFreePool( &CdromToc ); }
|
if (CdromToc != NULL) { CdFreePool( &CdromToc ); }
|
||||||
}
|
} _SEH2_END;
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|
|
@ -14,7 +14,7 @@ Abstract:
|
||||||
|
|
||||||
--*/
|
--*/
|
||||||
|
|
||||||
#include "CdProcs.h"
|
#include "cdprocs.h"
|
||||||
|
|
||||||
//
|
//
|
||||||
// The Bug check file id for this module
|
// The Bug check file id for this module
|
||||||
|
@ -24,6 +24,7 @@ Abstract:
|
||||||
|
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
|
NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
|
||||||
CdFspDispatch (
|
CdFspDispatch (
|
||||||
_In_ PVOID Context
|
_In_ PVOID Context
|
||||||
)
|
)
|
||||||
|
@ -95,7 +96,7 @@ Return Value:
|
||||||
|
|
||||||
while (TRUE) {
|
while (TRUE) {
|
||||||
|
|
||||||
try {
|
_SEH2_TRY {
|
||||||
|
|
||||||
//
|
//
|
||||||
// Reinitialize for the next try at completing this
|
// Reinitialize for the next try at completing this
|
||||||
|
@ -185,10 +186,10 @@ Return Value:
|
||||||
CdCompleteRequest( IrpContext, Irp, Status );
|
CdCompleteRequest( IrpContext, Irp, Status );
|
||||||
}
|
}
|
||||||
|
|
||||||
} except( CdExceptionFilter( IrpContext, GetExceptionInformation() )) {
|
} _SEH2_EXCEPT( CdExceptionFilter( IrpContext, _SEH2_GetExceptionInformation() )) {
|
||||||
|
|
||||||
Status = CdProcessException( IrpContext, Irp, GetExceptionCode() );
|
Status = CdProcessException( IrpContext, Irp, _SEH2_GetExceptionCode() );
|
||||||
}
|
} _SEH2_END;
|
||||||
|
|
||||||
//
|
//
|
||||||
// Break out of the loop if we didn't get CANT_WAIT.
|
// Break out of the loop if we didn't get CANT_WAIT.
|
||||||
|
|
|
@ -14,7 +14,7 @@ Abstract:
|
||||||
|
|
||||||
--*/
|
--*/
|
||||||
|
|
||||||
#include "CdProcs.h"
|
#include "cdprocs.h"
|
||||||
|
|
||||||
//
|
//
|
||||||
// The Bug check file id for this module
|
// The Bug check file id for this module
|
||||||
|
@ -89,7 +89,7 @@ Return Value:
|
||||||
Status = FsRtlCheckOplock( CdGetFcbOplock(Fcb),
|
Status = FsRtlCheckOplock( CdGetFcbOplock(Fcb),
|
||||||
Irp,
|
Irp,
|
||||||
IrpContext,
|
IrpContext,
|
||||||
CdOplockComplete,
|
(PVOID)CdOplockComplete,/* ReactOS Change: GCC "assignment from incompatible pointer type" */
|
||||||
NULL );
|
NULL );
|
||||||
|
|
||||||
//
|
//
|
||||||
|
@ -138,6 +138,7 @@ Return Value:
|
||||||
|
|
||||||
|
|
||||||
BOOLEAN
|
BOOLEAN
|
||||||
|
NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
|
||||||
CdFastLock (
|
CdFastLock (
|
||||||
_In_ PFILE_OBJECT FileObject,
|
_In_ PFILE_OBJECT FileObject,
|
||||||
_In_ PLARGE_INTEGER FileOffset,
|
_In_ PLARGE_INTEGER FileOffset,
|
||||||
|
@ -225,7 +226,7 @@ Return Value:
|
||||||
// Use a try-finally to facilitate cleanup.
|
// Use a try-finally to facilitate cleanup.
|
||||||
//
|
//
|
||||||
|
|
||||||
try {
|
_SEH2_TRY {
|
||||||
|
|
||||||
//
|
//
|
||||||
// We check whether we can proceed based on the state of the file oplocks.
|
// We check whether we can proceed based on the state of the file oplocks.
|
||||||
|
@ -249,7 +250,9 @@ Return Value:
|
||||||
// Now call the FsRtl routine to perform the lock request.
|
// Now call the FsRtl routine to perform the lock request.
|
||||||
//
|
//
|
||||||
|
|
||||||
|
#ifdef _MSC_VER
|
||||||
#pragma prefast(suppress: 28159, "prefast thinks this is an obsolete routine, but it is ok for CDFS to use it")
|
#pragma prefast(suppress: 28159, "prefast thinks this is an obsolete routine, but it is ok for CDFS to use it")
|
||||||
|
#endif
|
||||||
if ((Results = FsRtlFastLock( Fcb->FileLock,
|
if ((Results = FsRtlFastLock( Fcb->FileLock,
|
||||||
FileObject,
|
FileObject,
|
||||||
FileOffset,
|
FileOffset,
|
||||||
|
@ -277,16 +280,17 @@ Return Value:
|
||||||
}
|
}
|
||||||
|
|
||||||
try_exit: NOTHING;
|
try_exit: NOTHING;
|
||||||
} finally {
|
} _SEH2_FINALLY {
|
||||||
|
|
||||||
FsRtlExitFileSystem();
|
FsRtlExitFileSystem();
|
||||||
}
|
} _SEH2_END;
|
||||||
|
|
||||||
return Results;
|
return Results;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
BOOLEAN
|
BOOLEAN
|
||||||
|
NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
|
||||||
CdFastUnlockSingle (
|
CdFastUnlockSingle (
|
||||||
_In_ PFILE_OBJECT FileObject,
|
_In_ PFILE_OBJECT FileObject,
|
||||||
_In_ PLARGE_INTEGER FileOffset,
|
_In_ PLARGE_INTEGER FileOffset,
|
||||||
|
@ -369,7 +373,7 @@ Return Value:
|
||||||
|
|
||||||
FsRtlEnterFileSystem();
|
FsRtlEnterFileSystem();
|
||||||
|
|
||||||
try {
|
_SEH2_TRY {
|
||||||
|
|
||||||
//
|
//
|
||||||
// We check whether we can proceed based on the state of the file oplocks.
|
// We check whether we can proceed based on the state of the file oplocks.
|
||||||
|
@ -419,16 +423,17 @@ Return Value:
|
||||||
}
|
}
|
||||||
|
|
||||||
try_exit: NOTHING;
|
try_exit: NOTHING;
|
||||||
} finally {
|
} _SEH2_FINALLY {
|
||||||
|
|
||||||
FsRtlExitFileSystem();
|
FsRtlExitFileSystem();
|
||||||
}
|
} _SEH2_END;
|
||||||
|
|
||||||
return Results;
|
return Results;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
BOOLEAN
|
BOOLEAN
|
||||||
|
NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
|
||||||
CdFastUnlockAll (
|
CdFastUnlockAll (
|
||||||
_In_ PFILE_OBJECT FileObject,
|
_In_ PFILE_OBJECT FileObject,
|
||||||
_In_ PEPROCESS ProcessId,
|
_In_ PEPROCESS ProcessId,
|
||||||
|
@ -502,7 +507,7 @@ Return Value:
|
||||||
|
|
||||||
FsRtlEnterFileSystem();
|
FsRtlEnterFileSystem();
|
||||||
|
|
||||||
try {
|
_SEH2_TRY {
|
||||||
|
|
||||||
//
|
//
|
||||||
// We check whether we can proceed based on the state of the file oplocks.
|
// We check whether we can proceed based on the state of the file oplocks.
|
||||||
|
@ -543,16 +548,17 @@ Return Value:
|
||||||
CdUnlockFcb( IrpContext, Fcb );
|
CdUnlockFcb( IrpContext, Fcb );
|
||||||
|
|
||||||
try_exit: NOTHING;
|
try_exit: NOTHING;
|
||||||
} finally {
|
} _SEH2_FINALLY {
|
||||||
|
|
||||||
FsRtlExitFileSystem();
|
FsRtlExitFileSystem();
|
||||||
}
|
} _SEH2_END;
|
||||||
|
|
||||||
return Results;
|
return Results;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
BOOLEAN
|
BOOLEAN
|
||||||
|
NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
|
||||||
CdFastUnlockAllByKey (
|
CdFastUnlockAllByKey (
|
||||||
_In_ PFILE_OBJECT FileObject,
|
_In_ PFILE_OBJECT FileObject,
|
||||||
_In_ PVOID ProcessId,
|
_In_ PVOID ProcessId,
|
||||||
|
@ -629,7 +635,7 @@ Return Value:
|
||||||
|
|
||||||
FsRtlEnterFileSystem();
|
FsRtlEnterFileSystem();
|
||||||
|
|
||||||
try {
|
_SEH2_TRY {
|
||||||
|
|
||||||
//
|
//
|
||||||
// We check whether we can proceed based on the state of the file oplocks.
|
// We check whether we can proceed based on the state of the file oplocks.
|
||||||
|
@ -671,10 +677,10 @@ Return Value:
|
||||||
CdUnlockFcb( IrpContext, Fcb );
|
CdUnlockFcb( IrpContext, Fcb );
|
||||||
|
|
||||||
try_exit: NOTHING;
|
try_exit: NOTHING;
|
||||||
} finally {
|
} _SEH2_FINALLY {
|
||||||
|
|
||||||
FsRtlExitFileSystem();
|
FsRtlExitFileSystem();
|
||||||
}
|
} _SEH2_END;
|
||||||
|
|
||||||
return Results;
|
return Results;
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,7 +13,7 @@ Abstract:
|
||||||
|
|
||||||
--*/
|
--*/
|
||||||
|
|
||||||
#include "CdProcs.h"
|
#include "cdprocs.h"
|
||||||
|
|
||||||
//
|
//
|
||||||
// The Bug check file id for this module
|
// The Bug check file id for this module
|
||||||
|
@ -171,10 +171,14 @@ Return Value:
|
||||||
|
|
||||||
while (RemainingByteCount != 0) {
|
while (RemainingByteCount != 0) {
|
||||||
|
|
||||||
|
#ifdef _MSC_VER
|
||||||
#pragma prefast(push)
|
#pragma prefast(push)
|
||||||
#pragma prefast(suppress:26014, "RemainingByteCount is even")
|
#pragma prefast(suppress:26014, "RemainingByteCount is even")
|
||||||
|
#endif
|
||||||
*Destination = *Source;
|
*Destination = *Source;
|
||||||
|
#ifdef _MSC_VER
|
||||||
#pragma prefast(pop)
|
#pragma prefast(pop)
|
||||||
|
#endif
|
||||||
|
|
||||||
Source += 2;
|
Source += 2;
|
||||||
Destination += 2;
|
Destination += 2;
|
||||||
|
@ -251,7 +255,9 @@ Return Value:
|
||||||
// copy the data.
|
// copy the data.
|
||||||
//
|
//
|
||||||
|
|
||||||
|
#ifdef _MSC_VER
|
||||||
#pragma prefast( suppress:26015, "CD_NAME structures have two UNICODE_STRING structures pointing to the same allocation. there is no way to tell prefast this is the case and that the allocation is always big enough.");
|
#pragma prefast( suppress:26015, "CD_NAME structures have two UNICODE_STRING structures pointing to the same allocation. there is no way to tell prefast this is the case and that the allocation is always big enough.");
|
||||||
|
#endif
|
||||||
*(UpcaseName->VersionString.Buffer) = L';';
|
*(UpcaseName->VersionString.Buffer) = L';';
|
||||||
|
|
||||||
UpcaseName->VersionString.Buffer += 1;
|
UpcaseName->VersionString.Buffer += 1;
|
||||||
|
@ -759,10 +765,14 @@ Return Value:
|
||||||
// may use 2 bytes as DBCS characters.
|
// may use 2 bytes as DBCS characters.
|
||||||
//
|
//
|
||||||
|
|
||||||
|
#ifdef _MSC_VER
|
||||||
#pragma prefast(push)
|
#pragma prefast(push)
|
||||||
#pragma prefast(suppress:26014, "OemNameOffset <= BaseNameOffset throughout this loop; OemName buffer previously allocated based on ShortName's length.")
|
#pragma prefast(suppress:26014, "OemNameOffset <= BaseNameOffset throughout this loop; OemName buffer previously allocated based on ShortName's length.")
|
||||||
|
#endif
|
||||||
if (FsRtlIsLeadDbcsCharacter(OemName.Buffer[OemNameOffset])) {
|
if (FsRtlIsLeadDbcsCharacter(OemName.Buffer[OemNameOffset])) {
|
||||||
|
#ifdef _MSC_VER
|
||||||
#pragma prefast(pop)
|
#pragma prefast(pop)
|
||||||
|
#endif
|
||||||
|
|
||||||
OemNameOffset += 2;
|
OemNameOffset += 2;
|
||||||
|
|
||||||
|
@ -796,11 +806,15 @@ Return Value:
|
||||||
// Now copy the dirent string into the biased name buffer.
|
// Now copy the dirent string into the biased name buffer.
|
||||||
//
|
//
|
||||||
|
|
||||||
|
#ifdef _MSC_VER
|
||||||
#pragma prefast(push)
|
#pragma prefast(push)
|
||||||
|
#endif
|
||||||
RtlCopyMemory( NextWchar,
|
RtlCopyMemory( NextWchar,
|
||||||
BiasedShortName.Buffer,
|
BiasedShortName.Buffer,
|
||||||
BiasedShortName.Length );
|
BiasedShortName.Length );
|
||||||
|
#ifdef _MSC_VER
|
||||||
#pragma prefast(pop)
|
#pragma prefast(pop)
|
||||||
|
#endif
|
||||||
|
|
||||||
Length += BiasedShortName.Length;
|
Length += BiasedShortName.Length;
|
||||||
NextWchar += (BiasedShortName.Length / sizeof( WCHAR ));
|
NextWchar += (BiasedShortName.Length / sizeof( WCHAR ));
|
||||||
|
|
|
@ -73,7 +73,7 @@ Abstract:
|
||||||
|
|
||||||
--*/
|
--*/
|
||||||
|
|
||||||
#include "CdProcs.h"
|
#include "cdprocs.h"
|
||||||
|
|
||||||
//
|
//
|
||||||
// The Bug check file id for this module
|
// The Bug check file id for this module
|
||||||
|
|
|
@ -14,7 +14,7 @@ Abstract:
|
||||||
|
|
||||||
--*/
|
--*/
|
||||||
|
|
||||||
#include "CdProcs.h"
|
#include "cdprocs.h"
|
||||||
|
|
||||||
//
|
//
|
||||||
// The Bug check file id for this module
|
// The Bug check file id for this module
|
||||||
|
@ -62,6 +62,7 @@ CdPnpCancelRemove (
|
||||||
IO_COMPLETION_ROUTINE CdPnpCompletionRoutine;
|
IO_COMPLETION_ROUTINE CdPnpCompletionRoutine;
|
||||||
|
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
|
NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
|
||||||
CdPnpCompletionRoutine (
|
CdPnpCompletionRoutine (
|
||||||
_In_ PDEVICE_OBJECT DeviceObject,
|
_In_ PDEVICE_OBJECT DeviceObject,
|
||||||
_In_ PIRP Irp,
|
_In_ PIRP Irp,
|
||||||
|
@ -142,7 +143,9 @@ Return Value:
|
||||||
// field that takes us past the end of an ordinary device object.
|
// field that takes us past the end of an ordinary device object.
|
||||||
//
|
//
|
||||||
|
|
||||||
|
#ifdef _MSC_VER
|
||||||
#pragma prefast(suppress: 28175, "this is a filesystem driver, touching the size member is allowed")
|
#pragma prefast(suppress: 28175, "this is a filesystem driver, touching the size member is allowed")
|
||||||
|
#endif
|
||||||
if (OurDeviceObject->DeviceObject.Size != sizeof(VOLUME_DEVICE_OBJECT) ||
|
if (OurDeviceObject->DeviceObject.Size != sizeof(VOLUME_DEVICE_OBJECT) ||
|
||||||
NodeType( &OurDeviceObject->Vcb ) != CDFS_NTC_VCB) {
|
NodeType( &OurDeviceObject->Vcb ) != CDFS_NTC_VCB) {
|
||||||
|
|
||||||
|
@ -812,6 +815,7 @@ Return Value:
|
||||||
//
|
//
|
||||||
|
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
|
NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
|
||||||
CdPnpCompletionRoutine (
|
CdPnpCompletionRoutine (
|
||||||
_In_ PDEVICE_OBJECT DeviceObject,
|
_In_ PDEVICE_OBJECT DeviceObject,
|
||||||
_In_ PIRP Irp,
|
_In_ PIRP Irp,
|
||||||
|
|
|
@ -13,7 +13,7 @@ Abstract:
|
||||||
|
|
||||||
--*/
|
--*/
|
||||||
|
|
||||||
#include "CdProcs.h"
|
#include "cdprocs.h"
|
||||||
|
|
||||||
//
|
//
|
||||||
// The Bug check file id for this module
|
// The Bug check file id for this module
|
||||||
|
|
|
@ -14,7 +14,7 @@ Abstract:
|
||||||
|
|
||||||
--*/
|
--*/
|
||||||
|
|
||||||
#include "CdProcs.h"
|
#include "cdprocs.h"
|
||||||
|
|
||||||
//
|
//
|
||||||
// The Bug check file id for this module
|
// The Bug check file id for this module
|
||||||
|
@ -34,14 +34,24 @@ Abstract:
|
||||||
// This macro just puts a nice little try-except around RtlZeroMemory
|
// This macro just puts a nice little try-except around RtlZeroMemory
|
||||||
//
|
//
|
||||||
|
|
||||||
|
#ifndef __REACTOS__
|
||||||
#define SafeZeroMemory(IC,AT,BYTE_COUNT) { \
|
#define SafeZeroMemory(IC,AT,BYTE_COUNT) { \
|
||||||
try { \
|
_SEH2_TRY { \
|
||||||
RtlZeroMemory( (AT), (BYTE_COUNT) ); \
|
RtlZeroMemory( (AT), (BYTE_COUNT) ); \
|
||||||
__pragma(warning(suppress: 6320)) \
|
__pragma(warning(suppress: 6320)) \
|
||||||
} except( EXCEPTION_EXECUTE_HANDLER ) { \
|
} _SEH2_EXCEPT( EXCEPTION_EXECUTE_HANDLER ) { \
|
||||||
CdRaiseStatus( IC, STATUS_INVALID_USER_BUFFER ); \
|
CdRaiseStatus( IC, STATUS_INVALID_USER_BUFFER ); \
|
||||||
} \
|
} _SEH2_END; \
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
#define SafeZeroMemory(IC,AT,BYTE_COUNT) { \
|
||||||
|
_SEH2_TRY { \
|
||||||
|
RtlZeroMemory( (AT), (BYTE_COUNT) ); \
|
||||||
|
} _SEH2_EXCEPT( EXCEPTION_EXECUTE_HANDLER ) { \
|
||||||
|
CdRaiseStatus( IC, STATUS_INVALID_USER_BUFFER ); \
|
||||||
|
} _SEH2_END; \
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
//
|
//
|
||||||
// Read ahead amount used for normal data files
|
// Read ahead amount used for normal data files
|
||||||
|
@ -186,7 +196,7 @@ Return Value:
|
||||||
// Use a try-finally to facilitate cleanup.
|
// Use a try-finally to facilitate cleanup.
|
||||||
//
|
//
|
||||||
|
|
||||||
try {
|
_SEH2_TRY {
|
||||||
|
|
||||||
//
|
//
|
||||||
// Verify the Fcb. Allow reads if this is a DASD handle that is
|
// Verify the Fcb. Allow reads if this is a DASD handle that is
|
||||||
|
@ -231,8 +241,8 @@ Return Value:
|
||||||
Status = FsRtlCheckOplock( CdGetFcbOplock(Fcb),
|
Status = FsRtlCheckOplock( CdGetFcbOplock(Fcb),
|
||||||
Irp,
|
Irp,
|
||||||
IrpContext,
|
IrpContext,
|
||||||
CdOplockComplete,
|
(PVOID)CdOplockComplete,/* ReactOS Change: GCC "assignment from incompatible pointer type" */
|
||||||
CdPrePostIrp );
|
(PVOID)CdPrePostIrp );/* ReactOS Change: GCC "assignment from incompatible pointer type" */
|
||||||
|
|
||||||
//
|
//
|
||||||
// If the result is not STATUS_SUCCESS then the Irp was completed
|
// If the result is not STATUS_SUCCESS then the Irp was completed
|
||||||
|
@ -530,7 +540,7 @@ Return Value:
|
||||||
}
|
}
|
||||||
|
|
||||||
try_exit: NOTHING;
|
try_exit: NOTHING;
|
||||||
} finally {
|
} _SEH2_FINALLY {
|
||||||
|
|
||||||
//
|
//
|
||||||
// Release the Fcb.
|
// Release the Fcb.
|
||||||
|
@ -540,7 +550,7 @@ Return Value:
|
||||||
|
|
||||||
CdReleaseFile( IrpContext, Fcb );
|
CdReleaseFile( IrpContext, Fcb );
|
||||||
}
|
}
|
||||||
}
|
} _SEH2_END;
|
||||||
|
|
||||||
//
|
//
|
||||||
// Post the request if we got CANT_WAIT.
|
// Post the request if we got CANT_WAIT.
|
||||||
|
|
|
@ -13,7 +13,7 @@ Abstract:
|
||||||
|
|
||||||
--*/
|
--*/
|
||||||
|
|
||||||
#include "CdProcs.h"
|
#include "cdprocs.h"
|
||||||
|
|
||||||
//
|
//
|
||||||
// The Bug check file id for this module
|
// The Bug check file id for this module
|
||||||
|
@ -96,7 +96,9 @@ Return Value:
|
||||||
switch (Type) {
|
switch (Type) {
|
||||||
case AcquireExclusive:
|
case AcquireExclusive:
|
||||||
|
|
||||||
|
#ifdef _MSC_VER
|
||||||
#pragma prefast( suppress:28137, "prefast believes Wait should be a constant, but this is ok for CDFS" )
|
#pragma prefast( suppress:28137, "prefast believes Wait should be a constant, but this is ok for CDFS" )
|
||||||
|
#endif
|
||||||
Acquired = ExAcquireResourceExclusiveLite( Resource, Wait );
|
Acquired = ExAcquireResourceExclusiveLite( Resource, Wait );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -133,6 +135,7 @@ Return Value:
|
||||||
_Requires_lock_held_(_Global_critical_region_)
|
_Requires_lock_held_(_Global_critical_region_)
|
||||||
_When_(return!=0, _Acquires_shared_lock_(*Fcb->Resource))
|
_When_(return!=0, _Acquires_shared_lock_(*Fcb->Resource))
|
||||||
BOOLEAN
|
BOOLEAN
|
||||||
|
NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
|
||||||
CdAcquireForCache (
|
CdAcquireForCache (
|
||||||
_Inout_ PFCB Fcb,
|
_Inout_ PFCB Fcb,
|
||||||
_In_ BOOLEAN Wait
|
_In_ BOOLEAN Wait
|
||||||
|
@ -171,6 +174,7 @@ Return Value:
|
||||||
_Requires_lock_held_(_Global_critical_region_)
|
_Requires_lock_held_(_Global_critical_region_)
|
||||||
_Releases_lock_(*Fcb->Resource)
|
_Releases_lock_(*Fcb->Resource)
|
||||||
VOID
|
VOID
|
||||||
|
NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
|
||||||
CdReleaseFromCache (
|
CdReleaseFromCache (
|
||||||
_Inout_ PFCB Fcb
|
_Inout_ PFCB Fcb
|
||||||
)
|
)
|
||||||
|
@ -205,6 +209,7 @@ Return Value:
|
||||||
|
|
||||||
|
|
||||||
BOOLEAN
|
BOOLEAN
|
||||||
|
NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
|
||||||
CdNoopAcquire (
|
CdNoopAcquire (
|
||||||
_In_ PVOID Fcb,
|
_In_ PVOID Fcb,
|
||||||
_In_ BOOLEAN Wait
|
_In_ BOOLEAN Wait
|
||||||
|
@ -240,6 +245,7 @@ Return Value:
|
||||||
|
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
|
NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
|
||||||
CdNoopRelease (
|
CdNoopRelease (
|
||||||
_In_ PVOID Fcb
|
_In_ PVOID Fcb
|
||||||
)
|
)
|
||||||
|
@ -267,10 +273,10 @@ Return Value:
|
||||||
UNREFERENCED_PARAMETER( Fcb );
|
UNREFERENCED_PARAMETER( Fcb );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
_Requires_lock_held_(_Global_critical_region_)
|
_Requires_lock_held_(_Global_critical_region_)
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
|
NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
|
||||||
CdFilterCallbackAcquireForCreateSection (
|
CdFilterCallbackAcquireForCreateSection (
|
||||||
_In_ PFS_FILTER_CALLBACK_DATA CallbackData,
|
_In_ PFS_FILTER_CALLBACK_DATA CallbackData,
|
||||||
_Unreferenced_parameter_ PVOID *CompletionContext
|
_Unreferenced_parameter_ PVOID *CompletionContext
|
||||||
|
@ -355,6 +361,7 @@ Return Value:
|
||||||
_Function_class_(FAST_IO_RELEASE_FILE)
|
_Function_class_(FAST_IO_RELEASE_FILE)
|
||||||
_Requires_lock_held_(_Global_critical_region_)
|
_Requires_lock_held_(_Global_critical_region_)
|
||||||
VOID
|
VOID
|
||||||
|
NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
|
||||||
CdReleaseForCreateSection (
|
CdReleaseForCreateSection (
|
||||||
_In_ PFILE_OBJECT FileObject
|
_In_ PFILE_OBJECT FileObject
|
||||||
)
|
)
|
||||||
|
|
|
@ -14,7 +14,7 @@ Abstract:
|
||||||
|
|
||||||
--*/
|
--*/
|
||||||
|
|
||||||
#include "CdProcs.h"
|
#include "cdprocs.h"
|
||||||
|
|
||||||
//
|
//
|
||||||
// The Bug check file id for this module
|
// The Bug check file id for this module
|
||||||
|
|
|
@ -14,7 +14,7 @@ Abstract:
|
||||||
|
|
||||||
--*/
|
--*/
|
||||||
|
|
||||||
#include "CdProcs.h"
|
#include "cdprocs.h"
|
||||||
|
|
||||||
//
|
//
|
||||||
// The Bug check file id for this module
|
// The Bug check file id for this module
|
||||||
|
@ -167,6 +167,7 @@ CdDeleteFcbNonpaged (
|
||||||
RTL_GENERIC_COMPARE_ROUTINE CdFcbTableCompare;
|
RTL_GENERIC_COMPARE_ROUTINE CdFcbTableCompare;
|
||||||
|
|
||||||
RTL_GENERIC_COMPARE_RESULTS
|
RTL_GENERIC_COMPARE_RESULTS
|
||||||
|
NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
|
||||||
CdFcbTableCompare (
|
CdFcbTableCompare (
|
||||||
_In_ PRTL_GENERIC_TABLE FcbTable,
|
_In_ PRTL_GENERIC_TABLE FcbTable,
|
||||||
_In_ PVOID Fid1,
|
_In_ PVOID Fid1,
|
||||||
|
@ -177,6 +178,7 @@ CdFcbTableCompare (
|
||||||
RTL_GENERIC_ALLOCATE_ROUTINE CdAllocateFcbTable;
|
RTL_GENERIC_ALLOCATE_ROUTINE CdAllocateFcbTable;
|
||||||
|
|
||||||
PVOID
|
PVOID
|
||||||
|
NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
|
||||||
CdAllocateFcbTable (
|
CdAllocateFcbTable (
|
||||||
_In_ PRTL_GENERIC_TABLE FcbTable,
|
_In_ PRTL_GENERIC_TABLE FcbTable,
|
||||||
_In_ CLONG ByteSize
|
_In_ CLONG ByteSize
|
||||||
|
@ -186,6 +188,7 @@ CdAllocateFcbTable (
|
||||||
RTL_GENERIC_FREE_ROUTINE CdDeallocateFcbTable;
|
RTL_GENERIC_FREE_ROUTINE CdDeallocateFcbTable;
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
|
NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
|
||||||
CdDeallocateFcbTable (
|
CdDeallocateFcbTable (
|
||||||
_In_ PRTL_GENERIC_TABLE FcbTable,
|
_In_ PRTL_GENERIC_TABLE FcbTable,
|
||||||
_In_ __drv_freesMem(Mem) _Post_invalid_ PVOID Buffer
|
_In_ __drv_freesMem(Mem) _Post_invalid_ PVOID Buffer
|
||||||
|
@ -318,19 +321,19 @@ Return Value:
|
||||||
// uninitialize the notify structures before returning.
|
// uninitialize the notify structures before returning.
|
||||||
//
|
//
|
||||||
|
|
||||||
try {
|
_SEH2_TRY {
|
||||||
|
|
||||||
Vcb->SwapVpb = FsRtlAllocatePoolWithTag( CdNonPagedPool,
|
Vcb->SwapVpb = FsRtlAllocatePoolWithTag( CdNonPagedPool,
|
||||||
sizeof( VPB ),
|
sizeof( VPB ),
|
||||||
TAG_VPB );
|
TAG_VPB );
|
||||||
}
|
}
|
||||||
finally {
|
_SEH2_FINALLY {
|
||||||
|
|
||||||
if (AbnormalTermination()) {
|
if (_SEH2_AbnormalTermination()) {
|
||||||
|
|
||||||
FsRtlNotifyUninitializeSync( &Vcb->NotifySync );
|
FsRtlNotifyUninitializeSync( &Vcb->NotifySync );
|
||||||
}
|
}
|
||||||
}
|
} _SEH2_END;
|
||||||
|
|
||||||
//
|
//
|
||||||
// Nothing beyond this point should raise.
|
// Nothing beyond this point should raise.
|
||||||
|
@ -475,7 +478,7 @@ Return Value:
|
||||||
// Use a try-finally to facilitate cleanup.
|
// Use a try-finally to facilitate cleanup.
|
||||||
//
|
//
|
||||||
|
|
||||||
try {
|
_SEH2_TRY {
|
||||||
|
|
||||||
//
|
//
|
||||||
// Copy the block size and compute the various block masks.
|
// Copy the block size and compute the various block masks.
|
||||||
|
@ -862,10 +865,10 @@ Return Value:
|
||||||
SetFlag( Vcb->VcbState, VCB_STATE_ISO );
|
SetFlag( Vcb->VcbState, VCB_STATE_ISO );
|
||||||
}
|
}
|
||||||
|
|
||||||
} finally {
|
} _SEH2_FINALLY {
|
||||||
|
|
||||||
if (UnlockVcb) { CdUnlockVcb( IrpContext, Vcb ); }
|
if (UnlockVcb) { CdUnlockVcb( IrpContext, Vcb ); }
|
||||||
}
|
} _SEH2_END;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -968,7 +971,9 @@ Return Value:
|
||||||
//
|
//
|
||||||
// Now delete the volume device object.
|
// Now delete the volume device object.
|
||||||
//
|
//
|
||||||
|
#ifdef _MSC_VER
|
||||||
#pragma prefast( suppress: __WARNING_BUFFER_UNDERFLOW, "This is ok, the Vcb is embedded in our volume device object, and that is what we are really deleting." )
|
#pragma prefast( suppress: __WARNING_BUFFER_UNDERFLOW, "This is ok, the Vcb is embedded in our volume device object, and that is what we are really deleting." )
|
||||||
|
#endif
|
||||||
IoDeleteDevice( (PDEVICE_OBJECT) CONTAINING_RECORD( Vcb,
|
IoDeleteDevice( (PDEVICE_OBJECT) CONTAINING_RECORD( Vcb,
|
||||||
VOLUME_DEVICE_OBJECT,
|
VOLUME_DEVICE_OBJECT,
|
||||||
Vcb ));
|
Vcb ));
|
||||||
|
@ -1069,7 +1074,9 @@ Return Value:
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
|
||||||
|
#ifdef _MSC_VER
|
||||||
#pragma prefast( suppress: __WARNING_USE_OTHER_FUNCTION, "This is a bug." )
|
#pragma prefast( suppress: __WARNING_USE_OTHER_FUNCTION, "This is a bug." )
|
||||||
|
#endif
|
||||||
CdBugCheck( 0, 0, 0 );
|
CdBugCheck( 0, 0, 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1262,7 +1269,7 @@ Return Value:
|
||||||
|
|
||||||
CdLockFcb( IrpContext, Fcb );
|
CdLockFcb( IrpContext, Fcb );
|
||||||
|
|
||||||
try {
|
_SEH2_TRY {
|
||||||
|
|
||||||
//
|
//
|
||||||
// Initialize the common header in the Fcb. The node type is already
|
// Initialize the common header in the Fcb. The node type is already
|
||||||
|
@ -1385,10 +1392,10 @@ Return Value:
|
||||||
CdInsertFcbTable( IrpContext, Fcb );
|
CdInsertFcbTable( IrpContext, Fcb );
|
||||||
SetFlag( Fcb->FcbState, FCB_STATE_IN_FCB_TABLE );
|
SetFlag( Fcb->FcbState, FCB_STATE_IN_FCB_TABLE );
|
||||||
|
|
||||||
} finally {
|
} _SEH2_FINALLY {
|
||||||
|
|
||||||
CdUnlockFcb( IrpContext, Fcb );
|
CdUnlockFcb( IrpContext, Fcb );
|
||||||
}
|
} _SEH2_END;
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -1600,7 +1607,12 @@ Return Value:
|
||||||
// occur in the context of fileobjects (i.e., mount).
|
// occur in the context of fileobjects (i.e., mount).
|
||||||
//
|
//
|
||||||
|
|
||||||
|
#ifndef __REACTOS__
|
||||||
if (IrpSp->DeviceObject == CdData.FileSystemDeviceObject) {
|
if (IrpSp->DeviceObject == CdData.FileSystemDeviceObject) {
|
||||||
|
#else
|
||||||
|
if (IrpSp->DeviceObject == CdData.FileSystemDeviceObject ||
|
||||||
|
IrpSp->DeviceObject == CdData.HddFileSystemDeviceObject) {
|
||||||
|
#endif
|
||||||
|
|
||||||
if (IrpSp->FileObject != NULL &&
|
if (IrpSp->FileObject != NULL &&
|
||||||
IrpSp->MajorFunction != IRP_MJ_CREATE &&
|
IrpSp->MajorFunction != IRP_MJ_CREATE &&
|
||||||
|
@ -1678,7 +1690,12 @@ Return Value:
|
||||||
// the Vcb field.
|
// the Vcb field.
|
||||||
//
|
//
|
||||||
|
|
||||||
|
#ifndef __REACTOS__
|
||||||
if (IrpSp->DeviceObject != CdData.FileSystemDeviceObject) {
|
if (IrpSp->DeviceObject != CdData.FileSystemDeviceObject) {
|
||||||
|
#else
|
||||||
|
if (IrpSp->DeviceObject != CdData.FileSystemDeviceObject &&
|
||||||
|
IrpSp->DeviceObject != CdData.HddFileSystemDeviceObject) {
|
||||||
|
#endif
|
||||||
|
|
||||||
NewIrpContext->Vcb = &((PVOLUME_DEVICE_OBJECT) IrpSp->DeviceObject)->Vcb;
|
NewIrpContext->Vcb = &((PVOLUME_DEVICE_OBJECT) IrpSp->DeviceObject)->Vcb;
|
||||||
|
|
||||||
|
@ -1959,7 +1976,7 @@ Return Value:
|
||||||
// Use a try-finally to safely clear the top-level field.
|
// Use a try-finally to safely clear the top-level field.
|
||||||
//
|
//
|
||||||
|
|
||||||
try {
|
_SEH2_TRY {
|
||||||
|
|
||||||
//
|
//
|
||||||
// Loop until we find an Fcb we can't remove.
|
// Loop until we find an Fcb we can't remove.
|
||||||
|
@ -2063,7 +2080,7 @@ Return Value:
|
||||||
|
|
||||||
} while (CurrentFcb != NULL);
|
} while (CurrentFcb != NULL);
|
||||||
|
|
||||||
} finally {
|
} _SEH2_FINALLY {
|
||||||
|
|
||||||
//
|
//
|
||||||
// Release the current Fcb if we have acquired it.
|
// Release the current Fcb if we have acquired it.
|
||||||
|
@ -2079,7 +2096,7 @@ Return Value:
|
||||||
//
|
//
|
||||||
|
|
||||||
ClearFlag( IrpContext->TopLevel->Flags, IRP_CONTEXT_FLAG_IN_TEARDOWN );
|
ClearFlag( IrpContext->TopLevel->Flags, IRP_CONTEXT_FLAG_IN_TEARDOWN );
|
||||||
}
|
} _SEH2_END;
|
||||||
|
|
||||||
*RemovedStartingFcb = (CurrentFcb != StartingFcb);
|
*RemovedStartingFcb = (CurrentFcb != StartingFcb);
|
||||||
return;
|
return;
|
||||||
|
@ -2493,7 +2510,7 @@ Return Value:
|
||||||
Vcb->PathTableFcb = NULL;
|
Vcb->PathTableFcb = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
CdDeallocateFcbIndex( IrpContext, Fcb );
|
CdDeallocateFcbIndex( IrpContext, *(PVOID*)&Fcb );/* ReactOS Change: GCC "passing argument 1 from incompatible pointer type" */
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case CDFS_NTC_FCB_DATA :
|
case CDFS_NTC_FCB_DATA :
|
||||||
|
@ -2511,7 +2528,7 @@ Return Value:
|
||||||
Vcb->VolumeDasdFcb = NULL;
|
Vcb->VolumeDasdFcb = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
CdDeallocateFcbData( IrpContext, Fcb );
|
CdDeallocateFcbData( IrpContext, *(PVOID*)&Fcb );/* ReactOS Change: GCC "passing argument 1 from incompatible pointer type" */
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
|
@ -2615,7 +2632,7 @@ Return Value:
|
||||||
|
|
||||||
ExDeleteResourceLite( &FcbNonpaged->FcbResource );
|
ExDeleteResourceLite( &FcbNonpaged->FcbResource );
|
||||||
|
|
||||||
CdDeallocateFcbNonpaged( IrpContext, FcbNonpaged );
|
CdDeallocateFcbNonpaged( IrpContext, *(PVOID*)&FcbNonpaged );/* ReactOS Change: GCC "passing argument 1 from incompatible pointer type" */
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -2626,6 +2643,7 @@ Return Value:
|
||||||
//
|
//
|
||||||
|
|
||||||
RTL_GENERIC_COMPARE_RESULTS
|
RTL_GENERIC_COMPARE_RESULTS
|
||||||
|
NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
|
||||||
CdFcbTableCompare (
|
CdFcbTableCompare (
|
||||||
_In_ PRTL_GENERIC_TABLE FcbTable,
|
_In_ PRTL_GENERIC_TABLE FcbTable,
|
||||||
_In_ PVOID Fid1,
|
_In_ PVOID Fid1,
|
||||||
|
@ -2683,6 +2701,7 @@ Return Value:
|
||||||
//
|
//
|
||||||
|
|
||||||
PVOID
|
PVOID
|
||||||
|
NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
|
||||||
CdAllocateFcbTable (
|
CdAllocateFcbTable (
|
||||||
_In_ PRTL_GENERIC_TABLE FcbTable,
|
_In_ PRTL_GENERIC_TABLE FcbTable,
|
||||||
_In_ CLONG ByteSize
|
_In_ CLONG ByteSize
|
||||||
|
@ -2719,6 +2738,7 @@ Return Value:
|
||||||
// Local support routine
|
// Local support routine
|
||||||
//
|
//
|
||||||
VOID
|
VOID
|
||||||
|
NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
|
||||||
CdDeallocateFcbTable (
|
CdDeallocateFcbTable (
|
||||||
_In_ PRTL_GENERIC_TABLE FcbTable,
|
_In_ PRTL_GENERIC_TABLE FcbTable,
|
||||||
_In_ __drv_freesMem(Mem) _Post_invalid_ PVOID Buffer
|
_In_ __drv_freesMem(Mem) _Post_invalid_ PVOID Buffer
|
||||||
|
|
|
@ -13,7 +13,7 @@ Abstract:
|
||||||
|
|
||||||
--*/
|
--*/
|
||||||
|
|
||||||
#include "CdProcs.h"
|
#include "cdprocs.h"
|
||||||
|
|
||||||
//
|
//
|
||||||
// The Bug check file id for this module
|
// The Bug check file id for this module
|
||||||
|
@ -92,7 +92,7 @@ Return Value:
|
||||||
Vcb = &CONTAINING_RECORD( IrpSp->DeviceObject,
|
Vcb = &CONTAINING_RECORD( IrpSp->DeviceObject,
|
||||||
VOLUME_DEVICE_OBJECT,
|
VOLUME_DEVICE_OBJECT,
|
||||||
DeviceObject )->Vcb;
|
DeviceObject )->Vcb;
|
||||||
try {
|
_SEH2_TRY {
|
||||||
|
|
||||||
//
|
//
|
||||||
// Send down the verify FSCTL. Note that this is sent to the
|
// Send down the verify FSCTL. Note that this is sent to the
|
||||||
|
@ -206,7 +206,7 @@ Return Value:
|
||||||
Status = CdFsdPostRequest( IrpContext, Irp );
|
Status = CdFsdPostRequest( IrpContext, Irp );
|
||||||
}
|
}
|
||||||
|
|
||||||
} except(CdExceptionFilter( IrpContext, GetExceptionInformation() )) {
|
} _SEH2_EXCEPT(CdExceptionFilter( IrpContext, _SEH2_GetExceptionInformation() )) {
|
||||||
|
|
||||||
//
|
//
|
||||||
// We had some trouble trying to perform the verify or raised
|
// We had some trouble trying to perform the verify or raised
|
||||||
|
@ -214,8 +214,8 @@ Return Value:
|
||||||
// the error status that we get back from the execption code.
|
// the error status that we get back from the execption code.
|
||||||
//
|
//
|
||||||
|
|
||||||
Status = CdProcessException( IrpContext, Irp, GetExceptionCode() );
|
Status = CdProcessException( IrpContext, Irp, _SEH2_GetExceptionCode() );
|
||||||
}
|
} _SEH2_END;
|
||||||
|
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
@ -384,7 +384,9 @@ Return Value:
|
||||||
|
|
||||||
IoAcquireVpbSpinLock( &SavedIrql );
|
IoAcquireVpbSpinLock( &SavedIrql );
|
||||||
|
|
||||||
|
#ifdef _MSC_VER
|
||||||
#pragma prefast(suppress: 28175, "this is a filesystem driver, touching the vpb is allowed")
|
#pragma prefast(suppress: 28175, "this is a filesystem driver, touching the vpb is allowed")
|
||||||
|
#endif
|
||||||
if (Vcb->Vpb->RealDevice->Vpb == Vcb->Vpb) {
|
if (Vcb->Vpb->RealDevice->Vpb == Vcb->Vpb) {
|
||||||
|
|
||||||
CdMarkRealDevForVerify( Vcb->Vpb->RealDevice);
|
CdMarkRealDevForVerify( Vcb->Vpb->RealDevice);
|
||||||
|
@ -602,6 +604,9 @@ Return Value:
|
||||||
CdRaiseStatus( IrpContext, STATUS_FILE_INVALID );
|
CdRaiseStatus( IrpContext, STATUS_FILE_INVALID );
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
/* ReactOS Change: GCC "enumeration value not handled in switch" */
|
||||||
|
default: break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -881,7 +886,9 @@ Return Value:
|
||||||
// mount request.
|
// mount request.
|
||||||
//
|
//
|
||||||
|
|
||||||
|
#ifdef _MSC_VER
|
||||||
#pragma prefast(suppress: 28175, "this is a filesystem driver, touching the vpb is allowed")
|
#pragma prefast(suppress: 28175, "this is a filesystem driver, touching the vpb is allowed")
|
||||||
|
#endif
|
||||||
if (OldVpb->RealDevice->Vpb == OldVpb) {
|
if (OldVpb->RealDevice->Vpb == OldVpb) {
|
||||||
|
|
||||||
//
|
//
|
||||||
|
@ -897,11 +904,15 @@ Return Value:
|
||||||
Vcb->SwapVpb->Type = IO_TYPE_VPB;
|
Vcb->SwapVpb->Type = IO_TYPE_VPB;
|
||||||
Vcb->SwapVpb->Size = sizeof( VPB );
|
Vcb->SwapVpb->Size = sizeof( VPB );
|
||||||
|
|
||||||
|
#ifdef _MSC_VER
|
||||||
#pragma prefast(push)
|
#pragma prefast(push)
|
||||||
#pragma prefast(disable: 28175, "this is a filesystem driver, touching the vpb is allowed")
|
#pragma prefast(disable: 28175, "this is a filesystem driver, touching the vpb is allowed")
|
||||||
|
#endif
|
||||||
Vcb->SwapVpb->RealDevice = OldVpb->RealDevice;
|
Vcb->SwapVpb->RealDevice = OldVpb->RealDevice;
|
||||||
Vcb->SwapVpb->RealDevice->Vpb = Vcb->SwapVpb;
|
Vcb->SwapVpb->RealDevice->Vpb = Vcb->SwapVpb;
|
||||||
|
#ifdef _MSC_VER
|
||||||
#pragma prefast(pop)
|
#pragma prefast(pop)
|
||||||
|
#endif
|
||||||
|
|
||||||
Vcb->SwapVpb->Flags = FlagOn( OldVpb->Flags, VPB_REMOVE_PENDING );
|
Vcb->SwapVpb->Flags = FlagOn( OldVpb->Flags, VPB_REMOVE_PENDING );
|
||||||
|
|
||||||
|
|
|
@ -14,7 +14,7 @@ Abstract:
|
||||||
|
|
||||||
--*/
|
--*/
|
||||||
|
|
||||||
#include "CdProcs.h"
|
#include "cdprocs.h"
|
||||||
|
|
||||||
//
|
//
|
||||||
// The Bug check file id for this module
|
// The Bug check file id for this module
|
||||||
|
@ -59,6 +59,10 @@ CdQueryFsAttributeInfo (
|
||||||
_Inout_ PULONG Length
|
_Inout_ PULONG Length
|
||||||
);
|
);
|
||||||
|
|
||||||
|
#ifdef __REACTOS__
|
||||||
|
#define PFILE_FS_SECTOR_SIZE_INFORMATION PVOID
|
||||||
|
#endif
|
||||||
|
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
CdQueryFsSectorSizeInfo (
|
CdQueryFsSectorSizeInfo (
|
||||||
_In_ PIRP_CONTEXT IrpContext,
|
_In_ PIRP_CONTEXT IrpContext,
|
||||||
|
@ -141,7 +145,7 @@ Return Value:
|
||||||
// Use a try-finally to facilitate cleanup.
|
// Use a try-finally to facilitate cleanup.
|
||||||
//
|
//
|
||||||
|
|
||||||
try {
|
_SEH2_TRY {
|
||||||
|
|
||||||
//
|
//
|
||||||
// Verify the Vcb.
|
// Verify the Vcb.
|
||||||
|
@ -184,6 +188,9 @@ Return Value:
|
||||||
Status = CdQueryFsSectorSizeInfo( IrpContext, Fcb->Vcb, Irp->AssociatedIrp.SystemBuffer, &Length );
|
Status = CdQueryFsSectorSizeInfo( IrpContext, Fcb->Vcb, Irp->AssociatedIrp.SystemBuffer, &Length );
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* ReactOS Change: GCC "enumeration value not handled in switch" */
|
||||||
|
default: break;
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
|
@ -192,14 +199,14 @@ Return Value:
|
||||||
|
|
||||||
Irp->IoStatus.Information = IrpSp->Parameters.QueryVolume.Length - Length;
|
Irp->IoStatus.Information = IrpSp->Parameters.QueryVolume.Length - Length;
|
||||||
|
|
||||||
} finally {
|
} _SEH2_FINALLY {
|
||||||
|
|
||||||
//
|
//
|
||||||
// Release the Vcb.
|
// Release the Vcb.
|
||||||
//
|
//
|
||||||
|
|
||||||
CdReleaseVcb( IrpContext, Fcb->Vcb );
|
CdReleaseVcb( IrpContext, Fcb->Vcb );
|
||||||
}
|
} _SEH2_END;
|
||||||
|
|
||||||
//
|
//
|
||||||
// Complete the request if we didn't raise.
|
// Complete the request if we didn't raise.
|
||||||
|
|
|
@ -1,985 +0,0 @@
|
||||||
Index: drivers/filesystems/cdfs_new/deviosup.c
|
|
||||||
===================================================================
|
|
||||||
--- drivers/filesystems/cdfs_new/deviosup.c (revision 34615)
|
|
||||||
+++ drivers/filesystems/cdfs_new/deviosup.c (working copy)
|
|
||||||
@@ -165,6 +165,7 @@
|
|
||||||
);
|
|
||||||
|
|
||||||
NTSTATUS
|
|
||||||
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
|
|
||||||
CdMultiSyncCompletionRoutine (
|
|
||||||
IN PDEVICE_OBJECT DeviceObject,
|
|
||||||
IN PIRP Irp,
|
|
||||||
@@ -172,6 +173,7 @@
|
|
||||||
);
|
|
||||||
|
|
||||||
NTSTATUS
|
|
||||||
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
|
|
||||||
CdMultiAsyncCompletionRoutine (
|
|
||||||
IN PDEVICE_OBJECT DeviceObject,
|
|
||||||
IN PIRP Irp,
|
|
||||||
@@ -179,6 +181,7 @@
|
|
||||||
);
|
|
||||||
|
|
||||||
NTSTATUS
|
|
||||||
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
|
|
||||||
CdSingleSyncCompletionRoutine (
|
|
||||||
IN PDEVICE_OBJECT DeviceObject,
|
|
||||||
IN PIRP Irp,
|
|
||||||
@@ -186,6 +189,7 @@
|
|
||||||
);
|
|
||||||
|
|
||||||
NTSTATUS
|
|
||||||
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
|
|
||||||
CdSingleAsyncCompletionRoutine (
|
|
||||||
IN PDEVICE_OBJECT DeviceObject,
|
|
||||||
IN PIRP Irp,
|
|
||||||
@@ -2943,6 +2947,7 @@
|
|
||||||
//
|
|
||||||
|
|
||||||
NTSTATUS
|
|
||||||
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
|
|
||||||
CdMultiSyncCompletionRoutine (
|
|
||||||
IN PDEVICE_OBJECT DeviceObject,
|
|
||||||
IN PIRP Irp,
|
|
||||||
@@ -3029,6 +3034,7 @@
|
|
||||||
//
|
|
||||||
|
|
||||||
NTSTATUS
|
|
||||||
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
|
|
||||||
CdMultiAsyncCompletionRoutine (
|
|
||||||
IN PDEVICE_OBJECT DeviceObject,
|
|
||||||
IN PIRP Irp,
|
|
||||||
@@ -3066,7 +3072,8 @@
|
|
||||||
|
|
||||||
{
|
|
||||||
PCD_IO_CONTEXT IoContext = Context;
|
|
||||||
- PIO_STACK_LOCATION IrpSp = IoGetCurrentIrpStackLocation( Irp );
|
|
||||||
+ /* ReactOS Change: GCC Unused Variable */
|
|
||||||
+ //PIO_STACK_LOCATION IrpSp = IoGetCurrentIrpStackLocation( Irp );
|
|
||||||
|
|
||||||
AssertVerifyDeviceIrp( Irp );
|
|
||||||
|
|
||||||
@@ -3148,6 +3155,7 @@
|
|
||||||
//
|
|
||||||
|
|
||||||
NTSTATUS
|
|
||||||
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
|
|
||||||
CdSingleSyncCompletionRoutine (
|
|
||||||
IN PDEVICE_OBJECT DeviceObject,
|
|
||||||
IN PIRP Irp,
|
|
||||||
@@ -3207,6 +3215,7 @@
|
|
||||||
//
|
|
||||||
|
|
||||||
NTSTATUS
|
|
||||||
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
|
|
||||||
CdSingleAsyncCompletionRoutine (
|
|
||||||
IN PDEVICE_OBJECT DeviceObject,
|
|
||||||
IN PIRP Irp,
|
|
||||||
@@ -3267,7 +3276,7 @@
|
|
||||||
// and finally, free the context record.
|
|
||||||
//
|
|
||||||
|
|
||||||
- CdFreeIoContext( (PCD_IO_CONTEXT) Context );
|
|
||||||
+ CdFreeIoContext( Context ); /* ReactOS Change: GCC "error: invalid lvalue in unary '&'" */
|
|
||||||
return STATUS_SUCCESS;
|
|
||||||
|
|
||||||
UNREFERENCED_PARAMETER( DeviceObject );
|
|
||||||
Index: drivers/filesystems/cdfs_new/dirctrl.c
|
|
||||||
===================================================================
|
|
||||||
--- drivers/filesystems/cdfs_new/dirctrl.c (revision 34615)
|
|
||||||
+++ drivers/filesystems/cdfs_new/dirctrl.c (working copy)
|
|
||||||
@@ -209,7 +209,7 @@
|
|
||||||
|
|
||||||
ULONG BaseLength;
|
|
||||||
|
|
||||||
- PFILE_BOTH_DIR_INFORMATION DirInfo;
|
|
||||||
+ PFILE_BOTH_DIR_INFORMATION DirInfo = NULL; /* ReactOS Change: GCC Uninit var */
|
|
||||||
PFILE_NAMES_INFORMATION NamesInfo;
|
|
||||||
PFILE_ID_FULL_DIR_INFORMATION IdFullDirInfo;
|
|
||||||
PFILE_ID_BOTH_DIR_INFORMATION IdBothDirInfo;
|
|
||||||
@@ -579,6 +579,9 @@
|
|
||||||
NamesInfo->FileNameLength = FileNameBytes + SeparatorBytes + VersionStringBytes;
|
|
||||||
|
|
||||||
break;
|
|
||||||
+
|
|
||||||
+ /* ReactOS Change: GCC "enumeration value not handled in switch" */
|
|
||||||
+ default: break;
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
Index: drivers/filesystems/cdfs_new/create.c
|
|
||||||
===================================================================
|
|
||||||
--- drivers/filesystems/cdfs_new/create.c (revision 34615)
|
|
||||||
+++ drivers/filesystems/cdfs_new/create.c (working copy)
|
|
||||||
@@ -2106,7 +2106,7 @@
|
|
||||||
PFCB NextFcb;
|
|
||||||
PFCB ParentFcb = NULL;
|
|
||||||
|
|
||||||
- NTSTATUS Status;
|
|
||||||
+ NTSTATUS Status = STATUS_SUCCESS; /* ReactOS Change: GCC uninitialized variable */
|
|
||||||
|
|
||||||
PAGED_CODE();
|
|
||||||
|
|
||||||
@@ -2757,8 +2757,8 @@
|
|
||||||
OplockStatus = FsRtlCheckOplock( &Fcb->Oplock,
|
|
||||||
IrpContext->Irp,
|
|
||||||
IrpContext,
|
|
||||||
- CdOplockComplete,
|
|
||||||
- CdPrePostIrp );
|
|
||||||
+ (PVOID)CdOplockComplete, /* ReactOS Change: GCC "assignment from incompatible pointer type" */
|
|
||||||
+ (PVOID)CdPrePostIrp ); /* ReactOS Change: GCC "assignment from incompatible pointer type" */
|
|
||||||
|
|
||||||
if (OplockStatus == STATUS_PENDING) {
|
|
||||||
|
|
||||||
@@ -2789,8 +2789,8 @@
|
|
||||||
OplockStatus = FsRtlCheckOplock( &Fcb->Oplock,
|
|
||||||
IrpContext->Irp,
|
|
||||||
IrpContext,
|
|
||||||
- CdOplockComplete,
|
|
||||||
- CdPrePostIrp );
|
|
||||||
+ (PVOID)CdOplockComplete,/* ReactOS Change: GCC "assignment from incompatible pointer type" */
|
|
||||||
+ (PVOID)CdPrePostIrp );/* ReactOS Change: GCC "assignment from incompatible pointer type" */
|
|
||||||
|
|
||||||
if (OplockStatus == STATUS_PENDING) {
|
|
||||||
|
|
||||||
Index: drivers/filesystems/cdfs_new/devctrl.c
|
|
||||||
===================================================================
|
|
||||||
--- drivers/filesystems/cdfs_new/devctrl.c (revision 34615)
|
|
||||||
+++ drivers/filesystems/cdfs_new/devctrl.c (working copy)
|
|
||||||
@@ -27,6 +27,7 @@
|
|
||||||
//
|
|
||||||
|
|
||||||
NTSTATUS
|
|
||||||
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
|
|
||||||
CdDevCtrlCompletionRoutine (
|
|
||||||
IN PDEVICE_OBJECT DeviceObject,
|
|
||||||
IN PIRP Irp,
|
|
||||||
@@ -64,7 +64,7 @@
|
|
||||||
PIO_STACK_LOCATION IrpSp;
|
|
||||||
PIO_STACK_LOCATION NextIrpSp;
|
|
||||||
|
|
||||||
- PVOID TargetBuffer = NULL;
|
|
||||||
+// PVOID TargetBuffer = NULL; /* ReactOS Change: GCC unused variable */
|
|
||||||
|
|
||||||
PAGED_CODE();
|
|
||||||
|
|
||||||
@@ -171,6 +172,7 @@
|
|
||||||
//
|
|
||||||
|
|
||||||
NTSTATUS
|
|
||||||
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
|
|
||||||
CdDevCtrlCompletionRoutine (
|
|
||||||
IN PDEVICE_OBJECT DeviceObject,
|
|
||||||
IN PIRP Irp,
|
|
||||||
Index: drivers/filesystems/cdfs_new/close.c
|
|
||||||
===================================================================
|
|
||||||
--- drivers/filesystems/cdfs_new/close.c (revision 34615)
|
|
||||||
+++ drivers/filesystems/cdfs_new/close.c (working copy)
|
|
||||||
@@ -77,6 +77,7 @@
|
|
||||||
);
|
|
||||||
|
|
||||||
VOID
|
|
||||||
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
|
|
||||||
CdCloseWorker (
|
|
||||||
IN PDEVICE_OBJECT DeviceObject,
|
|
||||||
IN PVOID Context
|
|
||||||
@@ -136,9 +137,9 @@
|
|
||||||
//
|
|
||||||
// Continue processing until there are no more closes to process.
|
|
||||||
//
|
|
||||||
+ /* ReactOS Change: "GCC suggest parentheses around assignment used as truth value" */
|
|
||||||
+ while ((IrpContext = CdRemoveClose( Vcb ))) {
|
|
||||||
|
|
||||||
- while (IrpContext = CdRemoveClose( Vcb )) {
|
|
||||||
-
|
|
||||||
//
|
|
||||||
// If we don't have an IrpContext then use the one on the stack.
|
|
||||||
// Initialize it for this request.
|
|
||||||
@@ -165,7 +166,7 @@
|
|
||||||
// Free the IrpContextLite.
|
|
||||||
//
|
|
||||||
|
|
||||||
- CdFreeIrpContextLite( (PIRP_CONTEXT_LITE) IrpContext );
|
|
||||||
+ CdFreeIrpContextLite( IrpContext ); /* ReactOS Change: GCC "error: invalid lvalue in unary '&'" */
|
|
||||||
|
|
||||||
//
|
|
||||||
// Remember we have the IrpContext from the stack.
|
|
||||||
@@ -662,6 +663,7 @@
|
|
||||||
}
|
|
||||||
|
|
||||||
VOID
|
|
||||||
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
|
|
||||||
CdCloseWorker (
|
|
||||||
IN PDEVICE_OBJECT DeviceObject,
|
|
||||||
IN PVOID Context
|
|
||||||
Index: drivers/filesystems/cdfs_new/dirsup.c
|
|
||||||
===================================================================
|
|
||||||
--- drivers/filesystems/cdfs_new/dirsup.c (revision 34615)
|
|
||||||
+++ drivers/filesystems/cdfs_new/dirsup.c (working copy)
|
|
||||||
@@ -465,7 +465,7 @@
|
|
||||||
// Save a pointer to the time stamps.
|
|
||||||
//
|
|
||||||
|
|
||||||
- Dirent->CdTime = RawDirent->RecordTime;
|
|
||||||
+ Dirent->CdTime = (PCHAR)RawDirent->RecordTime; /* ReactOS change: GCC "pointer targets in assignment differ in signedness" */
|
|
||||||
|
|
||||||
//
|
|
||||||
// Copy the dirent flags.
|
|
||||||
@@ -501,7 +501,7 @@
|
|
||||||
}
|
|
||||||
|
|
||||||
Dirent->FileNameLen = RawDirent->FileIdLen;
|
|
||||||
- Dirent->FileName = RawDirent->FileId;
|
|
||||||
+ Dirent->FileName = (PCHAR)RawDirent->FileId; /* ReactOS change: GCC "pointer targets in assignment differ in signedness" */
|
|
||||||
|
|
||||||
//
|
|
||||||
// If there are any remaining bytes at the end of the dirent then
|
|
||||||
@@ -1457,7 +1457,7 @@
|
|
||||||
--*/
|
|
||||||
|
|
||||||
{
|
|
||||||
- XA_EXTENT_TYPE ExtentType;
|
|
||||||
+ XA_EXTENT_TYPE ExtentType = 0; /* ReactOS Change: GCC Uninit var */
|
|
||||||
PCOMPOUND_DIRENT CurrentCompoundDirent;
|
|
||||||
PDIRENT CurrentDirent;
|
|
||||||
|
|
||||||
Index: drivers/filesystems/cdfs_new/read.c
|
|
||||||
===================================================================
|
|
||||||
--- drivers/filesystems/cdfs_new/read.c (revision 34615)
|
|
||||||
+++ drivers/filesystems/cdfs_new/read.c (working copy)
|
|
||||||
@@ -79,7 +79,7 @@
|
|
||||||
--*/
|
|
||||||
|
|
||||||
{
|
|
||||||
- NTSTATUS Status;
|
|
||||||
+ NTSTATUS Status = STATUS_SUCCESS; /* ReactOS Change: GCC Uninit var */
|
|
||||||
PIO_STACK_LOCATION IrpSp = IoGetCurrentIrpStackLocation( Irp );
|
|
||||||
|
|
||||||
TYPE_OF_OPEN TypeOfOpen;
|
|
||||||
@@ -225,8 +225,8 @@
|
|
||||||
Status = FsRtlCheckOplock( &Fcb->Oplock,
|
|
||||||
Irp,
|
|
||||||
IrpContext,
|
|
||||||
- CdOplockComplete,
|
|
||||||
- CdPrePostIrp );
|
|
||||||
+ (PVOID)CdOplockComplete,/* ReactOS Change: GCC "assignment from incompatible pointer type" */
|
|
||||||
+ (PVOID)CdPrePostIrp );/* ReactOS Change: GCC "assignment from incompatible pointer type" */
|
|
||||||
|
|
||||||
//
|
|
||||||
// If the result is not STATUS_SUCCESS then the Irp was completed
|
|
||||||
Index: drivers/filesystems/cdfs_new/volinfo.c
|
|
||||||
===================================================================
|
|
||||||
--- drivers/filesystems/cdfs_new/volinfo.c (revision 34615)
|
|
||||||
+++ drivers/filesystems/cdfs_new/volinfo.c (working copy)
|
|
||||||
@@ -166,8 +166,11 @@
|
|
||||||
|
|
||||||
Status = CdQueryFsAttributeInfo( IrpContext, Fcb->Vcb, Irp->AssociatedIrp.SystemBuffer, &Length );
|
|
||||||
break;
|
|
||||||
+
|
|
||||||
+ /* ReactOS Change: GCC "enumeration value not handled in switch" */
|
|
||||||
+ default: break;
|
|
||||||
}
|
|
||||||
-
|
|
||||||
+
|
|
||||||
//
|
|
||||||
// Set the information field to the number of bytes actually filled in
|
|
||||||
//
|
|
||||||
Index: drivers/filesystems/cdfs_new/cddata.c
|
|
||||||
===================================================================
|
|
||||||
--- drivers/filesystems/cdfs_new/cddata.c (revision 34615)
|
|
||||||
+++ drivers/filesystems/cdfs_new/cddata.c (working copy)
|
|
||||||
@@ -417,7 +417,6 @@
|
|
||||||
return Status;
|
|
||||||
}
|
|
||||||
|
|
||||||
-
|
|
||||||
#ifdef CD_SANITY
|
|
||||||
|
|
||||||
VOID
|
|
||||||
@@ -481,7 +480,6 @@
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
-
|
|
||||||
LONG
|
|
||||||
CdExceptionFilter (
|
|
||||||
IN PIRP_CONTEXT IrpContext,
|
|
||||||
@@ -1006,6 +1004,7 @@
|
|
||||||
|
|
||||||
|
|
||||||
BOOLEAN
|
|
||||||
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
|
|
||||||
CdFastIoCheckIfPossible (
|
|
||||||
IN PFILE_OBJECT FileObject,
|
|
||||||
IN PLARGE_INTEGER FileOffset,
|
|
||||||
Index: drivers/filesystems/cdfs_new/allocsup.c
|
|
||||||
===================================================================
|
|
||||||
--- drivers/filesystems/cdfs_new/allocsup.c (revision 34615)
|
|
||||||
+++ drivers/filesystems/cdfs_new/allocsup.c (working copy)
|
|
||||||
@@ -128,7 +128,7 @@
|
|
||||||
{
|
|
||||||
BOOLEAN FirstPass = TRUE;
|
|
||||||
ULONG McbEntryOffset;
|
|
||||||
- PFCB ParentFcb;
|
|
||||||
+ PFCB ParentFcb = NULL; /* ReactOS Change: GCC uninitialized variable bug */
|
|
||||||
BOOLEAN CleanupParent = FALSE;
|
|
||||||
|
|
||||||
BOOLEAN UnlockFcb = FALSE;
|
|
||||||
Index: drivers/filesystems/cdfs_new/verfysup.c
|
|
||||||
===================================================================
|
|
||||||
--- drivers/filesystems/cdfs_new/verfysup.c (revision 34615)
|
|
||||||
+++ drivers/filesystems/cdfs_new/verfysup.c (working copy)
|
|
||||||
@@ -431,7 +431,7 @@
|
|
||||||
ULONG MediaChangeCount = 0;
|
|
||||||
BOOLEAN ForceVerify = FALSE;
|
|
||||||
BOOLEAN DevMarkedForVerify;
|
|
||||||
- KIRQL SavedIrql;
|
|
||||||
+ //KIRQL SavedIrql; /* ReactOS Change: GCC Unused variable */
|
|
||||||
|
|
||||||
PAGED_CODE();
|
|
||||||
|
|
||||||
@@ -581,6 +581,9 @@
|
|
||||||
|
|
||||||
CdRaiseStatus( IrpContext, STATUS_FILE_INVALID );
|
|
||||||
break;
|
|
||||||
+
|
|
||||||
+ /* ReactOS Change: GCC "enumeration value not handled in switch" */
|
|
||||||
+ default: break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -613,7 +616,7 @@
|
|
||||||
--*/
|
|
||||||
|
|
||||||
{
|
|
||||||
- NTSTATUS Status = STATUS_SUCCESS;
|
|
||||||
+ //NTSTATUS Status = STATUS_SUCCESS; /* ReactOS Change: GCC Unused variable */
|
|
||||||
PVCB Vcb = Fcb->Vcb;
|
|
||||||
PDEVICE_OBJECT RealDevice = Vcb->Vpb->RealDevice;
|
|
||||||
PIRP Irp;
|
|
||||||
Index: drivers/filesystems/cdfs_new/filobsup.c
|
|
||||||
===================================================================
|
|
||||||
--- drivers/filesystems/cdfs_new/filobsup.c (revision 34615)
|
|
||||||
+++ drivers/filesystems/cdfs_new/filobsup.c (working copy)
|
|
||||||
@@ -105,7 +105,7 @@
|
|
||||||
FileObject->FsContext = Fcb;
|
|
||||||
FileObject->FsContext2 = Ccb;
|
|
||||||
|
|
||||||
- SetFlag( ((ULONG_PTR) FileObject->FsContext2), TypeOfOpen );
|
|
||||||
+ SetFlag( (*(PULONG_PTR)&FileObject->FsContext2), TypeOfOpen ); /* ReactOS Change: GCC "invalid lvalue in assignment" */
|
|
||||||
|
|
||||||
//
|
|
||||||
// Set the Vpb field in the file object.
|
|
||||||
@@ -176,7 +176,7 @@
|
|
||||||
*Fcb = FileObject->FsContext;
|
|
||||||
*Ccb = FileObject->FsContext2;
|
|
||||||
|
|
||||||
- ClearFlag( (ULONG_PTR) *Ccb, TYPE_OF_OPEN_MASK );
|
|
||||||
+ ClearFlag( (*(PULONG_PTR)Ccb), TYPE_OF_OPEN_MASK ); /* ReactOS Change: GCC "invalid lvalue in assignment" */
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
Index: drivers/filesystems/cdfs_new/pathsup.c
|
|
||||||
===================================================================
|
|
||||||
--- drivers/filesystems/cdfs_new/pathsup.c (revision 34615)
|
|
||||||
+++ drivers/filesystems/cdfs_new/pathsup.c (working copy)
|
|
||||||
@@ -764,7 +764,7 @@
|
|
||||||
|
|
||||||
PathEntry->PathEntryLength = WordAlign( PathEntry->PathEntryLength );
|
|
||||||
|
|
||||||
- PathEntry->DirName = RawPathEntry->DirId;
|
|
||||||
+ PathEntry->DirName = (PCHAR)RawPathEntry->DirId; /* ReactOS Change: GCC "assignment makes pointer from integer without a cast" */
|
|
||||||
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
Index: drivers/filesystems/cdfs_new/cdprocs.h
|
|
||||||
===================================================================
|
|
||||||
--- drivers/filesystems/cdfs_new/cdprocs.h (revision 34615)
|
|
||||||
+++ drivers/filesystems/cdfs_new/cdprocs.h (working copy)
|
|
||||||
@@ -902,33 +904,39 @@
|
|
||||||
}
|
|
||||||
|
|
||||||
BOOLEAN
|
|
||||||
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
|
|
||||||
CdNoopAcquire (
|
|
||||||
IN PVOID Fcb,
|
|
||||||
IN BOOLEAN Wait
|
|
||||||
);
|
|
||||||
|
|
||||||
VOID
|
|
||||||
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
|
|
||||||
CdNoopRelease (
|
|
||||||
IN PVOID Fcb
|
|
||||||
);
|
|
||||||
|
|
||||||
BOOLEAN
|
|
||||||
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
|
|
||||||
CdAcquireForCache (
|
|
||||||
IN PFCB Fcb,
|
|
||||||
IN BOOLEAN Wait
|
|
||||||
);
|
|
||||||
|
|
||||||
VOID
|
|
||||||
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
|
|
||||||
CdReleaseFromCache (
|
|
||||||
IN PFCB Fcb
|
|
||||||
);
|
|
||||||
|
|
||||||
VOID
|
|
||||||
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
|
|
||||||
CdAcquireForCreateSection (
|
|
||||||
IN PFILE_OBJECT FileObject
|
|
||||||
);
|
|
||||||
|
|
||||||
VOID
|
|
||||||
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
|
|
||||||
CdReleaseForCreateSection (
|
|
||||||
IN PFILE_OBJECT FileObject
|
|
||||||
);
|
|
||||||
@@ -1184,8 +1192,8 @@
|
|
||||||
// Verification support routines. Contained in verfysup.c
|
|
||||||
//
|
|
||||||
|
|
||||||
-
|
|
||||||
-INLINE
|
|
||||||
+/* ReactOS Change: "LD multiple definition of `_CdOperationIsDasdOpen'" */
|
|
||||||
+static inline
|
|
||||||
BOOLEAN
|
|
||||||
CdOperationIsDasdOpen(
|
|
||||||
IN PIRP_CONTEXT IrpContext
|
|
||||||
@@ -1272,12 +1280,14 @@
|
|
||||||
);
|
|
||||||
|
|
||||||
VOID
|
|
||||||
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
|
|
||||||
CdPrePostIrp (
|
|
||||||
IN PIRP_CONTEXT IrpContext,
|
|
||||||
IN PIRP Irp
|
|
||||||
);
|
|
||||||
|
|
||||||
VOID
|
|
||||||
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
|
|
||||||
CdOplockComplete (
|
|
||||||
IN PIRP_CONTEXT IrpContext,
|
|
||||||
IN PIRP Irp
|
|
||||||
@@ -1293,7 +1303,9 @@
|
|
||||||
// otherwise
|
|
||||||
//
|
|
||||||
|
|
||||||
-//#ifndef BooleanFlagOn
|
|
||||||
+/* ReactOS Change: GCC doesn't understand the comment style */
|
|
||||||
+/*
|
|
||||||
+ //#ifndef BooleanFlagOn
|
|
||||||
//#define BooleanFlagOn(F,SF) ( \
|
|
||||||
// (BOOLEAN)(((F) & (SF)) != 0) \
|
|
||||||
//)
|
|
||||||
@@ -1310,6 +1322,7 @@
|
|
||||||
// (Flags) &= ~(SingleFlag); \
|
|
||||||
//}
|
|
||||||
//#endif
|
|
||||||
+*/
|
|
||||||
|
|
||||||
//
|
|
||||||
// CAST
|
|
||||||
@@ -1598,6 +1611,7 @@
|
|
||||||
//
|
|
||||||
|
|
||||||
BOOLEAN
|
|
||||||
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
|
|
||||||
CdFastQueryBasicInfo (
|
|
||||||
IN PFILE_OBJECT FileObject,
|
|
||||||
IN BOOLEAN Wait,
|
|
||||||
@@ -1607,6 +1621,7 @@
|
|
||||||
);
|
|
||||||
|
|
||||||
BOOLEAN
|
|
||||||
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
|
|
||||||
CdFastQueryStdInfo (
|
|
||||||
IN PFILE_OBJECT FileObject,
|
|
||||||
IN BOOLEAN Wait,
|
|
||||||
@@ -1616,6 +1631,7 @@
|
|
||||||
);
|
|
||||||
|
|
||||||
BOOLEAN
|
|
||||||
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
|
|
||||||
CdFastLock (
|
|
||||||
IN PFILE_OBJECT FileObject,
|
|
||||||
IN PLARGE_INTEGER FileOffset,
|
|
||||||
@@ -1629,6 +1645,7 @@
|
|
||||||
);
|
|
||||||
|
|
||||||
BOOLEAN
|
|
||||||
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
|
|
||||||
CdFastUnlockSingle (
|
|
||||||
IN PFILE_OBJECT FileObject,
|
|
||||||
IN PLARGE_INTEGER FileOffset,
|
|
||||||
@@ -1640,6 +1657,7 @@
|
|
||||||
);
|
|
||||||
|
|
||||||
BOOLEAN
|
|
||||||
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
|
|
||||||
CdFastUnlockAll (
|
|
||||||
IN PFILE_OBJECT FileObject,
|
|
||||||
PEPROCESS ProcessId,
|
|
||||||
@@ -1648,6 +1666,7 @@
|
|
||||||
);
|
|
||||||
|
|
||||||
BOOLEAN
|
|
||||||
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
|
|
||||||
CdFastUnlockAllByKey (
|
|
||||||
IN PFILE_OBJECT FileObject,
|
|
||||||
PVOID ProcessId,
|
|
||||||
@@ -1657,6 +1676,7 @@
|
|
||||||
);
|
|
||||||
|
|
||||||
BOOLEAN
|
|
||||||
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
|
|
||||||
CdFastIoCheckIfPossible (
|
|
||||||
IN PFILE_OBJECT FileObject,
|
|
||||||
IN PLARGE_INTEGER FileOffset,
|
|
||||||
@@ -1669,6 +1689,7 @@
|
|
||||||
);
|
|
||||||
|
|
||||||
BOOLEAN
|
|
||||||
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
|
|
||||||
CdFastQueryNetworkInfo (
|
|
||||||
IN PFILE_OBJECT FileObject,
|
|
||||||
IN BOOLEAN Wait,
|
|
||||||
@@ -1862,17 +1883,26 @@
|
|
||||||
//
|
|
||||||
// #define try_return(S) { S; goto try_exit; }
|
|
||||||
//
|
|
||||||
+/* ReactOS Change: Remove SEH */
|
|
||||||
+#define try
|
|
||||||
+#define leave goto exitLabel;
|
|
||||||
+#define finally if (0) goto exitLabel; exitLabel:
|
|
||||||
+#define except(x) while (0)
|
|
||||||
+#define GetExceptionCode() 0
|
|
||||||
+#define AbnormalTermination() 0
|
|
||||||
|
|
||||||
#define try_return(S) { S; goto try_exit; }
|
|
||||||
#define try_leave(S) { S; leave; }
|
|
||||||
|
|
||||||
+
|
|
||||||
//
|
|
||||||
// Encapsulate safe pool freeing
|
|
||||||
//
|
|
||||||
+/* ReactOS Change: GCC "passing argument 1 of CdFreePool from incompatible pointer type" */
|
|
||||||
+#define CdFreePool(x) _CdFreePool((PVOID*)(x))
|
|
||||||
|
|
||||||
-INLINE
|
|
||||||
-VOID
|
|
||||||
-CdFreePool(
|
|
||||||
+/* ReactOS Change: "LD multiple definition of `_CdOperationIsDasdOpen'" */
|
|
||||||
+static inline void _CdFreePool(
|
|
||||||
IN PVOID *Pool
|
|
||||||
)
|
|
||||||
{
|
|
||||||
Index: drivers/filesystems/cdfs_new/resrcsup.c
|
|
||||||
===================================================================
|
|
||||||
--- drivers/filesystems/cdfs_new/resrcsup.c (revision 34615)
|
|
||||||
+++ drivers/filesystems/cdfs_new/resrcsup.c (working copy)
|
|
||||||
@@ -123,6 +123,7 @@
|
|
||||||
|
|
||||||
|
|
||||||
BOOLEAN
|
|
||||||
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
|
|
||||||
CdAcquireForCache (
|
|
||||||
IN PFCB Fcb,
|
|
||||||
IN BOOLEAN Wait
|
|
||||||
@@ -159,6 +160,7 @@
|
|
||||||
|
|
||||||
|
|
||||||
VOID
|
|
||||||
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
|
|
||||||
CdReleaseFromCache (
|
|
||||||
IN PFCB Fcb
|
|
||||||
)
|
|
||||||
@@ -193,6 +195,7 @@
|
|
||||||
|
|
||||||
|
|
||||||
BOOLEAN
|
|
||||||
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
|
|
||||||
CdNoopAcquire (
|
|
||||||
IN PVOID Fcb,
|
|
||||||
IN BOOLEAN Wait
|
|
||||||
@@ -224,6 +227,7 @@
|
|
||||||
|
|
||||||
|
|
||||||
VOID
|
|
||||||
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
|
|
||||||
CdNoopRelease (
|
|
||||||
IN PVOID Fcb
|
|
||||||
)
|
|
||||||
@@ -251,6 +255,7 @@
|
|
||||||
|
|
||||||
|
|
||||||
VOID
|
|
||||||
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
|
|
||||||
CdAcquireForCreateSection (
|
|
||||||
IN PFILE_OBJECT FileObject
|
|
||||||
)
|
|
||||||
@@ -298,6 +303,7 @@
|
|
||||||
|
|
||||||
|
|
||||||
VOID
|
|
||||||
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
|
|
||||||
CdReleaseForCreateSection (
|
|
||||||
IN PFILE_OBJECT FileObject
|
|
||||||
)
|
|
||||||
Index: drivers/filesystems/cdfs_new/namesup.c
|
|
||||||
===================================================================
|
|
||||||
--- drivers/filesystems/cdfs_new/namesup.c (revision 34615)
|
|
||||||
+++ drivers/filesystems/cdfs_new/namesup.c (working copy)
|
|
||||||
@@ -206,7 +206,7 @@
|
|
||||||
|
|
||||||
{
|
|
||||||
NTSTATUS Status;
|
|
||||||
- PVOID NewBuffer;
|
|
||||||
+ //PVOID NewBuffer; /* ReactOS Change: GCC Uninitialized variable */
|
|
||||||
|
|
||||||
PAGED_CODE();
|
|
||||||
|
|
||||||
Index: drivers/filesystems/cdfs_new/cdinit.c
|
|
||||||
===================================================================
|
|
||||||
--- drivers/filesystems/cdfs_new/cdinit.c (revision 34615)
|
|
||||||
+++ drivers/filesystems/cdfs_new/cdinit.c (working copy)
|
|
||||||
@@ -22,12 +22,14 @@
|
|
||||||
#define BugCheckFileId (CDFS_BUG_CHECK_CDINIT)
|
|
||||||
|
|
||||||
NTSTATUS
|
|
||||||
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
|
|
||||||
DriverEntry(
|
|
||||||
IN PDRIVER_OBJECT DriverObject,
|
|
||||||
IN PUNICODE_STRING RegistryPath
|
|
||||||
);
|
|
||||||
|
|
||||||
VOID
|
|
||||||
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
|
|
||||||
CdUnload(
|
|
||||||
IN PDRIVER_OBJECT DriverObject
|
|
||||||
);
|
|
||||||
@@ -39,6 +41,7 @@
|
|
||||||
);
|
|
||||||
|
|
||||||
NTSTATUS
|
|
||||||
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
|
|
||||||
CdShutdown (
|
|
||||||
IN PDEVICE_OBJECT DeviceObject,
|
|
||||||
IN PIRP Irp
|
|
||||||
@@ -57,6 +60,7 @@
|
|
||||||
//
|
|
||||||
|
|
||||||
NTSTATUS
|
|
||||||
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
|
|
||||||
DriverEntry(
|
|
||||||
IN PDRIVER_OBJECT DriverObject,
|
|
||||||
IN PUNICODE_STRING RegistryPath
|
|
||||||
@@ -169,6 +173,7 @@
|
|
||||||
}
|
|
||||||
|
|
||||||
NTSTATUS
|
|
||||||
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
|
|
||||||
CdShutdown (
|
|
||||||
IN PDEVICE_OBJECT DeviceObject,
|
|
||||||
IN PIRP Irp
|
|
||||||
@@ -200,6 +205,7 @@
|
|
||||||
|
|
||||||
|
|
||||||
VOID
|
|
||||||
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
|
|
||||||
CdUnload(
|
|
||||||
IN PDRIVER_OBJECT DriverObject
|
|
||||||
)
|
|
||||||
@@ -310,10 +316,10 @@
|
|
||||||
// Initialize the cache manager callback routines
|
|
||||||
//
|
|
||||||
|
|
||||||
- CdData.CacheManagerCallbacks.AcquireForLazyWrite = &CdAcquireForCache;
|
|
||||||
- CdData.CacheManagerCallbacks.ReleaseFromLazyWrite = &CdReleaseFromCache;
|
|
||||||
- CdData.CacheManagerCallbacks.AcquireForReadAhead = &CdAcquireForCache;
|
|
||||||
- CdData.CacheManagerCallbacks.ReleaseFromReadAhead = &CdReleaseFromCache;
|
|
||||||
+ CdData.CacheManagerCallbacks.AcquireForLazyWrite = (PVOID)&CdAcquireForCache;/* ReactOS Change: GCC "assignment from incompatible pointer type" */
|
|
||||||
+ CdData.CacheManagerCallbacks.ReleaseFromLazyWrite = (PVOID)&CdReleaseFromCache;/* ReactOS Change: GCC "assignment from incompatible pointer type" */
|
|
||||||
+ CdData.CacheManagerCallbacks.AcquireForReadAhead = (PVOID)&CdAcquireForCache;/* ReactOS Change: GCC "assignment from incompatible pointer type" */
|
|
||||||
+ CdData.CacheManagerCallbacks.ReleaseFromReadAhead = (PVOID)&CdReleaseFromCache;/* ReactOS Change: GCC "assignment from incompatible pointer type" */
|
|
||||||
|
|
||||||
CdData.CacheManagerVolumeCallbacks.AcquireForLazyWrite = &CdNoopAcquire;
|
|
||||||
CdData.CacheManagerVolumeCallbacks.ReleaseFromLazyWrite = &CdNoopRelease;
|
|
||||||
Index: drivers/filesystems/cdfs_new/cdstruc.h
|
|
||||||
===================================================================
|
|
||||||
--- drivers/filesystems/cdfs_new/cdstruc.h (revision 34615)
|
|
||||||
+++ drivers/filesystems/cdfs_new/cdstruc.h (working copy)
|
|
||||||
@@ -504,8 +504,8 @@
|
|
||||||
//
|
|
||||||
|
|
||||||
ULONG VcbCleanup;
|
|
||||||
- ULONG VcbReference;
|
|
||||||
- ULONG VcbUserReference;
|
|
||||||
+ LONG VcbReference; /* ReactOS Change: GCC 'pointer targets in passing argument 1 of 'InterlockedXxx' differ in signedness */
|
|
||||||
+ LONG VcbUserReference; /* ReactOS Change: GCC 'pointer targets in passing argument 1 of 'InterlockedXxx' differ in signedness */
|
|
||||||
|
|
||||||
//
|
|
||||||
// Fcb for the Volume Dasd file, root directory and the Path Table.
|
|
||||||
@@ -655,7 +655,7 @@
|
|
||||||
// executed later.
|
|
||||||
//
|
|
||||||
|
|
||||||
- ULONG PostedRequestCount;
|
|
||||||
+ LONG PostedRequestCount; /* ReactOS Change: GCC "pointer targets in passing argument 1 of 'InterlockedDecrement' differ in signedness" */
|
|
||||||
|
|
||||||
//
|
|
||||||
// The following field indicates the number of IRP's waiting
|
|
||||||
@@ -878,7 +878,7 @@
|
|
||||||
//
|
|
||||||
|
|
||||||
ULONG FcbCleanup;
|
|
||||||
- ULONG FcbReference;
|
|
||||||
+ LONG FcbReference; /* ReactOS Change: GCC 'pointer targets in passing argument 1 of 'InterlockedXxx' differ in signedness */
|
|
||||||
ULONG FcbUserReference;
|
|
||||||
|
|
||||||
//
|
|
||||||
Index: drivers/filesystems/cdfs_new/lockctrl.c
|
|
||||||
===================================================================
|
|
||||||
--- drivers/filesystems/cdfs_new/lockctrl.c (revision 34615)
|
|
||||||
+++ drivers/filesystems/cdfs_new/lockctrl.c (working copy)
|
|
||||||
@@ -89,7 +89,7 @@
|
|
||||||
Status = FsRtlCheckOplock( &Fcb->Oplock,
|
|
||||||
Irp,
|
|
||||||
IrpContext,
|
|
||||||
- CdOplockComplete,
|
|
||||||
+ (PVOID)CdOplockComplete,/* ReactOS Change: GCC "assignment from incompatible pointer type" */
|
|
||||||
NULL );
|
|
||||||
|
|
||||||
//
|
|
||||||
@@ -138,6 +138,7 @@
|
|
||||||
|
|
||||||
|
|
||||||
BOOLEAN
|
|
||||||
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
|
|
||||||
CdFastLock (
|
|
||||||
IN PFILE_OBJECT FileObject,
|
|
||||||
IN PLARGE_INTEGER FileOffset,
|
|
||||||
@@ -246,8 +247,8 @@
|
|
||||||
//
|
|
||||||
// Now call the FsRtl routine to perform the lock request.
|
|
||||||
//
|
|
||||||
-
|
|
||||||
- if (Results = FsRtlFastLock( Fcb->FileLock,
|
|
||||||
+ /* ReactOS Change: GCC "suggest parentheses around assignment used as truth value" */
|
|
||||||
+ if ((Results = FsRtlFastLock( Fcb->FileLock,
|
|
||||||
FileObject,
|
|
||||||
FileOffset,
|
|
||||||
Length,
|
|
||||||
@@ -257,7 +258,7 @@
|
|
||||||
ExclusiveLock,
|
|
||||||
IoStatus,
|
|
||||||
NULL,
|
|
||||||
- FALSE )) {
|
|
||||||
+ FALSE ))) {
|
|
||||||
|
|
||||||
//
|
|
||||||
// Set the flag indicating if Fast I/O is questionable. We
|
|
||||||
@@ -284,6 +285,7 @@
|
|
||||||
|
|
||||||
|
|
||||||
BOOLEAN
|
|
||||||
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
|
|
||||||
CdFastUnlockSingle (
|
|
||||||
IN PFILE_OBJECT FileObject,
|
|
||||||
IN PLARGE_INTEGER FileOffset,
|
|
||||||
@@ -424,6 +426,7 @@
|
|
||||||
|
|
||||||
|
|
||||||
BOOLEAN
|
|
||||||
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
|
|
||||||
CdFastUnlockAll (
|
|
||||||
IN PFILE_OBJECT FileObject,
|
|
||||||
PEPROCESS ProcessId,
|
|
||||||
@@ -546,6 +549,7 @@
|
|
||||||
|
|
||||||
|
|
||||||
BOOLEAN
|
|
||||||
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
|
|
||||||
CdFastUnlockAllByKey (
|
|
||||||
IN PFILE_OBJECT FileObject,
|
|
||||||
PVOID ProcessId,
|
|
||||||
Index: drivers/filesystems/cdfs_new/strucsup.c
|
|
||||||
===================================================================
|
|
||||||
--- drivers/filesystems/cdfs_new/strucsup.c (revision 34615)
|
|
||||||
+++ drivers/filesystems/cdfs_new/strucsup.c (working copy)
|
|
||||||
@@ -438,7 +438,7 @@
|
|
||||||
--*/
|
|
||||||
|
|
||||||
{
|
|
||||||
- ULONG Shift;
|
|
||||||
+ //ULONG Shift; /* ReactOS Change: GCC Unused variable */
|
|
||||||
ULONG StartingBlock;
|
|
||||||
ULONG ByteCount;
|
|
||||||
|
|
||||||
Index: drivers/filesystems/cdfs_new/fileinfo.c
|
|
||||||
===================================================================
|
|
||||||
--- drivers/filesystems/cdfs_new/fileinfo.c (revision 34615)
|
|
||||||
+++ drivers/filesystems/cdfs_new/fileinfo.c (working copy)
|
|
||||||
@@ -460,6 +460,7 @@
|
|
||||||
|
|
||||||
|
|
||||||
BOOLEAN
|
|
||||||
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
|
|
||||||
CdFastQueryBasicInfo (
|
|
||||||
IN PFILE_OBJECT FileObject,
|
|
||||||
IN BOOLEAN Wait,
|
|
||||||
@@ -577,6 +578,7 @@
|
|
||||||
|
|
||||||
|
|
||||||
BOOLEAN
|
|
||||||
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
|
|
||||||
CdFastQueryStdInfo (
|
|
||||||
IN PFILE_OBJECT FileObject,
|
|
||||||
IN BOOLEAN Wait,
|
|
||||||
@@ -704,6 +706,7 @@
|
|
||||||
|
|
||||||
|
|
||||||
BOOLEAN
|
|
||||||
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
|
|
||||||
CdFastQueryNetworkInfo (
|
|
||||||
IN PFILE_OBJECT FileObject,
|
|
||||||
IN BOOLEAN Wait,
|
|
||||||
Index: drivers/filesystems/cdfs_new/fsctrl.c
|
|
||||||
===================================================================
|
|
||||||
--- drivers/filesystems/cdfs_new/fsctrl.c (revision 34615)
|
|
||||||
+++ drivers/filesystems/cdfs_new/fsctrl.c (working copy)
|
|
||||||
@@ -82,7 +82,8 @@
|
|
||||||
IN PIRP_CONTEXT IrpContext,
|
|
||||||
IN PIRP Irp
|
|
||||||
);
|
|
||||||
-
|
|
||||||
+
|
|
||||||
+NTSTATUS /* ReactOS Change: Function did not have a type??? */
|
|
||||||
CdIsVolumeDirty (
|
|
||||||
IN PIRP_CONTEXT IrpContext,
|
|
||||||
IN PIRP Irp
|
|
||||||
@@ -918,7 +919,7 @@
|
|
||||||
|
|
||||||
if (CdIsRemount( IrpContext, Vcb, &OldVcb )) {
|
|
||||||
|
|
||||||
- KIRQL SavedIrql;
|
|
||||||
+ //KIRQL SavedIrql; /* ReactOS Change: GCC Unused variable */
|
|
||||||
|
|
||||||
ASSERT( NULL != OldVcb->SwapVpb );
|
|
||||||
|
|
||||||
@@ -1374,7 +1375,7 @@
|
|
||||||
// Compute the length of the volume name
|
|
||||||
//
|
|
||||||
|
|
||||||
- AnsiLabel.Buffer = CdRvdVolId( RawIsoVd, Vcb->VcbState );
|
|
||||||
+ AnsiLabel.Buffer = (PCHAR)CdRvdVolId( RawIsoVd, Vcb->VcbState ); /* ReactOS Change: GCC "pointer targets in assignment differ in signedness" */
|
|
||||||
AnsiLabel.MaximumLength = AnsiLabel.Length = VOLUME_ID_LENGTH;
|
|
||||||
|
|
||||||
UnicodeLabel.MaximumLength = VOLUME_ID_LENGTH * sizeof( WCHAR );
|
|
||||||
@@ -1401,7 +1402,7 @@
|
|
||||||
} else {
|
|
||||||
|
|
||||||
CdConvertBigToLittleEndian( IrpContext,
|
|
||||||
- CdRvdVolId( RawIsoVd, Vcb->VcbState ),
|
|
||||||
+ (PCHAR)CdRvdVolId( RawIsoVd, Vcb->VcbState ),/* ReactOS Change: GCC "pointer targets in assignment differ in signedness" */
|
|
||||||
VOLUME_ID_LENGTH,
|
|
||||||
(PCHAR) VolumeLabel );
|
|
||||||
|
|
||||||
@@ -2005,7 +2006,7 @@
|
|
||||||
//
|
|
||||||
// Local support routine
|
|
||||||
//
|
|
||||||
-
|
|
||||||
+NTSTATUS /* ReactOS Change: Function did not have a type??? */
|
|
||||||
CdIsVolumeDirty (
|
|
||||||
IN PIRP_CONTEXT IrpContext,
|
|
||||||
IN PIRP Irp
|
|
||||||
@@ -2296,9 +2297,9 @@
|
|
||||||
0,
|
|
||||||
*IoFileObjectType,
|
|
||||||
KernelMode,
|
|
||||||
- &FileToMarkBad,
|
|
||||||
+ (PVOID*)&FileToMarkBad, /* ReactOS Change: GCC "passing argument 5 of 'ObReferenceObjectByHandle' from incompatible pointer type" */
|
|
||||||
NULL );
|
|
||||||
|
|
||||||
if (!NT_SUCCESS(Status)) {
|
|
||||||
@@ -2642,8 +2643,8 @@
|
|
||||||
// The track address is BigEndian, we need to flip the bytes.
|
|
||||||
//
|
|
||||||
|
|
||||||
- Source = (PUCHAR) &CdromToc->TrackData[0].Address[3];
|
|
||||||
- Dest = (PUCHAR) &BaseSector;
|
|
||||||
+ Source = (PCHAR) &CdromToc->TrackData[0].Address[3];/* ReactOS Change: GCC "pointer targets in assignment differ in signedness" */
|
|
||||||
+ Dest = (PCHAR) &BaseSector; /* ReactOS Change: GCC "pointer targets in assignment differ in signedness" */
|
|
||||||
|
|
||||||
do {
|
|
||||||
|
|
||||||
@@ -3118,7 +3119,7 @@
|
|
||||||
if (NT_SUCCESS( RtlOemToUnicodeN( &Vcb->Vpb->VolumeLabel[0],
|
|
||||||
MAXIMUM_VOLUME_LABEL_LENGTH,
|
|
||||||
&Length,
|
|
||||||
- CdRvdVolId( RawIsoVd, Vcb->VcbState ),
|
|
||||||
+ (PCHAR)CdRvdVolId( RawIsoVd, Vcb->VcbState ),/* ReactOS Change: GCC "pointer targets in assignment differ in signedness" */
|
|
||||||
VOLUME_ID_LENGTH ))) {
|
|
||||||
|
|
||||||
Vcb->Vpb->VolumeLabelLength = (USHORT) Length;
|
|
||||||
@@ -3131,7 +3132,7 @@
|
|
||||||
} else {
|
|
||||||
|
|
||||||
CdConvertBigToLittleEndian( IrpContext,
|
|
||||||
- CdRvdVolId( RawIsoVd, Vcb->VcbState ),
|
|
||||||
+ (PCHAR)CdRvdVolId( RawIsoVd, Vcb->VcbState ),/* ReactOS Change: GCC "pointer targets in assignment differ in signedness" */
|
|
||||||
VOLUME_ID_LENGTH,
|
|
||||||
(PCHAR) Vcb->Vpb->VolumeLabel );
|
|
||||||
|
|
||||||
Index: drivers/filesystems/cdfs_new/pnp.c
|
|
||||||
===================================================================
|
|
||||||
--- drivers/filesystems/cdfs_new/pnp.c (revision 34615)
|
|
||||||
+++ drivers/filesystems/cdfs_new/pnp.c (working copy)
|
|
||||||
@@ -51,6 +51,7 @@
|
|
||||||
);
|
|
||||||
|
|
||||||
NTSTATUS
|
|
||||||
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
|
|
||||||
CdPnpCompletionRoutine (
|
|
||||||
IN PDEVICE_OBJECT DeviceObject,
|
|
||||||
IN PIRP Irp,
|
|
||||||
@@ -774,6 +775,7 @@
|
|
||||||
//
|
|
||||||
|
|
||||||
NTSTATUS
|
|
||||||
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
|
|
||||||
CdPnpCompletionRoutine (
|
|
||||||
IN PDEVICE_OBJECT DeviceObject,
|
|
||||||
IN PIRP Irp,
|
|
||||||
Index: drivers/filesystems/cdfs_new/workque.c
|
|
||||||
===================================================================
|
|
||||||
--- drivers/filesystems/cdfs_new/workque.c (revision 34615)
|
|
||||||
+++ drivers/filesystems/cdfs_new/workque.c (working copy)
|
|
||||||
@@ -97,6 +97,7 @@
|
|
||||||
|
|
||||||
|
|
||||||
VOID
|
|
||||||
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
|
|
||||||
CdPrePostIrp (
|
|
||||||
IN PIRP_CONTEXT IrpContext,
|
|
||||||
IN PIRP Irp
|
|
||||||
@@ -209,6 +210,7 @@
|
|
||||||
|
|
||||||
|
|
||||||
VOID
|
|
||||||
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
|
|
||||||
CdOplockComplete (
|
|
||||||
IN PIRP_CONTEXT IrpContext,
|
|
||||||
IN PIRP Irp
|
|
||||||
@@ -386,7 +388,7 @@
|
|
||||||
//
|
|
||||||
|
|
||||||
ExInitializeWorkItem( &IrpContext->WorkQueueItem,
|
|
||||||
- CdFspDispatch,
|
|
||||||
+ (PVOID)CdFspDispatch,/* ReactOS Change: GCC "assignment from incompatible pointer type" */
|
|
||||||
IrpContext );
|
|
||||||
|
|
||||||
ExQueueWorkItem( &IrpContext->WorkQueueItem, CriticalWorkQueue );
|
|
|
@ -14,7 +14,7 @@ Abstract:
|
||||||
|
|
||||||
--*/
|
--*/
|
||||||
|
|
||||||
#include "CdProcs.h"
|
#include "cdprocs.h"
|
||||||
|
|
||||||
//
|
//
|
||||||
// The Bug check file id for this module
|
// The Bug check file id for this module
|
||||||
|
@ -100,6 +100,7 @@ Return Value:
|
||||||
|
|
||||||
_Requires_lock_held_(_Global_critical_region_)
|
_Requires_lock_held_(_Global_critical_region_)
|
||||||
VOID
|
VOID
|
||||||
|
NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
|
||||||
CdPrePostIrp (
|
CdPrePostIrp (
|
||||||
_Inout_ PIRP_CONTEXT IrpContext,
|
_Inout_ PIRP_CONTEXT IrpContext,
|
||||||
_Inout_ PIRP Irp
|
_Inout_ PIRP Irp
|
||||||
|
@ -224,6 +225,7 @@ Return Value:
|
||||||
|
|
||||||
_Requires_lock_held_(_Global_critical_region_)
|
_Requires_lock_held_(_Global_critical_region_)
|
||||||
VOID
|
VOID
|
||||||
|
NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
|
||||||
CdOplockComplete (
|
CdOplockComplete (
|
||||||
_Inout_ PIRP_CONTEXT IrpContext,
|
_Inout_ PIRP_CONTEXT IrpContext,
|
||||||
_Inout_ PIRP Irp
|
_Inout_ PIRP Irp
|
||||||
|
@ -401,12 +403,16 @@ Return Value:
|
||||||
// Send it off.....
|
// Send it off.....
|
||||||
//
|
//
|
||||||
|
|
||||||
|
#ifdef _MSC_VER
|
||||||
#pragma prefast(suppress:28155, "the function prototype is correct")
|
#pragma prefast(suppress:28155, "the function prototype is correct")
|
||||||
|
#endif
|
||||||
ExInitializeWorkItem( &IrpContext->WorkQueueItem,
|
ExInitializeWorkItem( &IrpContext->WorkQueueItem,
|
||||||
CdFspDispatch,
|
(PVOID)CdFspDispatch,/* ReactOS Change: GCC "assignment from incompatible pointer type" */
|
||||||
IrpContext );
|
IrpContext );
|
||||||
|
|
||||||
|
#ifdef _MSC_VER
|
||||||
#pragma prefast(suppress: 28159, "prefast believes this routine is obsolete, but it is ok for CDFS to continue using it")
|
#pragma prefast(suppress: 28159, "prefast believes this routine is obsolete, but it is ok for CDFS to continue using it")
|
||||||
|
#endif
|
||||||
ExQueueWorkItem( &IrpContext->WorkQueueItem, CriticalWorkQueue );
|
ExQueueWorkItem( &IrpContext->WorkQueueItem, CriticalWorkQueue );
|
||||||
|
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -14,7 +14,7 @@ Abstract:
|
||||||
|
|
||||||
--*/
|
--*/
|
||||||
|
|
||||||
#include "CdProcs.h"
|
#include "cdprocs.h"
|
||||||
|
|
||||||
//
|
//
|
||||||
// The Bug check file id for this module
|
// The Bug check file id for this module
|
||||||
|
@ -34,15 +34,24 @@ Abstract:
|
||||||
// This macro just puts a nice little try-except around RtlZeroMemory
|
// This macro just puts a nice little try-except around RtlZeroMemory
|
||||||
//
|
//
|
||||||
|
|
||||||
|
#ifndef __REACTOS__
|
||||||
#define SafeZeroMemory(IC,AT,BYTE_COUNT) { \
|
#define SafeZeroMemory(IC,AT,BYTE_COUNT) { \
|
||||||
try { \
|
_SEH2_TRY { \
|
||||||
RtlZeroMemory( (AT), (BYTE_COUNT) ); \
|
RtlZeroMemory( (AT), (BYTE_COUNT) ); \
|
||||||
__pragma(warning(suppress: 6320)) \
|
__pragma(warning(suppress: 6320)) \
|
||||||
} except( EXCEPTION_EXECUTE_HANDLER ) { \
|
} _SEH2_EXCEPT( EXCEPTION_EXECUTE_HANDLER ) { \
|
||||||
CdRaiseStatus( IC, STATUS_INVALID_USER_BUFFER ); \
|
CdRaiseStatus( IC, STATUS_INVALID_USER_BUFFER ); \
|
||||||
} \
|
} _SEH2_END; \
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
#define SafeZeroMemory(IC,AT,BYTE_COUNT) { \
|
||||||
|
_SEH2_TRY { \
|
||||||
|
RtlZeroMemory( (AT), (BYTE_COUNT) ); \
|
||||||
|
} _SEH2_EXCEPT( EXCEPTION_EXECUTE_HANDLER ) { \
|
||||||
|
CdRaiseStatus( IC, STATUS_INVALID_USER_BUFFER ); \
|
||||||
|
} _SEH2_END; \
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef ALLOC_PRAGMA
|
#ifdef ALLOC_PRAGMA
|
||||||
#pragma alloc_text(PAGE, CdCommonWrite)
|
#pragma alloc_text(PAGE, CdCommonWrite)
|
||||||
|
@ -153,7 +162,7 @@ Return Value:
|
||||||
// Use a try-finally to facilitate cleanup.
|
// Use a try-finally to facilitate cleanup.
|
||||||
//
|
//
|
||||||
|
|
||||||
try {
|
_SEH2_TRY {
|
||||||
|
|
||||||
//
|
//
|
||||||
// Verify the Fcb. Allow writes if this is a DASD handle that is
|
// Verify the Fcb. Allow writes if this is a DASD handle that is
|
||||||
|
@ -346,7 +355,7 @@ Return Value:
|
||||||
}
|
}
|
||||||
|
|
||||||
try_exit: NOTHING;
|
try_exit: NOTHING;
|
||||||
} finally {
|
} _SEH2_FINALLY {
|
||||||
|
|
||||||
//
|
//
|
||||||
// Release the Fcb.
|
// Release the Fcb.
|
||||||
|
@ -356,7 +365,7 @@ Return Value:
|
||||||
|
|
||||||
CdReleaseFile( IrpContext, Fcb );
|
CdReleaseFile( IrpContext, Fcb );
|
||||||
}
|
}
|
||||||
}
|
} _SEH2_END;
|
||||||
|
|
||||||
//
|
//
|
||||||
// Post the request if we got CANT_WAIT.
|
// Post the request if we got CANT_WAIT.
|
||||||
|
|
Loading…
Reference in a new issue