30#define MAX_IDE_CHANNEL 2
32#define MAX_IDE_DEVICE 2
277#define PIO_MODE0 (1 << 0)
278#define PIO_MODE1 (1 << 1)
279#define PIO_MODE2 (1 << 2)
280#define PIO_MODE3 (1 << 3)
281#define PIO_MODE4 (1 << 4)
283#define SWDMA_MODE0 (1 << 5)
284#define SWDMA_MODE1 (1 << 6)
285#define SWDMA_MODE2 (1 << 7)
287#define MWDMA_MODE0 (1 << 8)
288#define MWDMA_MODE1 (1 << 9)
289#define MWDMA_MODE2 (1 << 10)
291#define UDMA_MODE0 (1 << 11)
292#define UDMA_MODE1 (1 << 12)
293#define UDMA_MODE2 (1 << 13)
294#define UDMA_MODE3 (1 << 14)
295#define UDMA_MODE4 (1 << 15)
296#define UDMA_MODE5 (1 << 16)
struct _EXTENDED_IDENTIFY_DATA * PEXTENDED_IDENTIFY_DATA
struct _IDE_CONTROLLER_PROPERTIES IDE_CONTROLLER_PROPERTIES
struct _IDENTIFY_DATA * PIDENTIFY_DATA
NTSTATUS NTAPI PciIdeXSetBusData(_In_ PVOID DeviceExtension, _In_reads_bytes_(BufferLength) PVOID Buffer, _In_reads_bytes_(BufferLength) PVOID DataMask, _In_ ULONG ConfigDataOffset, _In_ ULONG BufferLength)
struct _IDENTIFY_DATA IDENTIFY_DATA
ULONG(NTAPI * PCIIDE_USEDMA_FUNC)(_In_ PVOID DeviceExtension, _In_ PUCHAR CdbCommand, _In_ PUCHAR Slave)
NTSTATUS(NTAPI * PCIIDE_TRANSFER_MODE_SELECT_FUNC)(_In_ PVOID DeviceExtension, _Inout_ PPCIIDE_TRANSFER_MODE_SELECT XferMode)
struct _IDE_CONTROLLER_PROPERTIES * PIDE_CONTROLLER_PROPERTIES
struct _PCIIDE_TRANSFER_MODE_SELECT PCIIDE_TRANSFER_MODE_SELECT
NTSTATUS NTAPI PciIdeXInitialize(_In_ PDRIVER_OBJECT DriverObject, _In_ PUNICODE_STRING RegistryPath, _In_ PCONTROLLER_PROPERTIES HwGetControllerProperties, _In_ ULONG ExtensionSize)
NTSTATUS(NTAPI * PCONTROLLER_PROPERTIES)(_In_ PVOID DeviceExtension, _In_ PIDE_CONTROLLER_PROPERTIES ControllerProperties)
NTSTATUS NTAPI PciIdeXGetBusData(_In_ PVOID DeviceExtension, _Out_writes_bytes_all_(BufferLength) PVOID Buffer, _In_ ULONG ConfigDataOffset, _In_ ULONG BufferLength)
NTSTATUS(NTAPI * PCIIDE_UDMA_MODES_SUPPORTED)(_In_ IDENTIFY_DATA IdentifyData, _Out_ PULONG BestXferMode, _Out_ PULONG CurrentXferMode)
struct _EXTENDED_IDENTIFY_DATA EXTENDED_IDENTIFY_DATA
IDE_CHANNEL_STATE(NTAPI * PCIIDE_CHANNEL_ENABLED)(_In_ PVOID DeviceExtension, _In_ ULONG Channel)
struct _PCIIDE_TRANSFER_MODE_SELECT * PPCIIDE_TRANSFER_MODE_SELECT
BOOLEAN(NTAPI * PCIIDE_SYNC_ACCESS_REQUIRED)(_In_ PVOID DeviceExtension)
#define _In_reads_bytes_(s)
#define _Out_writes_bytes_all_(s)
USHORT DeviceWriteProtect
USHORT GeneralConfiguration
USHORT SingleWordDMASupport
USHORT NumberOfCurrentHeads
USHORT MediaStatusNotification
USHORT MinimumPIOCycleTimeIORDY
USHORT MultiWordDMAActive
USHORT TranslationFieldsValid
ULONG CurrentSectorCapacity
UCHAR MaximumBlockTransfer
USHORT MinimumMWXferCycleTime
USHORT NumSectorsPerTrack
USHORT RecommendedMWXferCycleTime
USHORT CurrentSectorsPerTrack
struct _EXTENDED_IDENTIFY_DATA::@2050::@2052 u
USHORT MultiWordDMASupport
USHORT UnformattedBytesPerTrack
USHORT CurrentMultiSectorSetting
USHORT NumberOfCurrentCylinders
ULONG UserAddressableSectors
USHORT MinimumPIOCycleTime
UCHAR FirmwareRevision[8]
USHORT UnformattedBytesPerSector
USHORT SingleWordDMAActive
USHORT NumberOfCurrentCylinders
USHORT DeviceWriteProtect
USHORT UnformattedBytesPerSector
USHORT SingleWordDMASupport
USHORT NumberOfCurrentHeads
ULONG UserAddressableSectors
USHORT MultiWordDMASupport
USHORT GeneralConfiguration
USHORT NumSectorsPerTrack
USHORT MediaStatusNotification
USHORT CurrentSectorsPerTrack
USHORT CurrentMultiSectorSetting
USHORT TranslationFieldsValid
USHORT UnformattedBytesPerTrack
USHORT SingleWordDMAActive
USHORT FirmwareRevision[4]
UCHAR MaximumBlockTransfer
USHORT MultiWordDMAActive
USHORT RecommendedMWXferCycleTime
USHORT MinimumPIOCycleTimeIORDY
USHORT MinimumMWXferCycleTime
ULONG CurrentSectorCapacity
USHORT MinimumPIOCycleTime
PCIIDE_USEDMA_FUNC PciIdeUseDma
ULONG AlignmentRequirement
ULONG SupportedTransferMode[MAX_IDE_CHANNEL][MAX_IDE_DEVICE]
PCIIDE_CHANNEL_ENABLED PciIdeChannelEnabled
PCIIDE_SYNC_ACCESS_REQUIRED PciIdeSyncAccessRequired
BOOLEAN AlwaysClearBusMasterInterrupt
PCIIDE_TRANSFER_MODE_SELECT_FUNC PciIdeTransferModeSelect
BOOLEAN IgnoreActiveBitForAtaDevice
PCIIDE_UDMA_MODES_SUPPORTED PciIdeUdmaModesSupported
ULONG DeviceTransferModeSelected[MAX_IDE_DEVICE *MAX_IDE_LINE]
ULONG BestSwDmaCycleTime[MAX_IDE_DEVICE *MAX_IDE_LINE]
IDENTIFY_DATA IdentifyData[MAX_IDE_DEVICE]
BOOLEAN FixedDisk[MAX_IDE_DEVICE *MAX_IDE_LINE]
ULONG BestUDmaCycleTime[MAX_IDE_DEVICE *MAX_IDE_LINE]
ULONG BestPioCycleTime[MAX_IDE_DEVICE *MAX_IDE_LINE]
ULONG BestMwDmaCycleTime[MAX_IDE_DEVICE *MAX_IDE_LINE]
ULONG DeviceTransferModeSupported[MAX_IDE_DEVICE *MAX_IDE_LINE]
BOOLEAN DevicePresent[MAX_IDE_DEVICE *MAX_IDE_LINE]
PULONG TransferModeTimingTable
BOOLEAN IoReadySupported[MAX_IDE_DEVICE *MAX_IDE_LINE]
ULONG DeviceTransferModeCurrent[MAX_IDE_DEVICE *MAX_IDE_LINE]
ULONG TransferModeTableLength
ULONG UserChoiceTransferMode[MAX_IDE_DEVICE *MAX_IDE_LINE]
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ ULONG BufferLength
_Must_inspect_result_ _In_ PDRIVER_OBJECT _In_ PCUNICODE_STRING RegistryPath
_Must_inspect_result_ _In_ PDRIVER_OBJECT DriverObject