32 #pragma alloc_text(PAGE, RfsdDeviceControl) 33 #pragma alloc_text(PAGE, RfsdDeviceControlNormal) 35 #pragma alloc_text(PAGE, RfsdPrepareToUnload) 44 if (
Irp->PendingReturned) {
84 Irp = IrpContext->Irp;
118 if (!IrpContext->ExceptionInProgress) {
121 IrpContext->Irp =
NULL;
162 GlobalDataResourceAcquired =
TRUE;
181 ListEntry = ListEntry->
Flink;
183 if (
Vcb && (!
Vcb->ReferenceCount) &&
205 #pragma prefast( suppress: 28175, "allowed to unload" ) 217 if (GlobalDataResourceAcquired) {
224 if (!IrpContext->ExceptionInProgress) {
250 Irp = IrpContext->Irp;
255 IoStackLocation->
Parameters.DeviceIoControl.IoControlCode;
260 case IOCTL_PREPARE_TO_UNLOAD:
#define ExGetCurrentResourceThread()
NTSTATUS RfsdCompleteIrpContext(IN PRFSD_IRP_CONTEXT IrpContext, IN NTSTATUS Status)
#define __drv_mustHoldCriticalRegion
#define STATUS_INVALID_PARAMETER
VOID NTAPI IoUnregisterFileSystem(IN PDEVICE_OBJECT DeviceObject)
#define STATUS_INVALID_DEVICE_REQUEST
_Must_inspect_result_ FORCEINLINE BOOLEAN IsListEmpty(_In_ const LIST_ENTRY *ListHead)
PDEVICE_OBJECT DeviceObject
#define IoSetCompletionRoutine(_Irp, _CompletionRoutine, _Context, _InvokeOnSuccess, _InvokeOnError, _InvokeOnCancel)
BOOLEAN NTAPI ExAcquireResourceExclusiveLite(IN PERESOURCE Resource, IN BOOLEAN Wait)
_In_ PDEVICE_OBJECT DeviceObject
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
NTSTATUS RfsdDeviceControlNormal(IN PRFSD_IRP_CONTEXT IrpContext)
VOID RfsdFreeVcb(IN PRFSD_VCB Vcb)
VOID RfsdRemoveVcb(PRFSD_VCB Vcb)
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
__drv_mustHoldCriticalRegion NTSTATUS RfsdDeviceControl(IN PRFSD_IRP_CONTEXT IrpContext)
struct _RFSD_VCB * PRFSD_VCB
struct _LIST_ENTRY * Flink
PDRIVER_OBJECT DriverObject
NTSTATUS NTAPI RfsdDeviceControlCompletion(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp, IN PVOID Context)
#define STATUS_ACCESS_DENIED
NTSTATUS NTAPI CompleteRequest(IN PIRP Irp, IN NTSTATUS Status, IN ULONG_PTR Information)
#define STATUS_UNSUCCESSFUL
#define VCB_DISMOUNT_PENDING
PDRIVER_UNLOAD DriverUnload
_In_ WDFREQUEST _In_ size_t _In_ size_t _In_ ULONG IoControlCode
__drv_aliasesMem FORCEINLINE PIO_STACK_LOCATION IoGetNextIrpStackLocation(_In_ PIRP Irp)
__drv_aliasesMem FORCEINLINE PIO_STACK_LOCATION IoGetCurrentIrpStackLocation(_In_ PIRP Irp)
NTSTATUS RfsdPrepareToUnload(IN PRFSD_IRP_CONTEXT IrpContext)
_In_ PIO_STACK_LOCATION IrpSp
static DRIVER_UNLOAD DriverUnload
NTSTATUS NTAPI IoCallDriver(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
VOID NTAPI ExReleaseResourceForThreadLite(IN PERESOURCE Resource, IN ERESOURCE_THREAD Thread)
VOID RfsdClearVpbFlag(IN PVPB Vpb, IN USHORT Flag)
#define RFSD_UNLOAD_PENDING
struct _NAMED_PIPE_CREATE_PARAMETERS * Parameters
IN OUT PVCB IN PDEVICE_OBJECT TargetDeviceObject