30 ULONG mappedLength, portNumber, ticks;
42 NT_ASSERT(portNumber < adapterExtension->PortCount);
51 if ((mappedLength == 0) || ((commandListPhysical.
LowPart % 1024) != 0))
53 AhciDebugPrint(
"\tcommandListPhysical mappedLength:%d\n", mappedLength);
62 if ((mappedLength == 0) || ((receivedFISPhysical.
LowPart % 256) != 0))
64 AhciDebugPrint(
"\treceivedFISPhysical mappedLength:%d\n", mappedLength);
80 if ((
cmd.FR != 0) || (
cmd.CR != 0) || (
cmd.FRE != 0) || (
cmd.ST != 0))
97 while(
cmd.CR != 0 ||
cmd.FR != 0);
150 PCHAR nonCachedExtension, tmp;
152 ULONG portCount, portImplemented, nonCachedExtensionSize;
162 portImplemented = AdapterExtension->PortImplemented;
166 if ((portImplemented & (1 <<
index)) != 0)
169 portCount =
index + 1;
172 AdapterExtension->PortCount = portCount;
178 nonCachedExtensionSize =
ROUND_UP(nonCachedExtensionSize, 1024);
182 nonCachedExtensionSize * portCount);
184 if (AdapterExtension->NonCachedExtension ==
NULL)
186 AhciDebugPrint(
"\tadapterExtension->NonCachedExtension == NULL\n");
190 nonCachedExtension = AdapterExtension->NonCachedExtension;
191 AhciZeroMemory(nonCachedExtension, nonCachedExtensionSize * portCount);
195 PortExtension = &AdapterExtension->PortExtension[
index];
198 if ((AdapterExtension->PortImplemented & (1 <<
index)) != 0)
210 nonCachedExtension += nonCachedExtensionSize;
242 AdapterExtension = PortExtension->AdapterExtension;
245 if ((
cmd.FR == 1) && (
cmd.CR == 1) && (
cmd.FRE == 1) && (
cmd.ST == 1))
254 if (((
cmd.FR == 1) && (
cmd.FRE == 0)) ||
255 ((
cmd.CR == 1) && (
cmd.ST == 0)))
311 while((
cmd.FR != 1) && (
index < 3));
332 if ((tfd.
STS.BSY) || (tfd.
STS.DRQ))
577 AdapterExtension = PortExtension->AdapterExtension;
580 for (
i = 0;
i < NCS;
i++)
582 if (((1 <<
i) & CommandsToComplete) != 0)
584 Srb = PortExtension->Slot[
i];
633 AdapterExtension = PortExtension->AdapterExtension;
673 PxISMasked.
PSS = PxIS.
PSS;
675 PxISMasked.
DSS = PxIS.
DSS;
679 PxISMasked.
DPS = PxIS.
DPS;
681 if (PxISMasked.
Status != 0)
689 is = (1 << PortExtension->PortNumber);
696 if ((PortExtension->CommandIssuedSlots & (~
outstanding)) != 0)
724 ULONG portPending, nextPort,
i, portCount;
739 if (portPending == 0)
744 for (
i = 1;
i <= portCount;
i++)
747 if ((portPending & (0x1 << nextPort)) == 0)
761 portPending &= ~(1 << nextPort);
871 switch(cdb->
CDB10.OperationCode)
1015 adapterExtension = DeviceExtension;
1016 adapterExtension->
SlotNumber = ConfigInfo->SlotNumber;
1035 adapterExtension->
VendorID = pciConfigData->VendorID;
1036 adapterExtension->
DeviceID = pciConfigData->DeviceID;
1037 adapterExtension->
RevisionID = pciConfigData->RevisionID;
1039 adapterExtension->
AhciBaseAddress = pciConfigData->u.type0.BaseAddresses[5] & (0xFFFFFFF0);
1041 AhciDebugPrint(
"\tVendorID: %04x DeviceID: %04x RevisionID: %02x\n",
1048 if (ConfigInfo->NumberOfAccessRanges > 0)
1050 accessRange = *(ConfigInfo->AccessRanges);
1056 ConfigInfo->AdapterInterfaceType,
1099 adapterExtension->
IS = &abar->IS;
1108 ConfigInfo->Master =
TRUE;
1109 ConfigInfo->AlignmentMask = 0x3;
1110 ConfigInfo->ScatterGather =
TRUE;
1112 ConfigInfo->WmiDataProvider =
FALSE;
1113 ConfigInfo->Dma32BitAddresses =
TRUE;
1117 ConfigInfo->Dma64BitAddresses =
TRUE;
1120 ConfigInfo->MaximumNumberOfTargets = 1;
1121 ConfigInfo->ResetTargetSupported =
TRUE;
1122 ConfigInfo->NumberOfPhysicalBreaks = 0x21;
1123 ConfigInfo->MaximumNumberOfLogicalUnits = 1;
1199 &hwInitializationData,
1326 sgl = SrbExtension->pSgl;
1328 AdapterExtension = PortExtension->AdapterExtension;
1381 AdapterExtension = PortExtension->AdapterExtension;
1407 CommandHeader = &PortExtension->CommandList[SlotIndex];
1431 CommandHeader->
DI.
PRDTL = prdtlen;
1432 CommandHeader->
DI.
CFL = cfl;
1435 CommandHeader->
DI.
P = 0;
1436 CommandHeader->
DI.
PMP = 0;
1439 CommandHeader->
DI.
R = 0;
1440 CommandHeader->
DI.
B = 0;
1441 CommandHeader->
DI.
C = 0;
1443 CommandHeader->
PRDBC = 0;
1461 CommandHeader->
CTBA = CommandTablePhysicalAddress.
LowPart;
1469 PortExtension->Slot[SlotIndex] =
Srb;
1470 PortExtension->QueueSlots |= 1 << SlotIndex;
1485 #pragma warning(push)
1486 #pragma warning(disable: 4700)
1495 ULONG QueueSlots, slotToActivate, tmp;
1500 AdapterExtension = PortExtension->AdapterExtension;
1501 QueueSlots = PortExtension->QueueSlots;
1503 if (QueueSlots == 0)
1518 tmp = QueueSlots & (QueueSlots - 1);
1521 slotToActivate = QueueSlots;
1523 slotToActivate = (QueueSlots & (~tmp));
1527 PortExtension->QueueSlots &= ~slotToActivate;
1530 PortExtension->CommandIssuedSlots |= slotToActivate;
1539 #pragma warning(pop)
1564 ULONG commandSlotMask, occupiedSlots, slotIndex, NCS;
1569 PortExtension = &AdapterExtension->PortExtension[
PathId];
1571 NT_ASSERT(PathId < AdapterExtension->PortCount);
1588 commandSlotMask = (1 << NCS) - 1;
1590 commandSlotMask = (commandSlotMask & ~occupiedSlots);
1591 if(commandSlotMask != 0)
1594 for (slotIndex = 0; slotIndex < NCS; slotIndex++)
1597 if ((commandSlotMask & (1 << slotIndex)) != 0)
1754 AhciDebugPrint(
"\tBytesPerLogicalSector != DEVICE_ATA_BLOCK_SIZE\n");
1763 AhciDebugPrint(
"\tBytesPerPhysicalSector != DEVICE_ATA_BLOCK_SIZE\n");
1791 AhciDebugPrint(
"\tDataBufferLength < sizeof(INQUIRYDATA), Could crash the driver.\n");
1858 PortExtension = &AdapterExtension->PortExtension[
Srb->
PathId];
1865 SrbExtension->
Flags = 0;
1900 SrbExtension->
LBA0 = 0;
1903 SrbExtension->
Device = 0;
1904 SrbExtension->
LBA3 = 0;
1905 SrbExtension->
LBA4 = 0;
1906 SrbExtension->
LBA5 = 0;
1947 PortExtension = &AdapterExtension->PortExtension[
Srb->
PathId];
2006 PortExtension = &AdapterExtension->PortExtension[
Srb->
PathId];
2014 BytesPerSector = PortExtension->
DeviceParams.BytesPerLogicalSector;
2020 SectorCount = DataTransferLength / BytesPerSector;
2045 SrbExtension->
LBA0 = (StartOffset >> 0) & 0xFF;
2046 SrbExtension->
LBA1 = (StartOffset >> 8) & 0xFF;
2047 SrbExtension->
LBA2 = (StartOffset >> 16) & 0xFF;
2064 SrbExtension->
LBA3 = (StartOffset >> 24) & 0xFF;
2065 SrbExtension->
LBA4 = (StartOffset >> 32) & 0xFF;
2066 SrbExtension->
LBA5 = (StartOffset >> 40) & 0xFF;
2104 ULONG MaxLba, BytesPerLogicalSector;
2117 PortExtension = &AdapterExtension->PortExtension[
Srb->
PathId];
2128 BytesPerLogicalSector = PortExtension->
DeviceParams.BytesPerLogicalSector;
2209 PortExtension = &AdapterExtension->PortExtension[
Srb->
PathId];
2268 PortExtension = &AdapterExtension->PortExtension[
Srb->
PathId];
2293 SrbExtension->
LBA0 = 0;
2294 SrbExtension->
LBA1 = 0;
2295 SrbExtension->
LBA2 = 0;
2296 SrbExtension->
Device = 0xA0;
2297 SrbExtension->
LBA3 = 0;
2298 SrbExtension->
LBA4 = 0;
2299 SrbExtension->
LBA5 = 0;
2309 SrbExtension->
pSgl = &SrbExtension->
Sgl;
2320 if (DataBuffer ==
NULL)
2403 abar = AdapterExtension->ABAR_Address;
2413 for (ticks = 0; ticks < 50; ++ticks)
2478 if (pathId >= AdapterExtension->PortCount)
2483 return AdapterExtension->PortExtension[pathId].DeviceParams.IsActive;
2572 Offset = SrbExtension % 128;
2605 if (CdbLength == 0x10)
struct outstanding_list outstanding
#define IDE_COMMAND_READ_DMA_EXT
#define IDE_COMMAND_NOT_VALID
struct _IDENTIFY_DEVICE_DATA * PIDENTIFY_DEVICE_DATA
#define IDE_COMMAND_WRITE_DMA_EXT
struct _IDENTIFY_DEVICE_DATA IDENTIFY_DEVICE_DATA
#define IDE_COMMAND_ATAPI_IDENTIFY
#define IDE_COMMAND_WRITE_DMA
#define IDE_COMMAND_IDENTIFY
#define IDE_COMMAND_READ_DMA
#define IDE_COMMAND_ATAPI_PACKET
_In_ PSCSI_REQUEST_BLOCK Srb
struct _READ_CAPACITY_DATA * PREAD_CAPACITY_DATA
#define SCSIOP_TEST_UNIT_READY
struct _READ_CAPACITY_DATA READ_CAPACITY_DATA
#define DIRECT_ACCESS_DEVICE
struct _MODE_PARAMETER_HEADER MODE_PARAMETER_HEADER
#define READ_ONLY_DIRECT_ACCESS_DEVICE
#define SCSIOP_READ_CAPACITY
#define MODE_SENSE_CURRENT_VALUES
#define SCSIOP_MODE_SENSE
struct _MODE_PARAMETER_BLOCK MODE_PARAMETER_BLOCK
struct _MODE_PARAMETER_HEADER * PMODE_PARAMETER_HEADER
#define INQUIRYDATABUFFERSIZE
_In_ ULONG _In_ BOOLEAN _In_ ULONG _In_ UCHAR PathId
DRIVER_INITIALIZE DriverEntry
#define SCSIOP_REPORT_LUNS
#define SRB_FUNCTION_EXECUTE_SCSI
#define SRB_FLAGS_DATA_OUT
#define SRB_STATUS_PENDING
struct _HW_INITIALIZATION_DATA HW_INITIALIZATION_DATA
struct _SCSI_REQUEST_BLOCK * PSCSI_REQUEST_BLOCK
#define SRB_FLAGS_DATA_IN
#define SRB_STATUS_SELECTION_TIMEOUT
#define SRB_STATUS_BAD_FUNCTION
#define SRB_STATUS_NO_DEVICE
#define SRB_STATUS_SUCCESS
#define SRB_STATUS_INVALID_REQUEST
STORPORT_API ULONG NTAPI StorPortReadRegisterUlong(_In_ PVOID HwDeviceExtension, _In_ PULONG Register)
STORPORT_API VOID NTAPI StorPortWriteRegisterUlong(_In_ PVOID HwDeviceExtension, _In_ PULONG Register, _In_ ULONG Value)
#define ROUND_UP(n, align)
_Must_inspect_result_ _In_ PFILE_OBJECT _In_ ULONG _In_opt_ GUID _In_ USHORT DataBufferLength
GLuint GLsizei GLsizei * length
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
#define UNREFERENCED_PARAMETER(P)
_In_ ULONG _In_ ULONG Offset
_In_opt_ WDFREQUEST _In_ ULONG _In_ BOOLEAN _In_ PCDB Cdb
struct _VPD_SUPPORTED_PAGES_PAGE VPD_SUPPORTED_PAGES_PAGE
struct _LUN_LIST LUN_LIST
struct _VPD_SUPPORTED_PAGES_PAGE * PVPD_SUPPORTED_PAGES_PAGE
struct _LUN_LIST * PLUN_LIST
#define VPD_SUPPORTED_PAGES
#define REVERSE_BYTES_QUAD(Destination, Source)
#define REVERSE_BYTES(Destination, Source)
#define VPD_SERIAL_NUMBER
#define VPD_DEVICE_IDENTIFIERS
struct _SCSI_PNP_REQUEST_BLOCK * PSCSI_PNP_REQUEST_BLOCK
#define SRB_PNP_FLAGS_ADAPTER_REQUEST
_Must_inspect_result_ _In_ PVOID _In_ struct _HW_INITIALIZATION_DATA _In_ PVOID HwContext
BOOLEAN AhciHwPassiveInitialize(__in PVOID DeviceExtension)
UCHAR DeviceReportLuns(__in PAHCI_ADAPTER_EXTENSION AdapterExtension, __in PSCSI_REQUEST_BLOCK Srb, __in PCDB Cdb)
BOOLEAN AhciAdapterReset(__in PAHCI_ADAPTER_EXTENSION AdapterExtension)
UCHAR DeviceInquiryRequest(__in PAHCI_ADAPTER_EXTENSION AdapterExtension, __in PSCSI_REQUEST_BLOCK Srb, __in PCDB Cdb)
BOOLEAN NTAPI AhciHwInterrupt(__in PVOID DeviceExtension)
BOOLEAN NTAPI AhciHwStartIo(__in PVOID DeviceExtension, __in PSCSI_REQUEST_BLOCK Srb)
VOID AhciInterruptHandler(__in PAHCI_PORT_EXTENSION PortExtension)
BOOLEAN NTAPI AhciPortInitialize(__in PVOID DeviceExtension)
FORCEINLINE BOOLEAN AddQueue(__inout PAHCI_QUEUE Queue, __in PVOID Srb)
ULONG AhciBuild_PRDT(__in PAHCI_PORT_EXTENSION PortExtension, __in PAHCI_SRB_EXTENSION SrbExtension)
FORCEINLINE ULONG64 AhciGetLba(__in PCDB Cdb, __in ULONG CdbLength)
UCHAR DeviceRequestSense(__in PAHCI_ADAPTER_EXTENSION AdapterExtension, __in PSCSI_REQUEST_BLOCK Srb, __in PCDB Cdb)
FORCEINLINE BOOLEAN IsPortValid(__in PAHCI_ADAPTER_EXTENSION AdapterExtension, __in ULONG pathId)
ULONG AhciATAPI_CFIS(__in PAHCI_PORT_EXTENSION PortExtension, __in PAHCI_SRB_EXTENSION SrbExtension)
UCHAR DeviceRequestReadWrite(__in PAHCI_ADAPTER_EXTENSION AdapterExtension, __in PSCSI_REQUEST_BLOCK Srb, __in PCDB Cdb)
VOID AhciCommandCompletionDpcRoutine(__in PSTOR_DPC Dpc, __in PVOID HwDeviceExtension, __in PVOID SystemArgument1, __in PVOID SystemArgument2)
FORCEINLINE PVOID RemoveQueue(__inout PAHCI_QUEUE Queue)
VOID AhciProcessSrb(__in PAHCI_PORT_EXTENSION PortExtension, __in PSCSI_REQUEST_BLOCK Srb, __in ULONG SlotIndex)
UCHAR AhciATAPICommand(__in PAHCI_ADAPTER_EXTENSION AdapterExtension, __in PSCSI_REQUEST_BLOCK Srb, __in PCDB Cdb)
BOOLEAN NTAPI AhciHwResetBus(__in PVOID AdapterExtension, __in ULONG PathId)
VOID InquiryCompletion(__in PVOID _Extension, __in PVOID _Srb)
FORCEINLINE VOID AhciZeroMemory(__out PCHAR Buffer, __in ULONG BufferSize)
BOOLEAN NTAPI AhciHwInitialize(__in PVOID DeviceExtension)
VOID AhciActivatePort(__in PAHCI_PORT_EXTENSION PortExtension)
FORCEINLINE PAHCI_SRB_EXTENSION GetSrbExtension(__in PSCSI_REQUEST_BLOCK Srb)
BOOLEAN AhciAllocateResourceForAdapter(__in PAHCI_ADAPTER_EXTENSION AdapterExtension, __in PPORT_CONFIGURATION_INFORMATION ConfigInfo)
ULONG AhciATA_CFIS(__in PAHCI_PORT_EXTENSION PortExtension, __in PAHCI_SRB_EXTENSION SrbExtension)
ULONG NTAPI AhciHwFindAdapter(__in PVOID DeviceExtension, __in PVOID HwContext, __in PVOID BusInformation, __in PCHAR ArgumentString, __inout PPORT_CONFIGURATION_INFORMATION ConfigInfo, __in PBOOLEAN Reserved3)
VOID AhciProcessIO(__in PAHCI_ADAPTER_EXTENSION AdapterExtension, __in UCHAR PathId, __in PSCSI_REQUEST_BLOCK Srb)
VOID AhciCompleteIssuedSrb(__in PAHCI_PORT_EXTENSION PortExtension, __in ULONG CommandsToComplete)
UCHAR DeviceRequestCapacity(__in PAHCI_ADAPTER_EXTENSION AdapterExtension, __in PSCSI_REQUEST_BLOCK Srb, __in PCDB Cdb)
BOOLEAN AhciStartPort(__in PAHCI_PORT_EXTENSION PortExtension)
VOID AtapiInquiryCompletion(__in PVOID _Extension, __in PVOID _Srb)
#define AHCI_ATA_CFIS_Device
struct _AHCI_COMMAND_TABLE * PAHCI_COMMAND_TABLE
#define IsAdapterCAPS64(CAP)
#define AHCI_ATA_CFIS_FeaturesLow
#define MAXIMUM_AHCI_PORT_COUNT
struct _AHCI_PORT_EXTENSION * PAHCI_PORT_EXTENSION
#define DEVICE_ATA_BLOCK_SIZE
#define AHCI_DEVICE_TYPE_NODEVICE
#define AHCI_Global_Port_CAP_NCS(x)
#define AHCI_ATA_CFIS_LBA1
#define ATA_FUNCTION_ATA_READ
#define ATA_FUNCTION_ATAPI_COMMAND
#define MAXIMUM_TRANSFER_LENGTH
#define IsAtapiCommand(AtaFunction)
struct _AHCI_COMMAND_HEADER * PAHCI_COMMAND_HEADER
#define AHCI_ATA_CFIS_LBA2
#define AHCI_ATA_CFIS_LBA4
#define AHCI_ATA_CFIS_CommandReg
#define AHCI_ATA_CFIS_LBA3
#define AHCI_ATA_CFIS_FisType
#define AHCI_DEVICE_TYPE_ATA
struct _AHCI_RECEIVED_FIS * PAHCI_RECEIVED_FIS
struct _AHCI_SRB_EXTENSION AHCI_SRB_EXTENSION
#define AHCI_ATA_CFIS_SectorCountHigh
VOID(* PAHCI_COMPLETION_ROUTINE)(__in PVOID PortExtension, __in PVOID Srb)
struct _LOCAL_SCATTER_GATHER_LIST * PLOCAL_SCATTER_GATHER_LIST
#define IsAtaCommand(AtaFunction)
struct _AHCI_ADAPTER_EXTENSION AHCI_ADAPTER_EXTENSION
#define AHCI_ATA_CFIS_PMPort_C
struct _AHCI_ADAPTER_EXTENSION * PAHCI_ADAPTER_EXTENSION
#define AHCI_ATA_CFIS_SectorCountLow
#define AHCI_DEVICE_TYPE_ATAPI
#define AHCI_ATA_CFIS_LBA5
#define IsDataTransferNeeded(SrbExtension)
#define AhciDebugPrint(format,...)
#define ATA_FUNCTION_ATA_IDENTIFY
struct _AHCI_COMMAND_HEADER AHCI_COMMAND_HEADER
#define AHCI_ATA_CFIS_FeaturesHigh
#define AHCI_ATA_CFIS_LBA0
#define MAXIMUM_QUEUE_BUFFER_SIZE
#define MAXIMUM_AHCI_PRDT_ENTRIES
STORPORT_API BOOLEAN NTAPI StorPortSetDeviceQueueDepth(_In_ PVOID HwDeviceExtension, _In_ UCHAR PathId, _In_ UCHAR TargetId, _In_ UCHAR Lun, _In_ ULONG Depth)
STORPORT_API ULONG NTAPI StorPortGetBusData(_In_ PVOID DeviceExtension, _In_ ULONG BusDataType, _In_ ULONG SystemIoBusNumber, _In_ ULONG SlotNumber, _Out_ _When_(Length !=0, _Out_writes_bytes_(Length)) PVOID Buffer, _In_ ULONG Length)
STORPORT_API PSTOR_SCATTER_GATHER_LIST NTAPI StorPortGetScatterGatherList(_In_ PVOID DeviceExtension, _In_ PSCSI_REQUEST_BLOCK Srb)
STORPORT_API STOR_PHYSICAL_ADDRESS NTAPI StorPortGetPhysicalAddress(_In_ PVOID HwDeviceExtension, _In_opt_ PSCSI_REQUEST_BLOCK Srb, _In_ PVOID VirtualAddress, _Out_ ULONG *Length)
STORPORT_API PVOID NTAPI StorPortGetDeviceBase(_In_ PVOID HwDeviceExtension, _In_ INTERFACE_TYPE BusType, _In_ ULONG SystemIoBusNumber, _In_ STOR_PHYSICAL_ADDRESS IoAddress, _In_ ULONG NumberOfBytes, _In_ BOOLEAN InIoSpace)
STORPORT_API ULONG NTAPI StorPortInitialize(_In_ PVOID Argument1, _In_ PVOID Argument2, _In_ struct _HW_INITIALIZATION_DATA *HwInitializationData, _In_opt_ PVOID HwContext)
STORPORT_API VOID NTAPI StorPortStallExecution(_In_ ULONG Delay)
STORPORT_API VOID StorPortNotification(_In_ SCSI_NOTIFICATION_TYPE NotificationType, _In_ PVOID HwDeviceExtension,...)
STORPORT_API PVOID NTAPI StorPortGetUncachedExtension(_In_ PVOID HwDeviceExtension, _In_ PPORT_CONFIGURATION_INFORMATION ConfigInfo, _In_ ULONG NumberOfBytes)
FORCEINLINE VOID StorPortReleaseSpinLock(_In_ PVOID DeviceExtension, _Inout_ PSTOR_LOCK_HANDLE LockHandle)
#define StorPortCopyMemory(Destination, Source, Length)
FORCEINLINE BOOLEAN StorPortIssueDpc(_In_ PVOID DeviceExtension, _In_ PSTOR_DPC Dpc, _In_ PVOID SystemArgument1, _In_ PVOID SystemArgument2)
@ StorSynchronizeFullDuplex
FORCEINLINE VOID StorPortAcquireSpinLock(_In_ PVOID DeviceExtension, _In_ STOR_SPINLOCK SpinLock, _In_ PVOID LockContext, _Inout_ PSTOR_LOCK_HANDLE LockHandle)
#define STOR_MAP_NON_READ_WRITE_BUFFERS
FORCEINLINE BOOLEAN StorPortEnablePassiveInitialization(_In_ PVOID DeviceExtension, _In_ PHW_PASSIVE_INITIALIZE_ROUTINE HwPassiveInitializeRoutine)
FORCEINLINE VOID StorPortInitializeDpc(_In_ PVOID DeviceExtension, _Out_ PSTOR_DPC Dpc, _In_ PHW_DPC_ROUTINE HwDpcRoutine)
SCSI_PHYSICAL_ADDRESS RangeStart
struct _AHCI_ADAPTER_EXTENSION::@1356 StateFlags
PAHCI_MEMORY_REGISTERS ABAR_Address
AHCI_PORT_EXTENSION PortExtension[MAXIMUM_AHCI_PORT_COUNT]
AHCI_COMMAND_HEADER_DESCRIPTION DI
AHCI_PRDT PRDT[MAXIMUM_AHCI_PRDT_ENTRIES]
AHCI_PORT PortList[MAXIMUM_AHCI_PORT_COUNT]
struct _AHCI_ADAPTER_EXTENSION * AdapterExtension
PIDENTIFY_DEVICE_DATA IdentifyDeviceData
AHCI_QUEUE CompletionQueue
STOR_PHYSICAL_ADDRESS IdentifyDeviceDataPhysicalAddress
struct _AHCI_PORT_EXTENSION::@1355 DeviceParams
STOR_DEVICE_POWER_STATE DevicePowerState
PAHCI_RECEIVED_FIS ReceivedFIS
PAHCI_COMMAND_HEADER CommandList
STOR_DPC CommandCompletion
PAHCI_COMPLETION_ROUTINE CompletionRoutine
PLOCAL_SCATTER_GATHER_LIST pSgl
LOCAL_SCATTER_GATHER_LIST Sgl
PHW_INTERRUPT HwInterrupt
BOOLEAN MultipleRequestPerLu
BOOLEAN NeedPhysicalAddresses
ULONG HwInitializationDataSize
PHW_INITIALIZE HwInitialize
ULONG DeviceExtensionSize
INTERFACE_TYPE AdapterInterfaceType
PHW_FIND_ADAPTER HwFindAdapter
ULONG NumberOfAccessRanges
UCHAR FirmwareRevision[8]
struct _IDENTIFY_DEVICE_DATA::@1898 CommandSetActive
struct _IDENTIFY_DEVICE_DATA::@1899 PhysicalLogicalSectorSize
struct _IDENTIFY_DEVICE_DATA::@1897 CommandSetSupport
struct _IDENTIFY_DEVICE_DATA::@1895 GeneralConfiguration
ULONG UserAddressableSectors
UCHAR ProductRevisionLevel[4]
UCHAR DeviceTypeQualifier
STOR_SCATTER_GATHER_ELEMENT List[MAXIMUM_AHCI_PRDT_ENTRIES]
ULONG LogicalBlockAddress
STOR_PNP_ACTION PnPAction
STOR_PHYSICAL_ADDRESS PhysicalAddress
UCHAR DeviceTypeQualifier
UCHAR SupportedPageList[0]
#define ATA_FLAGS_USE_DMA
#define ATA_FLAGS_DATA_OUT
#define ATA_FLAGS_DATA_IN
#define ATA_FLAGS_48BIT_COMMAND
struct _AHCI_TASK_FILE_DATA::@1351::_STS STS
struct _CDB::_CDB10 CDB10
struct _CDB::_CDB6INQUIRY3 CDB6INQUIRY3
struct _CDB::_MODE_SENSE MODE_SENSE
struct _CDB::_CDB16 CDB16
_Must_inspect_result_ _In_ WDFDEVICE _In_ PIRP _In_ WDFQUEUE Queue
_In_ WDFDEVICE _In_ PPNP_BUS_INFORMATION BusInformation
_Must_inspect_result_ _In_ PWDF_DPC_CONFIG _In_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFDPC * Dpc
_Must_inspect_result_ _In_ PDRIVER_OBJECT _In_ PCUNICODE_STRING RegistryPath
_Must_inspect_result_ _In_ PDRIVER_OBJECT DriverObject
_In_ WDFMEMORY _Out_opt_ size_t * BufferSize
_In_ WDFREQUEST _In_opt_ PFN_WDF_REQUEST_COMPLETION_ROUTINE CompletionRoutine
struct _PCI_COMMON_CONFIG * PPCI_COMMON_CONFIG
struct _PCI_COMMON_CONFIG PCI_COMMON_CONFIG
_In_opt_ PVOID _In_opt_ PVOID SystemArgument1
_In_opt_ PVOID _In_opt_ PVOID _In_opt_ PVOID SystemArgument2