61#define MAX_TRANSFER_SIZE 64 * 1024
67#define BUSLOGIC_MAXIMUM_TAGS 128
72#define BusLogic_MaxTaggedQueueDepth 128
78#define BusLogic_DefaultBusSettleTime 2
81#define BusLogic_MaxTargetDevices 16
84#define BusLogic_MaxLogicalUnits 32
90#define BusLogic_MaxMailboxes 211
93#define BusLogic_BIOS_BaseOffset 0
94#define BusLogic_AutoSCSI_BaseOffset 64
97#define BusLogic_CDB_MaxLength 12
102#define BusLogic_ScatterGatherLimit 128
103#define MAX_SG_LIMIT BusLogic_ScatterGatherLimit
105#define BusLogic_AggressiveRoundRobinMode 0
106#define BusLogic_StrictRoundRobinMode 1
109#define BusLogic_Allocate14Bytes 0x00
110#define BusLogic_DisableAutoReqSense 0x01
248#define BusLogic_SizeBuckets 10
656static char *BusLogic_HostAdapterBusNames[] = {
"Unknown",
"ISA",
"EISA",
"PCI",
"VESA",
"MCA" };
923 UCHAR SenseDataLength);
947#define BusLogic_ControlRegisterOffset 0
948#define BusLogic_StatusRegisterOffset 0
949#define BusLogic_CommandParameterRegisterOffset 1
950#define BusLogic_DataInRegisterOffset 1
951#define BusLogic_InterruptRegisterOffset 2
952#define BusLogic_GeometryRegisterOffset 3
1031 ControlRegister.
All = 0;
1032 ControlRegister.
Bits.InterruptReset =
TRUE;
1042 ControlRegister.
All = 0;
1043 ControlRegister.
Bits.SoftReset =
TRUE;
1052 ControlRegister.
All = 0;
1053 ControlRegister.
Bits.HardReset =
TRUE;
1143 if (ByteCounter->
Units > 999999999)
1145 ByteCounter->
Units -= 1000000000;
1163 else if (
Amount < 128*1024)
1172 CommandSizeBuckets[
Index]++;
1181 if (*ErrorCounter < 65535) (*ErrorCounter)++;
struct BusLogic_CCB * PBuslogic_CCB_T
static void BusLogic_SoftReset(BusLogic_HostAdapter_T *HostAdapter)
BusLogic_SetCCBFormatRequest
@ BusLogic_ExtendedLUNFormatCCB
@ BusLogic_LegacyLUNFormatCCB
void BusLogic_QueueCompletedCCB(PHW_DEVICE_EXTENSION deviceExtension, BusLogic_CCB_T *CCB)
struct BusLogic_PCIHostAdapterInformation BusLogic_PCIHostAdapterInformation_T
@ BusLogic_OrderedQueueTag
@ BusLogic_SimpleQueueTag
@ BusLogic_HeadOfQueueTag
static VOID WriteBusLogicPort(UCHAR data, PUCHAR adr)
BOOLEAN BusLogic_TargetDeviceInquiry(BusLogic_HostAdapter_T *HostAdapter)
BOOLEAN BusLogic_SendBusDeviceReset(IN PVOID HwDeviceExtension, PSCSI_REQUEST_BLOCK Srb)
struct _NONCACHED_EXTENSION * PNONCACHED_EXTENSION
static UCHAR BusLogic_ReadStatusRegister(BusLogic_HostAdapter_T *HostAdapter)
#define BusLogic_CDB_MaxLength
void BusLogic_ScanIncomingMailboxes(PHW_DEVICE_EXTENSION deviceExtension)
BOOLEAN BusLogic_ReadHostAdapterConfiguration(BusLogic_HostAdapter_T *HostAdapter)
struct BusLogic_FetchHostAdapterLocalRAMRequest BusLogic_FetchHostAdapterLocalRAMRequest_T
enum BusLogic_BIOS_DiskGeometryTranslation BusLogic_BIOS_DiskGeometryTranslation_T
static void BusLogic_IncrementSizeBucket(BusLogic_CommandSizeBuckets_T CommandSizeBuckets, unsigned int Amount)
unsigned int BusLogic_CommandSizeBuckets_T[BusLogic_SizeBuckets]
union BusLogic_GeometryRegister BusLogic_GeometryRegister_T
BOOLEAN NTAPI BT958HwInitialize(IN PVOID HwDeviceExtension)
static BusLogic_HostAdapterBusType_T BusLogic_HostAdapterBusTypes[]
static void BusLogic_IncrementErrorCounter(unsigned short *ErrorCounter)
static void BusLogic_StartMailboxCommand(BusLogic_HostAdapter_T *HostAdapter)
@ BusLogic_UploadAutoSCSICode
@ BusLogic_InquirePCIHostAdapterInformation
@ BusLogic_DisableHostAdapterInterrupt
@ BusLogic_ExecuteSCSICommand
@ BusLogic_WriteAdapterLocalRAM
@ BusLogic_InquireExtendedSetupInformation
@ BusLogic_ReadInquiryBuffer
@ BusLogic_TestCommandCompleteInterrupt
@ BusLogic_InitializeExtendedMailbox
@ BusLogic_InquireInstalledDevicesID8to15
@ BusLogic_HostAdapterDiagnostic
@ BusLogic_InquireInstalledDevicesID0to7
@ BusLogic_SetBusTransferRate
@ BusLogic_ReadBusMasterChipFIFO
@ BusLogic_ModifyIOAddress
@ BusLogic_InquireHostAdapterModelNumber
@ BusLogic_ReadAdapterLocalRAM
@ BusLogic_EnableOutgoingMailboxAvailableInt
@ BusLogic_InquireTargetDevices
@ BusLogic_SetAdapterOptions
@ BusLogic_FlashROMUploadDownload
@ BusLogic_InquireFirmwareVersionLetter
@ BusLogic_EnableStrictRoundRobinMode
@ BusLogic_ExecuteBIOSCommand
@ BusLogic_EchoCommandData
@ BusLogic_InquireSynchronousPeriod
@ BusLogic_SetSCSISelectionTimeout
@ BusLogic_StoreHostAdapterLocalRAM
@ BusLogic_SetPreemptTimeOnBus
@ BusLogic_StoreLocalDataInEEPROM
@ BusLogic_InitializeMailbox
@ BusLogic_FetchHostAdapterLocalRAM
@ BusLogic_InquireBoardID
@ BusLogic_InquireSetupInformation
@ BusLogic_WriteInquiryBuffer
@ BusLogic_ExecuteMailboxCommand
@ BusLogic_WriteBusMasterChipFIFO
@ BusLogic_InquireFirmwareVersion3rdDigit
@ BusLogic_InquireConfiguration
@ BusLogic_EnableTargetMode
#define BusLogic_DataInRegisterOffset
BusLogic_HostAdapterBusType_T
BOOLEAN BusLogic_WriteOutgoingMailbox(PHW_DEVICE_EXTENSION deviceExtension, BusLogic_ActionCode_T ActionCode, BusLogic_CCB_T *CCB)
UCHAR BusLogic_HostAdapterModelNumber_T[5]
struct BusLogic_HostAdapter BusLogic_HostAdapter_T
struct BusLogic_TargetStatistics BusLogic_TargetStatistics_T
struct _NONCACHED_EXTENSION NONCACHED_EXTENSION
@ BusLogic_InitiatorCCB_ScatterGather
@ BusLogic_InitiatorCCB_ScatterGatherResidual
@ BusLogic_BusDeviceReset
@ BusLogic_InitiatorCCB_ResidualDataLength
unsigned short BusLogic_InstalledDevices_T
struct BusLogic_ScatterGatherSegment BusLogic_ScatterGatherSegment_T
@ BusLogic_MailboxStartCommand
@ BusLogic_MailboxAbortCommand
@ BusLogic_OutgoingMailboxFree
#define BusLogic_ControlRegisterOffset
#define BusLogic_ScatterGatherLimit
BusLogic_HostAdapterStatus_T
@ BusLogic_AbortQueueGenerated
@ BusLogic_UnsupportedMessageReceived
@ BusLogic_TargetDeviceReconnectedImproperly
@ BusLogic_InvalidCommandParameter
@ BusLogic_HostAdapterAssertedRST
@ BusLogic_LinkedCommandCompleted
@ BusLogic_HostAdapterAssertedBusDeviceReset
@ BusLogic_SCSIParityErrorDetected
@ BusLogic_OtherDeviceAssertedRST
@ BusLogic_LinkedCCBhasInvalidLUN
@ BusLogic_AutoRequestSenseFailed
@ BusLogic_LinkedCommandCompletedWithFlag
@ BusLogic_HostAdapterSoftwareError
@ BusLogic_InvalidOutgoingMailboxActionCode
@ BusLogic_SCSISelectionTimeout
@ BusLogic_CommandCompletedNormally
@ BusLogic_InvalidBusPhaseRequested
@ BusLogic_InvalidCommandOperationCode
@ BusLogic_TaggedQueuingMessageRejected
@ BusLogic_HostAdapterHardwareFailed
@ BusLogic_HostAdapterHardwareTimeoutError
@ BusLogic_TargetFailedResponseToATN
@ BusLogic_UnexpectedBusFree
static UCHAR BusLogic_ReadInterruptRegister(BusLogic_HostAdapter_T *HostAdapter)
static void BusLogic_InterruptReset(BusLogic_HostAdapter_T *HostAdapter)
struct BusLogic_ExtendedMailboxRequest BusLogic_ExtendedMailboxRequest_T
UCHAR BusLogic_RequestedReplyLength_T
BusLogic_CompletionCode_T
@ BusLogic_CommandAbortedAtHostRequest
@ BusLogic_AbortedCommandNotFound
@ BusLogic_CommandCompletedWithError
@ BusLogic_CommandCompletedWithoutError
@ BusLogic_IncomingMailboxFree
BOOLEAN BusLogic_HardwareResetHostAdapter(BusLogic_HostAdapter_T *HostAdapter, BOOLEAN HardReset)
BusLogic_HostAdapterType_T
BusLogic_ISACompatibleIOPort
BusLogic_TargetDeviceStatus_T
@ BusLogic_CheckCondition
#define BusLogic_StatusRegisterOffset
#define BusLogic_SizeBuckets
struct BusLogic_SetupInformation BusLogic_SetupInformation_T
struct BusLogic_ExtendedSetupInformation BusLogic_ExtendedSetupInformation_T
BOOLEAN Buslogic_InitBT958(PHW_DEVICE_EXTENSION deviceExtension, PPORT_CONFIGURATION_INFORMATION ConfigInfo)
@ BusLogic_NoDataTransfer
@ BusLogic_UncheckedDataTransfer
@ BusLogic_DataOutLengthChecked
@ BusLogic_DataInLengthChecked
int BusLogic_QueueCommand(IN PVOID HwDeviceExtension, IN PSCSI_REQUEST_BLOCK Srb, IN PBuslogic_CCB_T ccb)
struct BusLogic_BoardID BusLogic_BoardID_T
BusLogic_BIOS_DiskGeometryTranslation
@ BusLogic_BIOS_Disk_Installed_64x32
@ BusLogic_BIOS_Disk_Not_Installed
@ BusLogic_BIOS_Disk_Installed_255x63
@ BusLogic_BIOS_Disk_Installed_128x32
struct SCSI_Inquiry SCSI_Inquiry_T
union BusLogic_StatusRegister BusLogic_StatusRegister_T
SCSI_ADAPTER_CONTROL_STATUS NTAPI BT958HwAdapterControl(IN PVOID HwDeviceExtension, IN SCSI_ADAPTER_CONTROL_TYPE ControlType, IN PVOID Parameters)
struct _HW_DEVICE_EXTENSION * PHW_DEVICE_EXTENSION
struct _HW_DEVICE_EXTENSION HW_DEVICE_EXTENSION
struct BusLogic_Configuration BusLogic_Configuration_T
void BusLogic_ProcessCompletedCCBs(PHW_DEVICE_EXTENSION deviceExtension)
ULONG NTAPI BT958HwFindAdapter(IN PVOID HwDeviceExtension, IN PVOID Context, IN PVOID BusInformation, IN PCHAR ArgumentString, IN OUT PPORT_CONFIGURATION_INFORMATION ConfigInfo, OUT PBOOLEAN Again)
#define BusLogic_GeometryRegisterOffset
enum BusLogic_ISACompatibleIOPort BusLogic_ISACompatibleIOPort_T
union BusLogic_InterruptRegister BusLogic_InterruptRegister_T
BOOLEAN NTAPI BT958HwStartIO(IN PVOID HwDeviceExtension, IN PSCSI_REQUEST_BLOCK Srb)
UCHAR BusLogic_FirmwareVersion3rdDigit_T
BOOLEAN NTAPI BT958HwInterrupt(IN PVOID HwDeviceExtension)
struct BusLogic_IncomingMailbox BusLogic_IncomingMailbox_T
struct BusLogic_SynchronousValue BusLogic_SynchronousValue_T
#define BusLogic_MaxLogicalUnits
static void BusLogic_IncrementByteCounter(BusLogic_ByteCounter_T *ByteCounter, unsigned int Amount)
UCHAR BusLogic_ComputeResultCode(BusLogic_HostAdapter_T *HostAdapter, BusLogic_HostAdapterStatus_T HostAdapterStatus, BusLogic_TargetDeviceStatus_T TargetDeviceStatus, UCHAR SenseDataLength)
struct BusLogic_WmiExtendedSetupInformation * PBusLogic_WmiExtendedSetupInformation_T
BOOLEAN NTAPI BT958HwResetBus(IN PVOID HwDeviceExtension, IN ULONG PathId)
UCHAR BusLogic_SynchronousPeriod_T[BusLogic_MaxTargetDevices]
union BusLogic_ControlRegister BusLogic_ControlRegister_T
BusLogic_SynchronousValue_T BusLogic_SynchronousValues8_T[8]
struct BusLogic_CCB BusLogic_CCB_T
unsigned int BusLogic_ByteCount_T
void BT958WmiInitialize(IN PHW_DEVICE_EXTENSION HwDeviceExtension)
unsigned int BusLogic_BusAddress_T
enum BusLogic_SetCCBFormatRequest BusLogic_SetCCBFormatRequest_T
static void BusLogic_HardReset(BusLogic_HostAdapter_T *HostAdapter)
struct BusLogic_WmiExtendedSetupInformation BusLogic_WmiExtendedSetupInformation_T
static UCHAR ReadBusLogicPort(PUCHAR adr)
UCHAR BusLogic_FirmwareVersionLetter_T
#define BusLogic_CommandParameterRegisterOffset
UCHAR BusLogic_InstalledDevices8_T[8]
static UCHAR BusLogic_ReadGeometryRegister(BusLogic_HostAdapter_T *HostAdapter)
BOOLEAN BusLogic_CheckHostAdapter(BusLogic_HostAdapter_T *HostAdapter)
#define BusLogic_MaxTargetDevices
#define BusLogic_MaxMailboxes
struct BusLogic_OutgoingMailbox BusLogic_OutgoingMailbox_T
UCHAR SCSI_CDB_T[BusLogic_CDB_MaxLength]
struct BusLogic_AutoSCSIData BusLogic_AutoSCSIData_T
BOOLEAN BusLogic_ProbeHostAdapter(BusLogic_HostAdapter_T *HostAdapter)
static void BusLogic_WriteCommandParameterRegister(BusLogic_HostAdapter_T *HostAdapter, UCHAR Value)
int BusLogic_Command(BusLogic_HostAdapter_T *HostAdapter, BusLogic_OperationCode_T OperationCode, void *ParameterData, int ParameterLength, void *ReplyData, int ReplyLength)
struct BusLogic_ByteCounter BusLogic_ByteCounter_T
static UCHAR BusLogic_ReadDataInRegister(BusLogic_HostAdapter_T *HostAdapter)
BOOLEAN BusLogic_InitializeHostAdapter(PHW_DEVICE_EXTENSION deviceExtension, PPORT_CONFIGURATION_INFORMATION ConfigInfo)
struct BusLogic_TargetFlags BusLogic_TargetFlags_T
#define BusLogic_InterruptRegisterOffset
VOID NTAPI ScsiPortWritePortUchar(IN PUCHAR Port, IN UCHAR Value)
UCHAR NTAPI ScsiPortReadPortUchar(IN PUCHAR Port)
_In_ PSCSI_REQUEST_BLOCK Srb
_In_ ULONG _In_ BOOLEAN _In_ ULONG _In_ UCHAR PathId
DRIVER_INITIALIZE DriverEntry
enum _SCSI_ADAPTER_CONTROL_TYPE SCSI_ADAPTER_CONTROL_TYPE
enum _SCSI_ADAPTER_CONTROL_STATUS SCSI_ADAPTER_CONTROL_STATUS
BOOLEAN BT958WmiSrb(IN PHW_DEVICE_EXTENSION HwDeviceExtension, IN OUT PSCSI_WMI_REQUEST_BLOCK Srb)
_Must_inspect_result_ _In_ PFLT_PORT _In_ ULONG _Out_writes_bytes_opt_ ReplyLength PVOID _Inout_opt_ PULONG ReplyLength
_Must_inspect_result_ _In_ LONGLONG _In_ LONGLONG Amount
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
UCHAR VESABurstWriteEnabled
UCHAR HostAdapterIOPortAddress
UCHAR BIOSRedirectionOfINT19Enabled
UCHAR LevelSensitiveInterrupt
UCHAR FlopticalSupportEnabled
UCHAR HostAdapterBIOSEnabled
unsigned short WidePermitted
unsigned short RenegotiateSyncAfterCheckCondition
UCHAR MapRemovableAsFixedEnabled
UCHAR DMA_AutoConfiguration
UCHAR VESABusSpeedGreaterThan33MHz
UCHAR FastSynchronousNegotiation
unsigned short SendStartUnitCommand
UCHAR ForceBusDeviceScanningOrder
unsigned short DisconnectPermitted
UCHAR ExtendedTranslationEnabled
UCHAR StrictRoundRobinModeEnabled
UCHAR INT13ExtensionEnabled
UCHAR NoisyCablingEnvironment
unsigned short DeviceEnabled
unsigned short FastPermitted
UCHAR SystemRAMAreaForBIOS
unsigned short UltraPermitted
UCHAR IRQ_AutoConfiguration
UCHAR BIOSInterruptModeEnabled
UCHAR BIOSSupportsMoreThan2DrivesEnabled
UCHAR VESABurstReadEnabled
UCHAR ActiveNegationEnabled
unsigned short IgnoreInBIOSScan
UCHAR ParityCheckingEnabled
unsigned short SynchronousPermitted
UCHAR ManufacturingDiagnostic[2]
UCHAR InformationByteCount
unsigned short NonTaggedToAlternateLUNPermitted
UCHAR InternalFactorySignature[2]
UCHAR FirmwareVersion1stDigit
UCHAR FirmwareVersion2ndDigit
BusLogic_CompletionCode_T CompletionCode
unsigned long SerialNumber
BusLogic_CCB_Status_T Status
BusLogic_ByteCount_T DataLength
BusLogic_BusAddress_T DataPointer
struct BusLogic_HostAdapter * HostAdapter
BusLogic_ScatterGatherSegment_T ScatterGatherList[BusLogic_ScatterGatherLimit]
struct BusLogic_CCB * Next
BusLogic_BusAddress_T SenseDataPointer
BusLogic_HostAdapterType_T HostAdapterType
BOOLEAN ExtendedLUNSupport
unsigned short TaggedQueuingPermitted
unsigned short ExternalHostAdapterResets
unsigned short DriverQueueDepth
unsigned short HostAdapterInternalErrors
BusLogic_CCB_T * BusDeviceResetPendingCCB[BusLogic_MaxTargetDevices]
unsigned short DriverScatterGatherLimit
unsigned short DisconnectPermitted
BusLogic_OutgoingMailbox_T * FirstOutgoingMailbox
unsigned long LastResetAttempted[BusLogic_MaxTargetDevices]
unsigned short WidePermitted
BOOLEAN ExtendedTranslationEnabled
BusLogic_OutgoingMailbox_T * NextOutgoingMailbox
unsigned long LastResetCompleted[BusLogic_MaxTargetDevices]
BOOLEAN LevelSensitiveInterrupt
BOOLEAN LowByteTerminated
unsigned short TargetDeviceCount
UCHAR SynchronousPeriod[BusLogic_MaxTargetDevices]
unsigned short BusSettleTime
BOOLEAN HostDifferentialSCSI
BusLogic_IncomingMailbox_T * LastIncomingMailbox
BOOLEAN ParityCheckingEnabled
BusLogic_IncomingMailbox_T * FirstIncomingMailbox
unsigned short UntaggedQueueDepth
unsigned short CommonQueueDepth
BOOLEAN HostAdapterInitialized
BOOLEAN BounceBuffersRequired
BusLogic_TargetStatistics_T TargetStatistics[BusLogic_MaxTargetDevices]
BOOLEAN TerminationInfoValid
BusLogic_OutgoingMailbox_T * LastOutgoingMailbox
BusLogic_CCB_T * FirstCompletedCCB
BusLogic_IncomingMailbox_T * NextIncomingMailbox
UCHAR SynchronousOffset[BusLogic_MaxTargetDevices]
unsigned short UltraPermitted
unsigned short HostAdapterQueueDepth
BOOLEAN StrictRoundRobinModeSupport
BOOLEAN HighByteTerminated
BusLogic_BusAddress_T BIOS_Address
BOOLEAN ProcessCompletedCCBsActive
UCHAR ActiveCommandsPerLun[BusLogic_MaxTargetDevices][BusLogic_MaxLogicalUnits]
BusLogic_HostAdapterBusType_T HostAdapterBusType
volatile BOOLEAN HostAdapterCommandCompleted
unsigned int CommandsSinceReset[BusLogic_MaxTargetDevices]
BOOLEAN HostAdapterInternalError
unsigned short FastPermitted
UCHAR ActiveCommandsPerTarget[BusLogic_MaxTargetDevices]
unsigned short SynchronousPermitted
BusLogic_CCB_T * LastCompletedCCB
BusLogic_TargetFlags_T TargetFlags[BusLogic_MaxTargetDevices]
unsigned short HostAdapterScatterGatherLimit
BOOLEAN HostAdapterExternalReset
unsigned long LastSequencePoint[BusLogic_MaxTargetDevices]
BusLogic_BusAddress_T CCB
BusLogic_BusAddress_T CCB
BusLogic_ByteCount_T SegmentByteCount
BusLogic_BusAddress_T SegmentDataPointer
BOOLEAN WideTransfersActive
BOOLEAN TaggedQueuingActive
BOOLEAN WideTransfersSupported
BOOLEAN CommandSuccessfulFlag
BOOLEAN TargetInfoReported
BOOLEAN TaggedQueuingSupported
unsigned int CommandsCompleted
BusLogic_CommandSizeBuckets_T ReadCommandSizeBuckets
unsigned int WriteCommands
unsigned short HostAdapterResetsRequested
unsigned short CommandAbortsCompleted
unsigned int ReadCommands
unsigned short BusDeviceResetsAttempted
unsigned short CommandAbortsRequested
unsigned int CommandsAttempted
unsigned short HostAdapterResetsAttempted
BusLogic_CommandSizeBuckets_T WriteCommandSizeBuckets
BusLogic_ByteCounter_T TotalBytesRead
unsigned short BusDeviceResetsCompleted
unsigned short BusDeviceResetsRequested
unsigned short CommandAbortsAttempted
unsigned short HostAdapterResetsCompleted
BusLogic_ByteCounter_T TotalBytesWritten
UCHAR PeripheralQualifier
UCHAR ProductIdentification[16]
UCHAR PeripheralDeviceType
UCHAR ProductRevisionLevel[4]
UCHAR ANSI_ApprovedVersion
UCHAR VendorIdentification[8]
SCSI_WMILIB_CONTEXT WmiLibContext
PNONCACHED_EXTENSION NoncachedExtension
BusLogic_HostAdapter_T hcs
UCHAR MailboxIn[BusLogic_MaxMailboxes *sizeof(BusLogic_IncomingMailbox_T)]
UCHAR MailboxOut[BusLogic_MaxMailboxes *sizeof(BusLogic_OutgoingMailbox_T)]
struct BusLogic_ControlRegister::@1340 Bits
struct BusLogic_GeometryRegister::@1343 Bits
BOOLEAN ExtendedTranslationEnabled
BusLogic_BIOS_DiskGeometryTranslation_T Drive1Geometry
BusLogic_BIOS_DiskGeometryTranslation_T Drive0Geometry
BOOLEAN OutgoingMailboxAvailable
struct BusLogic_InterruptRegister::@1342 Bits
BOOLEAN IncomingMailboxLoaded
BOOLEAN CommandParameterRegisterBusy
BOOLEAN DiagnosticFailure
BOOLEAN DataInRegisterReady
struct BusLogic_StatusRegister::@1341 Bits
BOOLEAN InitializationRequired
_In_ ULONG ParameterLength
_In_ WDFCOLLECTION _In_ ULONG Index
_In_ WDFDEVICE _In_ PPNP_BUS_INFORMATION BusInformation
_Must_inspect_result_ _In_ PDRIVER_OBJECT DriverObject
_Must_inspect_result_ _In_ WDFQUEUE _In_opt_ WDFREQUEST _In_opt_ WDFFILEOBJECT _Inout_opt_ PWDF_REQUEST_PARAMETERS Parameters
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING _Out_opt_ PUSHORT _Inout_opt_ PUNICODE_STRING Value
_Reserved_ PVOID Reserved