Data Structures |
| struct | PDICTIONARY |
| struct | PCLASSPNP_SCAN_FOR_SPECIAL_INFO |
| struct | PSRB_HISTORY_ITEM |
| struct | PSRB_HISTORY |
| struct | GUIDREGINFO |
| struct | PCLASS_WMI_INFO |
| struct | PCLASS_DEV_INFO |
| struct | PCLASS_INIT_DATA |
| struct | PFILE_OBJECT_EXTENSION |
| struct | PCLASS_WORKING_SET |
| struct | PCLASS_INTERPRET_SENSE_INFO2 |
| struct | PCLASS_DRIVER_EXTENSION |
| struct | PCOMMON_DEVICE_EXTENSION |
| struct | PPHYSICAL_DEVICE_EXTENSION |
| struct | PCLASS_POWER_OPTIONS |
| struct | PCLASS_POWER_CONTEXT |
| struct | PCOMPLETION_CONTEXT |
| struct | PCLASS_QUERY_WMI_REGINFO_EX_LIST |
| struct | PFUNCTIONAL_DEVICE_EXTENSION |
Defines |
| #define | _CLASS_ |
| #define | max(a, b) (((a) > (b)) ? (a) : (b)) |
| #define | min(a, b) (((a) < (b)) ? (a) : (b)) |
| #define | SRB_CLASS_FLAGS_LOW_PRIORITY 0x10000000 |
| #define | SRB_CLASS_FLAGS_PERSISTANT 0x20000000 |
| #define | SRB_CLASS_FLAGS_PAGING 0x40000000 |
| #define | SRB_CLASS_FLAGS_FREE_MDL 0x80000000 |
| #define | ASSERT_FDO(x) ASSERT(((PCOMMON_DEVICE_EXTENSION) (x)->DeviceExtension)->IsFdo) |
| #define | ASSERT_PDO(x) ASSERT(!(((PCOMMON_DEVICE_EXTENSION) (x)->DeviceExtension)->IsFdo)) |
| #define | IS_CLEANUP_REQUEST(majorFunction) |
| #define | DO_MCD(fdoExtension) |
| #define | IS_SCSIOP_READ(opCode) |
| #define | IS_SCSIOP_WRITE(opCode) |
| #define | IS_SCSIOP_READWRITE(opCode) (IS_SCSIOP_READ(opCode) || IS_SCSIOP_WRITE(opCode)) |
| #define | ADJUST_FUA_FLAG(fdoExt) |
| #define | FREE_POOL(_PoolPtr) |
| #define | CLASS_TAG_AUTORUN_DISABLE 'ALcS' |
| #define | CLASS_TAG_FILE_OBJECT_EXTENSION 'FLcS' |
| #define | CLASS_TAG_MEDIA_CHANGE_DETECTION 'MLcS' |
| #define | CLASS_TAG_MOUNT 'mLcS' |
| #define | CLASS_TAG_RELEASE_QUEUE 'qLcS' |
| #define | CLASS_TAG_POWER 'WLcS' |
| #define | CLASS_TAG_WMI 'wLcS' |
| #define | CLASS_TAG_FAILURE_PREDICT 'fLcS' |
| #define | CLASS_TAG_DEVICE_CONTROL 'OIcS' |
| #define | CLASS_TAG_MODE_DATA 'oLcS' |
| #define | CLASS_TAG_MULTIPATH 'mPcS' |
| #define | MAXIMUM_RETRIES 4 |
| #define | CLASS_DRIVER_EXTENSION_KEY ((PVOID) ClassInitialize) |
| #define | NO_REMOVE 0 |
| #define | REMOVE_PENDING 1 |
| #define | REMOVE_COMPLETE 2 |
| #define | ClassAcquireRemoveLock(devobj, tag) ClassAcquireRemoveLockEx(devobj, tag, __FILE__, __LINE__) |
| #define | TRY |
| #define | LEAVE goto __tryLabel; |
| #define | FINALLY __tryLabel: |
| #define | DebugPrint(x) |
| #define | DEBUG_BUFFER_LENGTH 256 |
| #define | START_UNIT_TIMEOUT (60 * 4) |
| #define | MEDIA_CHANGE_DEFAULT_TIME 1 |
| #define | MEDIA_CHANGE_TIMEOUT_TIME 300 |
| #define | ClasspAllocateSrb(ext) |
| #define | ClasspFreeSrb(ext, srb) |
| #define | SET_FLAG(Flags, Bit) ((Flags) |= (Bit)) |
| #define | CLEAR_FLAG(Flags, Bit) ((Flags) &= ~(Bit)) |
| #define | TEST_FLAG(Flags, Bit) (((Flags) & (Bit)) != 0) |
| #define | CLASS_WORKING_SET_MAXIMUM 2048 |
| #define | CLASS_INTERPRET_SENSE_INFO2_MAXIMUM_HISTORY_COUNT 30000 |
| #define | CLASS_SPECIAL_DISABLE_SPIN_DOWN 0x00000001 |
| #define | CLASS_SPECIAL_DISABLE_SPIN_UP 0x00000002 |
| #define | CLASS_SPECIAL_NO_QUEUE_LOCK 0x00000008 |
| #define | CLASS_SPECIAL_DISABLE_WRITE_CACHE 0x00000010 |
| #define | CLASS_SPECIAL_CAUSE_NOT_REPORTABLE_HACK 0x00000020 |
| #define | CLASS_SPECIAL_DISABLE_WRITE_CACHE_NOT_SUPPORTED 0x00000040 |
| #define | CLASS_SPECIAL_MODIFY_CACHE_UNSUCCESSFUL 0x00000040 |
| #define | CLASS_SPECIAL_FUA_NOT_SUPPORTED 0x00000080 |
| #define | CLASS_SPECIAL_VALID_MASK 0x000000FB |
| #define | CLASS_SPECIAL_RESERVED (~CLASS_SPECIAL_VALID_MASK) |
| #define | DEV_WRITE_CACHE 0x00000001 |
| #define | DEV_USE_SCSI1 0x00000002 |
| #define | DEV_SAFE_START_UNIT 0x00000004 |
| #define | DEV_NO_12BYTE_CDB 0x00000008 |
| #define | DEV_POWER_PROTECTED 0x00000010 |
| #define | DEV_USE_16BYTE_CDB 0x00000020 |
| #define | GUID_CLASSPNP_QUERY_REGINFOEX {0x00e34b11, 0x2444, 0x4745, {0xa5, 0x3d, 0x62, 0x01, 0x00, 0xcd, 0x82, 0xf7}} |
| #define | GUID_CLASSPNP_SENSEINFO2 {0x509a8c5f, 0x71d7, 0x48f6, {0x82, 0x1e, 0x17, 0x3c, 0x49, 0xbf, 0x2f, 0x18}} |
| #define | GUID_CLASSPNP_WORKING_SET {0x105701b0, 0x9e9b, 0x47cb, {0x97, 0x80, 0x81, 0x19, 0x8a, 0xf7, 0xb5, 0x24}} |
| #define | DEFAULT_FAILURE_PREDICTION_PERIOD 60 * 60 * 1 |
| #define | MAXIMUM_RETRY_FOR_SINGLE_IO_IN_100NS_UNITS (0x3b9aca00) |
Typedefs |
typedef enum
_MEDIA_CHANGE_DETECTION_STATE * | PMEDIA_CHANGE_DETECTION_STATE |
| typedef enum _CLASS_DEBUG_LEVEL * | PCLASS_DEBUG_LEVEL |
typedef enum
FAILURE_PREDICTION_METHOD * | PFAILURE_PREDICTION_METHOD |
typedef struct
_CLASS_PRIVATE_PDO_DATA | CLASS_PRIVATE_PDO_DATA |
typedef struct
_CLASS_PRIVATE_PDO_DATA * | PCLASS_PRIVATE_PDO_DATA |
typedef struct
_CLASS_PRIVATE_COMMON_DATA | CLASS_PRIVATE_COMMON_DATA |
typedef struct
_CLASS_PRIVATE_COMMON_DATA * | PCLASS_PRIVATE_COMMON_DATA |
| typedef NTSTATUS(NTAPI * | PCLASS_POWER_DEVICE )(_In_ PDEVICE_OBJECT DeviceObject, _In_ PIRP Irp) |
| typedef struct GUIDREGINFO * | PGUIDREGINFO |
Enumerations |
| enum | MEDIA_CHANGE_DETECTION_STATE { MediaUnknown,
MediaPresent,
MediaNotPresent,
MediaUnavailable
} |
| enum | CLASS_DEBUG_LEVEL {
ClassDebugError = 0,
ClassDebugWarning = 1,
ClassDebugTrace = 2,
ClassDebugInfo = 3,
ClassDebugMediaLocks = 8,
ClassDebugMCN = 9,
ClassDebugDelayedRetry = 10,
ClassDebugSenseInfo = 11,
ClassDebugRemoveLock = 12,
ClassDebugExternal4 = 13,
ClassDebugExternal3 = 14,
ClassDebugExternal2 = 15,
ClassDebugExternal1 = 16
} |
| enum | CLASSENABLEDISABLEFUNCTION { EventGeneration,
DataBlockCollection
} |
| enum | FAILURE_PREDICTION_METHOD { FailurePredictionNone = 0,
FailurePredictionIoctl,
FailurePredictionSmart,
FailurePredictionSense
} |
| enum | CLASS_POWER_DOWN_STATE {
PowerDownDeviceInitial,
PowerDownDeviceLocked,
PowerDownDeviceStopped,
PowerDownDeviceOff,
PowerDownDeviceUnlocked
} |
| enum | CLASS_POWER_DOWN_STATE2 {
PowerDownDeviceInitial2,
PowerDownDeviceLocked2,
PowerDownDeviceFlushed2,
PowerDownDeviceStopped2,
PowerDownDeviceOff2,
PowerDownDeviceUnlocked2
} |
| enum | CLASS_POWER_UP_STATE {
PowerUpDeviceInitial,
PowerUpDeviceLocked,
PowerUpDeviceOn,
PowerUpDeviceStarted,
PowerUpDeviceUnlocked
} |
Functions |
| static ULONG | CountOfSetBitsUChar (UCHAR _X) |
| static ULONG | CountOfSetBitsULong (ULONG _X) |
| static ULONG | CountOfSetBitsULong32 (ULONG32 _X) |
| static ULONG | CountOfSetBitsULong64 (ULONG64 _X) |
| static ULONG | CountOfSetBitsUlongPtr (ULONG_PTR _X) |
| | _IRQL_requires_max_ (DISPATCH_LEVEL) typedef VOID(NTAPI *PCLASS_ERROR)(_In_ PDEVICE_OBJECT DeviceObject = NULL |
| | _IRQL_requires_max_ (PASSIVE_LEVEL) typedef NTSTATUS(NTAPI *PCLASS_ADD_DEVICE)(_In_ PDRIVER_OBJECT DriverObject = = 0 |
| | _IRQL_requires_ (DISPATCH_LEVEL) typedef VOID(NTAPI *PCLASS_TICK)(_In_ PDEVICE_OBJECT DeviceObject) |
| _In_ PIRP _In_ ULONG _In_ ULONG | _Out_writes_bytes_ (BufferAvail) PUCHAR Buffer) |
| _In_ PIRP _In_ ULONG _In_ ULONG | _In_reads_bytes_ (BufferSize) PUCHAR Buffer) |
_In_ PIRP _In_ ULONG _In_
ULONG _In_ ULONG _In_ ULONG | _In_reads_ (_Inexpressible_(max(InBufferSize, OutBufferSize))) PUCHAR Buffer) |
_In_opt_ PIRP _In_
PSCSI_REQUEST_BLOCK _In_ UCHAR
_In_ ULONG _In_ ULONG _In_opt_
SRB_HISTORY _Out_ NTSTATUS
_Out_ | _Deref_out_range_ (0, MAXIMUM_RETRY_FOR_SINGLE_IO_IN_100NS_UNITS) LONGLONG *RetryIn100nsUnits) |
| | _Pre_equal_to_ (RequestHistory->TotalHistoryCount) _Out_range_(0 |
RequestHistory
TotalHistoryCount typedef | VOID (NTAPI *PCLASS_COMPRESS_RETRY_HISTORY_DATA)(_In_ PDEVICE_OBJECT DeviceObject |
| | C_ASSERT ((MAXULONG-sizeof(SRB_HISTORY))/30000 >=sizeof(SRB_HISTORY_ITEM)) |
_In_z_ PCCHAR _In_
PDEVICE_OBJECT _In_ BOOLEAN
_Outptr_result_nullonfailure_
_At_ * | DeviceObject (Mem) __drv_aliasesMem) PDEVICE_OBJECT *DeviceObject |
_Must_inspect_result_
SCSIPORTAPI NTSTATUS NTAPI | ClassReadDriveCapacity (_In_ PDEVICE_OBJECT DeviceObject) |
| SCSIPORTAPI VOID NTAPI | ClassReleaseQueue (_In_ PDEVICE_OBJECT DeviceObject) |
| SCSIPORTAPI VOID NTAPI | ClassSplitRequest (_In_ PDEVICE_OBJECT DeviceObject, _In_ PIRP Irp, _In_ ULONG MaximumBytes) |
| SCSIPORTAPI NTSTATUS NTAPI | ClassDeviceControl (_In_ PDEVICE_OBJECT DeviceObject, _Inout_ PIRP Irp) |
| SCSIPORTAPI NTSTATUS NTAPI | ClassIoComplete (PDEVICE_OBJECT DeviceObject, PIRP Irp, PVOID Context) |
| SCSIPORTAPI NTSTATUS NTAPI | ClassIoCompleteAssociated (PDEVICE_OBJECT DeviceObject, PIRP Irp, PVOID Context) |
| SCSIPORTAPI BOOLEAN NTAPI | ClassInterpretSenseInfo (_In_ PDEVICE_OBJECT DeviceObject, _In_ PSCSI_REQUEST_BLOCK Srb, _In_ UCHAR MajorFunctionCode, _In_ ULONG IoDeviceCode, _In_ ULONG RetryCount, _Out_ NTSTATUS *Status, _Out_opt_ _Deref_out_range_(0, 100) ULONG *RetryInterval) |
| VOID NTAPI | ClassSendDeviceIoControlSynchronous (_In_ ULONG IoControlCode, _In_ PDEVICE_OBJECT TargetDeviceObject, _Inout_updates_opt_(_Inexpressible_(max(InputBufferLength, OutputBufferLength))) PVOID Buffer, _In_ ULONG InputBufferLength, _In_ ULONG OutputBufferLength, _In_ BOOLEAN InternalDeviceIoControl, _Out_ PIO_STATUS_BLOCK IoStatus) |
| SCSIPORTAPI NTSTATUS NTAPI | ClassSendIrpSynchronous (_In_ PDEVICE_OBJECT TargetDeviceObject, _In_ PIRP Irp) |
| SCSIPORTAPI NTSTATUS NTAPI | ClassForwardIrpSynchronous (_In_ PCOMMON_DEVICE_EXTENSION CommonExtension, _In_ PIRP Irp) |
| SCSIPORTAPI NTSTATUS NTAPI | ClassSendSrbSynchronous (_In_ PDEVICE_OBJECT DeviceObject, _Inout_ PSCSI_REQUEST_BLOCK Srb, _In_reads_bytes_opt_(BufferLength) PVOID BufferAddress, _In_ ULONG BufferLength, _In_ BOOLEAN WriteToDevice) |
| SCSIPORTAPI NTSTATUS NTAPI | ClassSendSrbAsynchronous (_In_ PDEVICE_OBJECT DeviceObject, _Inout_ PSCSI_REQUEST_BLOCK Srb, _In_ PIRP Irp, _In_reads_bytes_opt_(BufferLength) __drv_aliasesMem PVOID BufferAddress, _In_ ULONG BufferLength, _In_ BOOLEAN WriteToDevice) |
| SCSIPORTAPI NTSTATUS NTAPI | ClassBuildRequest (_In_ PDEVICE_OBJECT DeviceObject, _In_ PIRP Irp) |
| SCSIPORTAPI ULONG NTAPI | ClassModeSense (_In_ PDEVICE_OBJECT DeviceObject, _In_reads_bytes_(Length) PCHAR ModeSenseBuffer, _In_ ULONG Length, _In_ UCHAR PageMode) |
| SCSIPORTAPI PVOID NTAPI | ClassFindModePage (_In_reads_bytes_(Length) PCHAR ModeSenseBuffer, _In_ ULONG Length, _In_ UCHAR PageMode, _In_ BOOLEAN Use6Byte) |
| SCSIPORTAPI NTSTATUS NTAPI | ClassInternalIoControl (PDEVICE_OBJECT DeviceObject, PIRP Irp) |
| SCSIPORTAPI VOID | ClassDebugPrint (_In_ CLASS_DEBUG_LEVEL DebugPrintLevel, _In_z_ PCCHAR DebugMessage,...) |
| SCSIPORTAPI VOID NTAPI | ClassCompleteRequest (_In_ PDEVICE_OBJECT DeviceObject, _In_ PIRP Irp, _In_ CCHAR PriorityBoost) |
| SCSIPORTAPI VOID NTAPI | ClassReleaseRemoveLock (_In_ PDEVICE_OBJECT DeviceObject, PIRP Tag) |
| SCSIPORTAPI ULONG NTAPI | ClassAcquireRemoveLockEx (_In_ PDEVICE_OBJECT DeviceObject, PVOID Tag, _In_ PCSTR File, _In_ ULONG Line) |
| _In_ PCHAR _In_ ULONG | _In_reads_bytes_opt_ (InquiryDataLength) PINQUIRYDATA InquiryData |
| SCSIPORTAPI NTSTATUS NTAPI | ClassWmiCompleteRequest (_In_ PDEVICE_OBJECT DeviceObject, _Inout_ PIRP Irp, _In_ NTSTATUS Status, _In_ ULONG BufferUsed, _In_ CCHAR PriorityBoost) |
| _In_ LPGUID _In_ ULONG _In_ ULONG | _In_reads_bytes_ (EventDataSize) PVOID EventData) |
| SCSIPORTAPI VOID NTAPI | ClassResetMediaChangeTimer (_In_ PFUNCTIONAL_DEVICE_EXTENSION FdoExtension) |
| SCSIPORTAPI PVPB NTAPI | ClassGetVpb (_In_ PDEVICE_OBJECT DeviceObject) |
| SCSIPORTAPI NTSTATUS NTAPI | ClassSpinDownPowerHandler (_In_ PDEVICE_OBJECT DeviceObject, _In_ PIRP Irp) |
| NTSTATUS NTAPI | ClassStopUnitPowerHandler (_In_ PDEVICE_OBJECT DeviceObject, _In_ PIRP Irp) |
| SCSIPORTAPI VOID NTAPI | ClassReleaseChildLock (_In_ PFUNCTIONAL_DEVICE_EXTENSION FdoExtension) |
| NTSTATUS NTAPI | ClassSignalCompletion (PDEVICE_OBJECT DeviceObject, PIRP Irp, PKEVENT Event) |
| VOID NTAPI | ClassSendStartUnit (_In_ PDEVICE_OBJECT DeviceObject) |
| SCSIPORTAPI NTSTATUS NTAPI | ClassAsynchronousCompletion (PDEVICE_OBJECT DeviceObject, PIRP Irp, PVOID Event) |
| SCSIPORTAPI VOID NTAPI | ClassCheckMediaState (_In_ PFUNCTIONAL_DEVICE_EXTENSION FdoExtension) |
| SCSIPORTAPI NTSTATUS NTAPI | ClassCheckVerifyComplete (PDEVICE_OBJECT DeviceObject, PIRP Irp, PVOID Context) |
| _In_ const GUID _In_ ULONG | _In_reads_bytes_opt_ (ExtraDataSize) PVOID ExtraData) |
| static __inline BOOLEAN | PORT_ALLOCATED_SENSE (_In_ PFUNCTIONAL_DEVICE_EXTENSION FdoExtension, _In_ PSCSI_REQUEST_BLOCK Srb) |
| static __inline VOID | FREE_PORT_ALLOCATED_SENSE_BUFFER (_In_ PFUNCTIONAL_DEVICE_EXTENSION FdoExtension, _In_ PSCSI_REQUEST_BLOCK Srb) |
Variables |
RequestHistory
TotalHistoryCount typedef
_Inout_ PSRB_HISTORY | RequestHistory |
| _In_ PSCSI_REQUEST_BLOCK | Srb |
_In_ PSCSI_REQUEST_BLOCK _Out_
NTSTATUS * | Status |
_In_ PSCSI_REQUEST_BLOCK _Out_
NTSTATUS _Inout_ BOOLEAN * | Retry |
| _In_ PDEVICE_OBJECT | Pdo |
| _In_ UCHAR | Type |
| _In_ PIRP | Irp |
| _In_ BUS_QUERY_ID_TYPE | IdType |
_In_ BUS_QUERY_ID_TYPE _In_
PUNICODE_STRING | IdString |
| _In_ PDEVICE_CAPABILITIES | Capabilities |
| _Out_ ULONG * | RegFlags |
| _Out_ ULONG _Out_ PUNICODE_STRING | Name |
_Out_ ULONG _Out_
PUNICODE_STRING _Out_
PUNICODE_STRING | MofResourceName |
| _In_ PIRP _In_ ULONG | GuidIndex |
| _In_ PIRP _In_ ULONG _In_ ULONG | BufferAvail |
| _In_ PIRP _In_ ULONG _In_ ULONG | BufferSize |
| _In_ PIRP _In_ ULONG _In_ ULONG | DataItemId |
| _In_ PIRP _In_ ULONG _In_ ULONG | MethodId |
_In_ PIRP _In_ ULONG _In_
ULONG _In_ ULONG | InBufferSize |
_In_ PIRP _In_ ULONG _In_
ULONG _In_ ULONG _In_ ULONG | OutBufferSize |
_In_ PIRP _In_ ULONG _In_
CLASSENABLEDISABLEFUNCTION | Function |
_In_ PIRP _In_ ULONG _In_
CLASSENABLEDISABLEFUNCTION
_In_ BOOLEAN | Enable |
| _In_opt_ PIRP | OriginalRequest |
_In_opt_ PIRP _In_
PSCSI_REQUEST_BLOCK _In_ UCHAR | MajorFunctionCode |
_In_opt_ PIRP _In_
PSCSI_REQUEST_BLOCK _In_ UCHAR
_In_ ULONG | IoDeviceCode |
_In_opt_ PIRP _In_
PSCSI_REQUEST_BLOCK _In_ UCHAR
_In_ ULONG _In_ ULONG | PreviousRetryCount |
| _In_ PVOID | Argument2 |
| _In_ PVOID _In_ PCLASS_INIT_DATA | InitializationData |
| _In_ LPGUID | Guid |
| _In_ LPGUID _In_ PVOID | Data |
| _In_z_ PCCHAR | ObjectNameBuffer |
| _In_z_ PCCHAR _In_ PDEVICE_OBJECT | LowerDeviceObject |
_In_z_ PCCHAR _In_
PDEVICE_OBJECT _In_ BOOLEAN | IsFdo |
| _In_ BOOLEAN | Release |
| _In_ ULONG | NumberElements |
| _In_ PSTORAGE_PROPERTY_ID | PropertyId |
_In_ PSTORAGE_PROPERTY_ID
_Outptr_
PSTORAGE_DESCRIPTOR_HEADER * | Descriptor |
| _In_ BOOLEAN | AcquireChildLock |
| _In_ PCHAR | DeviceName |
| _In_ PCHAR _In_ ULONG | DeviceNumber |
| _In_ PCHAR _In_ ULONG _In_ ULONG | InquiryDataLength |
| _In_ LPGUID _In_ ULONG | InstanceIndex |
| _In_ LPGUID _In_ ULONG _In_ ULONG | EventDataSize |
| _In_ PUCHAR | EventPrefix |
| _In_ BOOLEAN | AllowDriveToSleep |
| _In_ FAILURE_PREDICTION_METHOD | FailurePredictionMethod |
_In_ FAILURE_PREDICTION_METHOD
_In_ ULONG | PollingPeriod |
| _In_ ULONG _In_ BOOLEAN | LogError |
| _In_ ULONG _In_ BOOLEAN _In_ ULONG | UniqueErrorValue |
_In_ ULONG _In_ BOOLEAN _In_
ULONG _In_ UCHAR | PathId |
_In_ ULONG _In_ BOOLEAN _In_
ULONG _In_ UCHAR _In_ UCHAR | TargetId |
_In_ ULONG _In_ BOOLEAN _In_
ULONG _In_ UCHAR _In_ UCHAR
_In_ UCHAR | Lun |
| _In_ UCHAR | RemoveType |
| _In_ MEDIA_CHANGE_DETECTION_STATE | State |
_In_
MEDIA_CHANGE_DETECTION_STATE
_In_ BOOLEAN | Wait |
| _In_opt_ PWSTR | SubkeyName |
| _In_opt_ PWSTR _In_ PWSTR | ParameterName |
_In_opt_ PWSTR _In_ PWSTR
_Inout_ PULONG | ParameterValue |
| _In_ PFILE_OBJECT | FileObject |
| _In_ const GUID _In_ ULONG | ExtraDataSize |
| _In_ CLASSPNP_SCAN_FOR_SPECIAL_INFO | DeviceList [] |