21 #define DBG_PNP DBG_USER 34 #pragma alloc_text(PAGE, RfsdPnp) 35 #pragma alloc_text(PAGE, RfsdPnpQueryRemove) 36 #pragma alloc_text(PAGE, RfsdPnpRemove) 37 #pragma alloc_text(PAGE, RfsdPnpCancelRemove) 38 #pragma alloc_text(PAGE, RfsdPnpSurpriseRemove) 43 #if (_WIN32_WINNT >= 0x0500) 92 Irp = IrpContext->Irp;
130 if (!IrpContext->ExceptionInProgress) {
131 Irp = IrpContext->Irp;
143 IrpContext->Irp =
NULL;
174 #if (_WIN32_WINNT >= 0x0500) 186 RfsdPrint((
DBG_PNP,
"RfsdPnpQueryRemove: RfsdLockVcb: Vcb=%xh FileObject=%xh ...\n",
230 RfsdPrint((
DBG_PNP,
"RfsdPnpQueryRemove: RfsdFlushVolume bDelted=%xh ...\n", bDeleted));
268 #if (_WIN32_WINNT >= 0x0500) 345 #if (_WIN32_WINNT >= 0x0500) 439 #endif // (_WIN32_WINNT >= 0x0500) #define IRP_MN_CANCEL_REMOVE_DEVICE
#define ExGetCurrentResourceThread()
NTSTATUS RfsdUnlockVcb(IN PRFSD_VCB Vcb, IN PFILE_OBJECT FileObject)
NTSTATUS RfsdCompleteIrpContext(IN PRFSD_IRP_CONTEXT IrpContext, IN NTSTATUS Status)
#define IRP_CONTEXT_FLAG_WAIT
#define IRP_MN_REMOVE_DEVICE
#define __drv_mustHoldCriticalRegion
#define STATUS_MORE_PROCESSING_REQUIRED
#define UNREFERENCED_PARAMETER(P)
#define STATUS_INVALID_PARAMETER
NTSTATUS RfsdFlushVolume(IN PRFSD_VCB Vcb, BOOLEAN bShutDown)
NTSTATUS RfsdFlushFiles(IN PRFSD_VCB Vcb, BOOLEAN bShutDown)
__drv_mustHoldCriticalRegion NTSTATUS RfsdPnpSurpriseRemove(PRFSD_IRP_CONTEXT IrpContext, PRFSD_VCB Vcb)
LONG NTAPI KeSetEvent(IN PKEVENT Event, IN KPRIORITY Increment, IN BOOLEAN Wait)
NTSTATUS NTAPI KeWaitForSingleObject(IN PVOID Object, IN KWAIT_REASON WaitReason, IN KPROCESSOR_MODE WaitMode, IN BOOLEAN Alertable, IN PLARGE_INTEGER Timeout OPTIONAL)
__drv_mustHoldCriticalRegion NTSTATUS RfsdPnpRemove(PRFSD_IRP_CONTEXT IrpContext, PRFSD_VCB Vcb)
#define IoSetCompletionRoutine(_Irp, _CompletionRoutine, _Context, _InvokeOnSuccess, _InvokeOnError, _InvokeOnCancel)
BOOLEAN NTAPI ExAcquireResourceExclusiveLite(IN PERESOURCE Resource, IN BOOLEAN Wait)
FORCEINLINE VOID IoCopyCurrentIrpStackLocationToNext(_Inout_ PIRP Irp)
_In_ PDEVICE_OBJECT DeviceObject
#define IO_DISK_INCREMENT
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
#define IRP_MN_QUERY_REMOVE_DEVICE
__drv_mustHoldCriticalRegion NTSTATUS RfsdPurgeVolume(IN PRFSD_VCB Vcb, IN BOOLEAN FlushBeforePurge)
_In_ PVOID _In_ ULONG Event
struct _RFSD_VCB * PRFSD_VCB
NTSTATUS NTAPI CcWaitForCurrentLazyWriterActivity(VOID)
__drv_mustHoldCriticalRegion NTSTATUS RfsdPnp(IN PRFSD_IRP_CONTEXT IrpContext)
#define IRP_MN_SURPRISE_REMOVAL
#define NT_SUCCESS(StatCode)
NTSTATUS RfsdLockVcb(IN PRFSD_VCB Vcb, IN PFILE_OBJECT FileObject)
NTSTATUS NTAPI RfsdPnpCompletionRoutine(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp, IN PVOID Contxt)
__drv_mustHoldCriticalRegion NTSTATUS RfsdPnpCancelRemove(PRFSD_IRP_CONTEXT IrpContext, PRFSD_VCB Vcb)
__drv_aliasesMem FORCEINLINE PIO_STACK_LOCATION IoGetCurrentIrpStackLocation(_In_ PIRP Irp)
#define KeInitializeEvent(pEvt, foo, foo2)
_In_ PIO_STACK_LOCATION IrpSp
__drv_mustHoldCriticalRegion NTSTATUS RfsdPnpQueryRemove(PRFSD_IRP_CONTEXT IrpContext, PRFSD_VCB Vcb)
NTSTATUS NTAPI IoCallDriver(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
#define IoSkipCurrentIrpStackLocation(Irp)
VOID NTAPI ExReleaseResourceForThreadLite(IN PERESOURCE Resource, IN ERESOURCE_THREAD Thread)
BOOLEAN RfsdCheckDismount(IN PRFSD_IRP_CONTEXT IrpContext, IN PRFSD_VCB Vcb, IN BOOLEAN bForce)
#define RfsdCompleteRequest(Irp, bPrint, PriorityBoost)