#ifndef _CDPROCS_
#define _CDPROCS_
+#ifdef _MSC_VER
#pragma warning( disable: 4127 ) // conditional expression is constant
#pragma warning( push )
#pragma warning( disable: 4201 ) // nonstandard extension used : nameless struct/union
#pragma warning( disable: 4214 ) // nonstandard extension used : bit field types
+#endif
#include <ntifs.h>
#include <ntddcdrm.h>
#include <ntdddisk.h>
#include <ntddscsi.h>
+#ifdef __REACTOS__
+#include <pseh/pseh2.h>
+#endif
#ifndef INLINE
#define INLINE __inline
#endif
#include "nodetype.h"
-#include "Cd.h"
-#include "CdStruc.h"
-#include "CdData.h"
+#include "cd.h"
+#include "cdstruc.h"
+#include "cddata.h"
#ifdef CDFS_TELEMETRY_DATA
#endif // CDFS_TELEMETRY_DATA
+#ifdef _MSC_VER
#pragma warning( pop )
+#endif
//**** x86 compiler bug ****
_In_ BOOLEAN DismountUnderway
);
+static /* ReactOS Change: GCC "multiple definition" */
+INLINE /* GCC only accepts __inline as the first modifier */
VOID
-INLINE
CdVerifyOrCreateDirStreamFile (
_In_ PIRP_CONTEXT IrpContext,
_In_ PFCB Fcb
// );
//
+#ifndef __REACTOS__
#define CdMapUserBuffer(IC, UB) { \
*(UB) = (PVOID) ( ((IC)->Irp->MdlAddress == NULL) ? \
(IC)->Irp->UserBuffer : \
} \
}
+#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) { \
if ((IC)->Irp->MdlAddress == NULL) { \
#endif
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
);
_Requires_lock_held_(_Global_critical_region_)
_When_(return!=0, _Acquires_shared_lock_(*Fcb->Resource))
BOOLEAN
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
CdAcquireForCache (
_Inout_ PFCB Fcb,
_In_ BOOLEAN Wait
_Requires_lock_held_(_Global_critical_region_)
_Releases_lock_(*Fcb->Resource)
VOID
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
CdReleaseFromCache (
_Inout_ PFCB Fcb
);
_Requires_lock_held_(_Global_critical_region_)
NTSTATUS
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
CdFilterCallbackAcquireForCreateSection (
_In_ PFS_FILTER_CALLBACK_DATA CallbackData,
_Unreferenced_parameter_ PVOID *CompletionContext
_Function_class_(FAST_IO_RELEASE_FILE)
_Requires_lock_held_(_Global_critical_region_)
VOID
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
CdReleaseForCreateSection (
_In_ PFILE_OBJECT FileObject
);
sizeof( CD_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
CdLookupFcbTable (
//
#define CdPagedPool PagedPool
+#ifndef __REACTOS__
#define CdNonPagedPool NonPagedPoolNx
#define CdNonPagedPoolCacheAligned NonPagedPoolNxCacheAligned
+#else
+#define CdNonPagedPool NonPagedPool
+#define CdNonPagedPoolCacheAligned NonPagedPoolCacheAligned
+#endif
//
// Verification support routines. Contained in verfysup.c
//
-
+static /* ReactOS Change: GCC "multiple definition" */
INLINE
BOOLEAN
CdOperationIsDasdOpen (
_Requires_lock_held_(_Global_critical_region_)
VOID
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
CdPrePostIrp (
_Inout_ PIRP_CONTEXT IrpContext,
_Inout_ PIRP Irp
_Requires_lock_held_(_Global_critical_region_)
VOID
+NTAPI /* ReactOS Change: GCC Does not support STDCALL by default */
CdOplockComplete (
_Inout_ PIRP_CONTEXT IrpContext,
_Inout_ PIRP Irp
// otherwise
//
+/* GCC complains about multi-line comments.
//#ifndef BooleanFlagOn
//#define BooleanFlagOn(F,SF) ( \
// (BOOLEAN)(((F) & (SF)) != 0) \
// (Flags) &= ~(SingleFlag); \
//}
//#endif
+*/
//
// CAST
((ULONG) (L)) >> SECTOR_SHIFT \
)
+static /* ReactOS Change: GCC "multiple definition" */
INLINE
ULONG
SectorsFromLlBytes(
__drv_dispatchType(IRP_MJ_PNP)
__drv_dispatchType(IRP_MJ_SHUTDOWN)
NTSTATUS
+NTAPI
CdFsdDispatch (
_In_ PDEVICE_OBJECT DeviceObject,
_Inout_ PIRP Irp
// #define try_return(S) { S; goto try_exit; }
//
+#ifndef __REACTOS__
#define try_return(S) { S; goto try_exit; }
#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
//
+/* 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
VOID
-CdFreePool(
+_CdFreePool(
_Inout_ _At_(*Pool, __drv_freesMem(Mem) _Post_null_) PVOID *Pool
)
{