36 #pragma alloc_text(PAGE, FFSDeviceControl) 37 #pragma alloc_text(PAGE, FFSDeviceControlNormal) 39 #pragma alloc_text(PAGE, FFSPrepareToUnload) 50 if (
Irp->PendingReturned)
96 Irp = IrpContext->Irp;
134 if (!IrpContext->ExceptionInProgress)
140 IrpContext->Irp =
NULL;
184 GlobalDataResourceAcquired =
TRUE;
204 ListEntry = ListEntry->
Flink;
206 if (
Vcb && (!
Vcb->ReferenceCount) &&
230 #pragma prefast( suppress: 28175, "allowed to unload" ) 242 if (GlobalDataResourceAcquired)
249 if (!IrpContext->ExceptionInProgress)
278 Irp = IrpContext->Irp;
283 IoStackLocation->
Parameters.DeviceIoControl.IoControlCode;
288 case IOCTL_PREPARE_TO_UNLOAD:
#define ExGetCurrentResourceThread()
__drv_mustHoldCriticalRegion NTSTATUS FFSSelectBSDPartition(IN PFFS_IRP_CONTEXT IrpContext)
#define __drv_mustHoldCriticalRegion
#define STATUS_INVALID_PARAMETER
VOID NTAPI IoUnregisterFileSystem(IN PDEVICE_OBJECT DeviceObject)
VOID FFSClearVpbFlag(IN PVPB Vpb, IN USHORT Flag)
#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 NTAPI FFSDeviceControlCompletion(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp, IN PVOID Context)
__drv_mustHoldCriticalRegion NTSTATUS FFSDeviceControlNormal(IN PFFS_IRP_CONTEXT IrpContext)
struct _FFS_VCB * PFFS_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)
struct _LIST_ENTRY * Flink
VOID FFSRemoveVcb(PFFS_VCB Vcb)
#define IOCTL_SELECT_BSD_PARTITION
#define STATUS_ACCESS_DENIED
__drv_mustHoldCriticalRegion NTSTATUS FFSPrepareToUnload(IN PFFS_IRP_CONTEXT IrpContext)
NTSTATUS NTAPI CompleteRequest(IN PIRP Irp, IN NTSTATUS Status, IN ULONG_PTR Information)
__drv_mustHoldCriticalRegion VOID FFSFreeVcb(IN PFFS_VCB Vcb)
#define STATUS_UNSUCCESSFUL
__drv_mustHoldCriticalRegion NTSTATUS FFSCompleteIrpContext(IN PFFS_IRP_CONTEXT IrpContext, IN NTSTATUS Status)
#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)
_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)
struct _NAMED_PIPE_CREATE_PARAMETERS * Parameters
IN OUT PVCB IN PDEVICE_OBJECT TargetDeviceObject
PDRIVER_OBJECT DriverObject
#define FFS_UNLOAD_PENDING
__drv_mustHoldCriticalRegion NTSTATUS FFSDeviceControl(IN PFFS_IRP_CONTEXT IrpContext)