26#undef ScsiPortLogError
27#undef ScsiPortMoveMemory
28#undef ScsiPortWritePortBufferUchar
29#undef ScsiPortWritePortBufferUlong
30#undef ScsiPortWritePortBufferUshort
31#undef ScsiPortWritePortUchar
32#undef ScsiPortWritePortUlong
33#undef ScsiPortWritePortUshort
34#undef ScsiPortWriteRegisterBufferUchar
35#undef ScsiPortWriteRegisterBufferUlong
36#undef ScsiPortWriteRegisterBufferUshort
37#undef ScsiPortWriteRegisterUchar
38#undef ScsiPortWriteRegisterUlong
39#undef ScsiPortWriteRegisterUshort
40#undef ScsiPortReadPortBufferUchar
41#undef ScsiPortReadPortBufferUlong
42#undef ScsiPortReadPortBufferUshort
43#undef ScsiPortReadPortUchar
44#undef ScsiPortReadPortUlong
45#undef ScsiPortReadPortUshort
46#undef ScsiPortReadRegisterBufferUchar
47#undef ScsiPortReadRegisterBufferUlong
48#undef ScsiPortReadRegisterBufferUshort
49#undef ScsiPortReadRegisterUchar
50#undef ScsiPortReadRegisterUlong
51#undef ScsiPortReadRegisterUshort
53#define SCSI_PORT_NEXT_REQUEST_READY 0x0008
55#define TAG_SCSI_DEVEXT 'DscS'
56#define TAG_SCSI_ACCESS_RANGES 'AscS'
142 if (!DeviceExtension->HwInterrupt(DeviceExtension->MiniPortDeviceExtension))
149 DeviceExtension->InterruptFlags &= ~SCSI_PORT_NEXT_REQUEST_READY;
152 if (!DeviceExtension->HwStartIo(
153 DeviceExtension->MiniPortDeviceExtension,
164 if (!DeviceExtension->HwInterrupt(DeviceExtension->MiniPortDeviceExtension))
262 Context->DeviceExtension = DeviceExtension;
281 ULONG FullSectors, NbSectors;
289 FullSectors =
N /
Context->SectorSize;
293 if (FullSectors > 0xffff)
319 Cdb->
CDB10.LogicalBlockByte0 = (Lba >> 24) & 0xff;
320 Cdb->
CDB10.LogicalBlockByte1 = (Lba >> 16) & 0xff;
321 Cdb->
CDB10.LogicalBlockByte2 = (Lba >> 8) & 0xff;
322 Cdb->
CDB10.LogicalBlockByte3 = Lba & 0xff;
323 Cdb->
CDB10.TransferBlocksMsb = (FullSectors >> 8) & 0xff;
324 Cdb->
CDB10.TransferBlocksLsb = FullSectors & 0xff;
330 N -= FullSectors *
Context->SectorSize;
332 Context->SectorNumber += FullSectors;
366 Cdb->
CDB10.LogicalBlockByte0 = (Lba >> 24) & 0xff;
367 Cdb->
CDB10.LogicalBlockByte1 = (Lba >> 16) & 0xff;
368 Cdb->
CDB10.LogicalBlockByte2 = (Lba >> 8) & 0xff;
369 Cdb->
CDB10.LogicalBlockByte3 = Lba & 0xff;
442 ConfigInfo->AdapterInterfaceType = HwInitData->AdapterInterfaceType;
443 ConfigInfo->InterruptMode =
Latched;
450 ConfigInfo->NeedPhysicalAddresses = HwInitData->NeedPhysicalAddresses;
451 ConfigInfo->MapBuffers = HwInitData->MapBuffers;
452 ConfigInfo->AutoRequestSense = HwInitData->AutoRequestSense;
453 ConfigInfo->ReceiveEvent = HwInitData->ReceiveEvent;
454 ConfigInfo->TaggedQueuing = HwInitData->TaggedQueuing;
455 ConfigInfo->MultipleRequestPerLu = HwInitData->MultipleRequestPerLu;
458 ConfigInfo->AtdiskPrimaryClaimed =
FALSE;
459 ConfigInfo->AtdiskSecondaryClaimed =
FALSE;
462 for (Bus = 0; Bus <
RTL_NUMBER_OF(ConfigInfo->InitiatorBusId); Bus++)
468 ConfigInfo->NumberOfPhysicalBreaks = 17;
477 IN PCCHAR DebugMessage,
484 if (DebugPrintLevel > 10)
522#undef ScsiPortConvertPhysicalAddressToUlong
538 Address.QuadPart = UlongAddress;
637 TRACE(
"ScsiPortGetPhysicalAddress(%p %p %p %p)\n",
684 if (!DeviceExtension->SrbExtensionSize)
685 DeviceExtension->SrbExtensionSize = 16;
688 BufSize = DeviceExtension->SrbExtensionSize;
698 if (!DeviceExtension->AdapterObject)
718 DeviceExtension->CommonBufferLength = CommonBufferLength;
727 CommonBufferLength -= NonCachedSize;
732 DeviceExtension->NonCachedExtension =
NULL;
747 ULONG MapRegistersCount;
750 TRACE(
"ScsiPortGetUncachedExtension(%p %p %lu)\n",
791 MapRegistersCount = 0;
795 if (ConfigInfo->NumberOfPhysicalBreaks != 0 &&
796 MapRegistersCount > ConfigInfo->NumberOfPhysicalBreaks)
799 ConfigInfo->NumberOfPhysicalBreaks;
816 TRACE(
"SpiAllocateCommonBuffer() failed with Status = 0x%08X!\n",
Status);
847 CHAR PartitionName[64];
866 sizeof(PartitionName),
893 if (!DeviceExtension->HwResetBus(DeviceExtension->MiniPortDeviceExtension,
PathId))
945 "scsi(%lu)disk(%u)fdisk(%u)",
953 "scsi(%lu)disk(%u)rdisk(%u)",
963 "scsi(%lu)cdrom(%u)fdisk(%u)",
986 for (
Index = 0;
Index < ResourceDescriptor->PartialResourceList.Count;
Index++)
988 PartialData = &ResourceDescriptor->PartialResourceList.PartialDescriptors[
Index];
990 switch (PartialData->
Type)
994 if (RangeNumber < HwInitializationData->NumberOfAccessRanges)
996 TRACE(
"Got port at 0x%I64x, len 0x%x\n",
997 PartialData->
u.
Port.Start.QuadPart, PartialData->
u.
Port.Length);
998 AccessRange = &((*(PortConfig->AccessRanges))[RangeNumber]);
1010 if (RangeNumber < HwInitializationData->NumberOfAccessRanges)
1012 TRACE(
"Got memory at 0x%I64x, len 0x%x\n",
1013 PartialData->
u.
Memory.Start.QuadPart, PartialData->
u.
Memory.Length);
1014 AccessRange = &((*(PortConfig->AccessRanges))[RangeNumber]);
1026 TRACE(
"Got interrupt level %d, vector %d\n",
1028 PortConfig->BusInterruptLevel = PartialData->
u.
Interrupt.Level;
1029 PortConfig->BusInterruptVector = PartialData->
u.
Interrupt.Vector;
1034 PortConfig->InterruptMode =
Latched;
1043 TRACE(
"Got DMA channel %d, port %d\n",
1044 PartialData->
u.
Dma.Channel, PartialData->
u.
Dma.Port);
1045 PortConfig->DmaChannel = PartialData->
u.
Dma.Channel;
1046 PortConfig->DmaPort = PartialData->
u.
Dma.Port;
1064 ULONG FunctionNumber;
1065 CHAR VendorIdString[8];
1066 CHAR DeviceIdString[8];
1078 for (FunctionNumber = NextSlotNumber->u.bits.FunctionNumber; FunctionNumber <
PCI_MAX_FUNCTION; FunctionNumber++)
1080 SlotNumber.u.bits.FunctionNumber = FunctionNumber;
1100 sprintf(VendorIdString,
"%04hx", PciConfig.VendorID);
1101 sprintf(DeviceIdString,
"%04hx", PciConfig.DeviceID);
1110 TRACE(
"Found device 0x%04hx 0x%04hx at %1lu %2lu %1lu\n",
1111 PciConfig.VendorID, PciConfig.DeviceID,
1137 NextSlotNumber->u.bits.FunctionNumber = FunctionNumber + 1;
1140 PortConfig->SlotNumber =
SlotNumber.u.AsULONG;
1144 NextSlotNumber->u.bits.FunctionNumber = 0;
1147 NextSlotNumber->u.bits.DeviceNumber = 0;
1161 ULONG DeviceExtensionSize;
1193 if (!DeviceExtension)
1235 TRACE(
"VendorId '%.*s' DeviceId '%.*s'\n",
1279 TRACE(
"Adapter found: buses = %u, targets = %u\n",
1290 for (ScsiBus = 0; ScsiBus < PortConfig.
NumberOfBuses; ScsiBus++)
1296 FirstConfigCall =
FALSE;
1414 TRACE(
"ScsiPortReadPortUchar(%p)\n",
Port);
1672 strcat(NtBootDdPath,
"\\NTBOOTDD.SYS");
PRTL_UNICODE_STRING_BUFFER Path
char * strstr(char *String1, char *String2)
#define WRITE_REGISTER_USHORT(r, v)
#define READ_REGISTER_USHORT(r)
#define WRITE_REGISTER_ULONG(r, v)
#define READ_REGISTER_ULONG(r)
#define WriteBuffer(BaseIoAddress, Buffer, Count)
#define ReadBuffer(BaseIoAddress, Buffer, Count)
BOOLEAN DissectArcPath2(IN PCSTR ArcPath, OUT PULONG x, OUT PULONG y, OUT PULONG z, OUT PULONG Partition, OUT PULONG PathSyntax)
VOID NTAPI ScsiPortCompleteRequest(IN PVOID HwDeviceExtension, IN UCHAR PathId, IN UCHAR TargetId, IN UCHAR Lun, IN UCHAR SrbStatus)
ULONG NTAPI ScsiPortInitialize(IN PVOID Argument1, IN PVOID Argument2, IN PHW_INITIALIZATION_DATA HwInitializationData, IN PVOID HwContext OPTIONAL)
VOID NTAPI ScsiPortWritePortBufferUlong(IN PULONG Port, IN PULONG Buffer, IN ULONG Count)
static BOOLEAN SpiGetPciConfigData(IN PHW_INITIALIZATION_DATA HwInitializationData, IN OUT PPORT_CONFIGURATION_INFORMATION PortConfig, IN ULONG BusNumber, IN OUT PPCI_SLOT_NUMBER NextSlotNumber)
static VOID SpiScanAdapter(IN PSCSI_PORT_DEVICE_EXTENSION DeviceExtension, IN ULONG ScsiBus, IN UCHAR PathId)
SCSI_PHYSICAL_ADDRESS NTAPI ScsiPortGetPhysicalAddress(IN PVOID HwDeviceExtension, IN PSCSI_REQUEST_BLOCK Srb OPTIONAL, IN PVOID VirtualAddress, OUT ULONG *Length)
VOID NTAPI ScsiPortReadPortBufferUchar(IN PUCHAR Port, OUT PUCHAR Buffer, IN ULONG Count)
VOID NTAPI ScsiPortWritePortUlong(IN PULONG Port, IN ULONG Value)
#define TAG_SCSI_ACCESS_RANGES
VOID NTAPI ScsiPortReadPortBufferUshort(IN PUSHORT Port, OUT PUSHORT Buffer, IN ULONG Count)
static const DEVVTBL DiskVtbl
struct SCSI_PORT_DEVICE_EXTENSION * PSCSI_PORT_DEVICE_EXTENSION
USHORT NTAPI ScsiPortReadPortUshort(IN PUSHORT Port)
VOID __cdecl ScsiPortNotification(IN SCSI_NOTIFICATION_TYPE NotificationType, IN PVOID HwDeviceExtension, IN ...)
PVOID NTAPI ScsiPortGetUncachedExtension(IN PVOID HwDeviceExtension, IN PPORT_CONFIGURATION_INFORMATION ConfigInfo, IN ULONG NumberOfBytes)
static NTSTATUS SpiAllocateCommonBuffer(IN OUT PSCSI_PORT_DEVICE_EXTENSION DeviceExtension, IN ULONG NonCachedSize)
VOID NTAPI ScsiPortWriteRegisterBufferUshort(IN PUSHORT Register, IN PUSHORT Buffer, IN ULONG Count)
static BOOLEAN SpiSendSynchronousSrb(IN PSCSI_PORT_DEVICE_EXTENSION DeviceExtension, IN PSCSI_REQUEST_BLOCK Srb)
BOOLEAN NTAPI ScsiPortValidateRange(IN PVOID HwDeviceExtension, IN INTERFACE_TYPE BusType, IN ULONG SystemIoBusNumber, IN SCSI_PHYSICAL_ADDRESS IoAddress, IN ULONG NumberOfBytes, IN BOOLEAN InIoSpace)
VOID NTAPI ScsiPortWritePortUshort(IN PUSHORT Port, IN USHORT Value)
struct tagDISKCONTEXT DISKCONTEXT
static ARC_STATUS DiskGetFileInformation(ULONG FileId, FILEINFORMATION *Information)
ULONG LoadBootDeviceDriver(VOID)
static NTSTATUS SpiCreatePortConfig(IN PSCSI_PORT_DEVICE_EXTENSION DeviceExtension, IN PHW_INITIALIZATION_DATA HwInitData, OUT PPORT_CONFIGURATION_INFORMATION ConfigInfo, IN BOOLEAN ZeroStruct)
SCSI_PHYSICAL_ADDRESS NTAPI ScsiPortConvertUlongToPhysicalAddress(IN ULONG_PTR UlongAddress)
VOID NTAPI ScsiPortLogError(IN PVOID HwDeviceExtension, IN PSCSI_REQUEST_BLOCK Srb OPTIONAL, IN UCHAR PathId, IN UCHAR TargetId, IN UCHAR Lun, IN ULONG ErrorCode, IN ULONG UniqueId)
VOID NTAPI ScsiPortWritePortUchar(IN PUCHAR Port, IN UCHAR Value)
VOID NTAPI ScsiPortWriteRegisterBufferUchar(IN PUCHAR Register, IN PUCHAR Buffer, IN ULONG Count)
VOID NTAPI ScsiPortWriteRegisterUshort(IN PUSHORT Register, IN USHORT Value)
VOID NTAPI ScsiPortReadRegisterBufferUshort(IN PUSHORT Register, IN PUSHORT Buffer, IN ULONG Count)
VOID __cdecl ScsiDebugPrint(IN ULONG DebugPrintLevel, IN PCCHAR DebugMessage, IN ...)
VOID NTAPI ScsiPortMoveMemory(IN PVOID WriteBuffer, IN PVOID ReadBuffer, IN ULONG Length)
PVOID NTAPI ScsiPortGetLogicalUnit(IN PVOID HwDeviceExtension, IN UCHAR PathId, IN UCHAR TargetId, IN UCHAR Lun)
static ARC_STATUS DiskRead(ULONG FileId, VOID *Buffer, ULONG N, ULONG *Count)
VOID NTAPI ScsiPortWritePortBufferUshort(IN PUSHORT Port, IN PUSHORT Buffer, IN ULONG Count)
VOID NTAPI ScsiPortWriteRegisterBufferUlong(IN PULONG Register, IN PULONG Buffer, IN ULONG Count)
VOID NTAPI ScsiPortReadRegisterBufferUchar(IN PUCHAR Register, IN PUCHAR Buffer, IN ULONG Count)
VOID NTAPI ScsiPortWriteRegisterUchar(IN PUCHAR Register, IN UCHAR Value)
VOID NTAPI ScsiPortFreeDeviceBase(IN PVOID HwDeviceExtension, IN PVOID MappedAddress)
VOID NTAPI ScsiPortWriteRegisterUlong(IN PULONG Register, IN ULONG Value)
PSCSI_PORT_DEVICE_EXTENSION ScsiDeviceExtensions[SCSI_MAXIMUM_BUSES]
static ARC_STATUS DiskOpen(CHAR *Path, OPENMODE OpenMode, ULONG *FileId)
VOID NTAPI ScsiPortStallExecution(IN ULONG Delay)
ULONG NTAPI ScsiPortSetBusDataByOffset(IN PVOID DeviceExtension, IN ULONG BusDataType, IN ULONG SystemIoBusNumber, IN ULONG SlotNumber, IN PVOID Buffer, IN ULONG Offset, IN ULONG Length)
PSCSI_REQUEST_BLOCK NTAPI ScsiPortGetSrb(IN PVOID DeviceExtension, IN UCHAR PathId, IN UCHAR TargetId, IN UCHAR Lun, IN LONG QueueTag)
static ARC_STATUS DiskSeek(ULONG FileId, LARGE_INTEGER *Position, SEEKMODE SeekMode)
VOID NTAPI ScsiPortFlushDma(IN PVOID DeviceExtension)
static VOID SpiResourceToConfig(IN PHW_INITIALIZATION_DATA HwInitializationData, IN PCM_FULL_RESOURCE_DESCRIPTOR ResourceDescriptor, IN OUT PPORT_CONFIGURATION_INFORMATION PortConfig)
VOID NTAPI ScsiPortReadRegisterBufferUlong(IN PULONG Register, IN PULONG Buffer, IN ULONG Count)
UCHAR NTAPI ScsiPortReadRegisterUchar(IN PUCHAR Register)
ULONG NTAPI ScsiPortReadRegisterUlong(IN PULONG Register)
static ARC_STATUS DiskClose(ULONG FileId)
PVOID NTAPI ScsiPortGetVirtualAddress(IN PVOID HwDeviceExtension, IN SCSI_PHYSICAL_ADDRESS PhysicalAddress)
VOID NTAPI ScsiPortWritePortBufferUchar(IN PUCHAR Port, IN PUCHAR Buffer, IN ULONG Count)
UCHAR NTAPI ScsiPortReadPortUchar(IN PUCHAR Port)
VOID NTAPI ScsiPortReadPortBufferUlong(IN PULONG Port, OUT PULONG Buffer, IN ULONG Count)
ULONG NTAPI ScsiPortGetBusData(IN PVOID DeviceExtension, IN ULONG BusDataType, IN ULONG SystemIoBusNumber, IN ULONG SlotNumber, IN PVOID Buffer, IN ULONG Length)
VOID NTAPI ScsiPortIoMapTransfer(IN PVOID HwDeviceExtension, IN PSCSI_REQUEST_BLOCK Srb, IN PVOID LogicalAddress, IN ULONG Length)
static VOID SpiScanDevice(IN PSCSI_PORT_DEVICE_EXTENSION DeviceExtension, IN PCHAR ArcName, IN ULONG ScsiBus, IN ULONG TargetId, IN ULONG Lun)
ULONG NTAPI ScsiPortReadPortUlong(IN PULONG Port)
USHORT NTAPI ScsiPortReadRegisterUshort(IN PUSHORT Register)
#define SCSI_PORT_NEXT_REQUEST_READY
PVOID NTAPI ScsiPortGetDeviceBase(IN PVOID HwDeviceExtension, IN INTERFACE_TYPE BusType, IN ULONG SystemIoBusNumber, IN SCSI_PHYSICAL_ADDRESS IoAddress, IN ULONG NumberOfBytes, IN BOOLEAN InIoSpace)
#define DBG_DEFAULT_CHANNEL(ch)
#define PARTITION_ENTRY_UNUSED
ARC_STATUS ArcOpen(CHAR *Path, OPENMODE OpenMode, ULONG *FileId)
PVOID FsGetDeviceSpecific(ULONG FileId)
VOID FsSetDeviceSpecific(ULONG FileId, PVOID Specific)
ARC_STATUS ArcClose(_In_ ULONG FileId)
VOID FsRegisterDevice(_In_ PCSTR DeviceName, _In_ const DEVVTBL *FuncTable)
VOID FrLdrTempFree(PVOID Allocation, ULONG Tag)
PVOID FrLdrTempAlloc(_In_ SIZE_T Size, _In_ ULONG Tag)
VOID NTAPI HalpInitBusHandler(VOID)
VOID NTAPI HalpInitializePciStubs(VOID)
_In_ PSCSI_REQUEST_BLOCK Srb
_In_ PREAD_CAPACITY_DATA ReadCapacityBuffer
struct _READ_CAPACITY_DATA READ_CAPACITY_DATA
#define DIRECT_ACCESS_DEVICE
#define READ_ONLY_DIRECT_ACCESS_DEVICE
#define SCSIOP_READ_CAPACITY
#define INQUIRYDATABUFFERSIZE
_In_ ULONG _In_ BOOLEAN _In_ ULONG _In_ UCHAR _In_ UCHAR _In_ UCHAR Lun
_In_ ULONG _In_ BOOLEAN _In_ ULONG _In_ UCHAR PathId
_In_ ULONG _In_ BOOLEAN _In_ ULONG _In_ UCHAR _In_ UCHAR TargetId
_In_ PCHAR _In_ ULONG DeviceNumber
FORCEINLINE PVOID VaToPa(PVOID Va)
#define NT_SUCCESS(StatCode)
#define _strnicmp(_String1, _String2, _MaxCount)
#define SCSI_MAXIMUM_TARGETS_PER_BUS
struct _SCSI_REQUEST_BLOCK SCSI_REQUEST_BLOCK
BOOLEAN(NTAPI * PHW_INTERRUPT)(IN PVOID DeviceExtension)
#define SRB_FLAGS_IS_ACTIVE
enum _SCSI_NOTIFICATION_TYPE SCSI_NOTIFICATION_TYPE
#define SCSI_MAXIMUM_BUSES
#define SRB_FUNCTION_EXECUTE_SCSI
BOOLEAN(NTAPI * PHW_STARTIO)(IN PVOID DeviceExtension, IN PSCSI_REQUEST_BLOCK Srb)
#define SCSI_MAXIMUM_LOGICAL_UNITS
BOOLEAN(NTAPI * PHW_RESET_BUS)(IN PVOID DeviceExtension, IN ULONG PathId)
#define ScsiPortConvertPhysicalAddressToUlong(Address)
struct _PORT_CONFIGURATION_INFORMATION PORT_CONFIGURATION_INFORMATION
#define SRB_FLAGS_DATA_IN
#define SRB_STATUS(Status)
#define SP_UNINITIALIZED_VALUE
#define SRB_STATUS_SUCCESS
BOOLEAN(NTAPI * PHW_INITIALIZE)(IN PVOID DeviceExtension)
NTHALAPI NTSTATUS NTAPI HalAssignSlotResources(PUNICODE_STRING, PUNICODE_STRING, PDRIVER_OBJECT, PDEVICE_OBJECT, INTERFACE_TYPE, ULONG, ULONG, PCM_RESOURCE_LIST *)
#define ExAllocatePool(type, size)
PCCHAR FrLdrGetBootPath(VOID)
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
BOOLEAN NTAPI HalTranslateBusAddress(IN INTERFACE_TYPE InterfaceType, IN ULONG BusNumber, IN PHYSICAL_ADDRESS BusAddress, IN OUT PULONG AddressSpace, OUT PPHYSICAL_ADDRESS TranslatedAddress)
ULONG NTAPI HalGetBusDataByOffset(IN BUS_DATA_TYPE BusDataType, IN ULONG BusNumber, IN ULONG SlotNumber, IN PVOID Buffer, IN ULONG Offset, IN ULONG Length)
PADAPTER_OBJECT NTAPI HalGetAdapter(IN PDEVICE_DESCRIPTION DeviceDescription, OUT PULONG NumberOfMapRegisters)
VOID NTAPI WRITE_PORT_USHORT(IN PUSHORT Port, IN USHORT Value)
ULONG NTAPI READ_PORT_ULONG(IN PULONG Port)
VOID NTAPI WRITE_PORT_ULONG(IN PULONG Port, IN ULONG Value)
USHORT NTAPI READ_PORT_USHORT(IN PUSHORT Port)
PPC_QUAL void __outbytestring(unsigned long const Port, const unsigned char *const Buffer, const unsigned long Count)
PPC_QUAL void __outwordstring(unsigned long const Port, const unsigned short *const Buffer, const unsigned long Count)
PPC_QUAL void __inwordstring(unsigned long Port, unsigned short *Buffer, unsigned long Count)
PPC_QUAL void __inbytestring(unsigned long Port, unsigned char *Buffer, unsigned long Count)
PPC_QUAL void __outdwordstring(unsigned long const Port, const unsigned long *const Buffer, const unsigned long Count)
PPC_QUAL void __indwordstring(unsigned long Port, unsigned long *Buffer, unsigned long Count)
PVOID NTAPI MmMapIoSpace(IN PHYSICAL_ADDRESS PhysicalAddress, IN SIZE_T NumberOfBytes, IN MEMORY_CACHING_TYPE CacheType)
#define KeStallExecutionProcessor(MicroSeconds)
_In_ NDIS_STATUS _In_ ULONG _In_ USHORT _In_opt_ PVOID _In_ ULONG DataSize
_In_ NDIS_ERROR_CODE ErrorCode
_In_ UINT _In_ UINT _In_ PNDIS_PACKET Source
_In_ ULONG _In_ ULONG Offset
_In_ ULONG _In_ ULONG _In_ ULONG Length
#define STATUS_INTERNAL_ERROR
NTSTRSAFEVAPI RtlStringCbPrintfA(_Out_writes_bytes_(cbDest) _Always_(_Post_z_) NTSTRSAFE_PSTR pszDest, _In_ size_t cbDest, _In_ _Printf_format_string_ NTSTRSAFE_PCSTR pszFormat,...)
#define READ_PORT_UCHAR(p)
#define WRITE_PORT_UCHAR(p, d)
BOOLEAN PeLdrLoadBootImage(_In_ PCSTR FilePath, _In_ PCSTR BaseDllName, _Out_ PVOID *ImageBase, _Out_ PLDR_DATA_TABLE_ENTRY *DataTableEntry)
#define CmResourceTypeMemory
#define CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE
#define CmResourceTypeDma
enum _INTERFACE_TYPE INTERFACE_TYPE
#define CmResourceTypePort
#define CM_RESOURCE_INTERRUPT_LATCHED
#define CmResourceTypeInterrupt
_In_opt_ WDFREQUEST _In_ ULONG _In_ BOOLEAN _In_ PCDB Cdb
_Must_inspect_result_ _In_ PVOID _In_ struct _HW_INITIALIZATION_DATA _In_ PVOID HwContext
_Must_inspect_result_ _In_ PVOID _In_ struct _HW_INITIALIZATION_DATA * HwInitializationData
PULONG MinorVersion OPTIONAL
PVOID MiniPortDeviceExtension
PHW_INITIALIZE HwInitialize
PADAPTER_OBJECT AdapterObject
PHW_INTERRUPT HwInterrupt
IO_SCSI_CAPABILITIES PortCapabilities
SCSI_PHYSICAL_ADDRESS RangeStart
struct _CM_PARTIAL_RESOURCE_DESCRIPTOR::@430::@433 Interrupt
struct _CM_PARTIAL_RESOURCE_DESCRIPTOR::@430::@436 Dma
struct _CM_PARTIAL_RESOURCE_DESCRIPTOR::@430::@435 Memory
struct _CM_PARTIAL_RESOURCE_DESCRIPTOR::@430::@432 Port
union _CM_PARTIAL_RESOURCE_DESCRIPTOR::@430 u
ULONG MaximumPhysicalPages
ULONG LogicalBlockAddress
PSCSI_PORT_DEVICE_EXTENSION DeviceExtension
#define RtlCopyMemory(Destination, Source, Length)
#define RtlZeroMemory(Destination, Length)
#define RtlMoveMemory(Destination, Source, Length)
#define STATUS_INVALID_PARAMETER
#define STATUS_INSUFFICIENT_RESOURCES
struct _CDB::_CDB10 CDB10
struct _CDB::_CDB6INQUIRY CDB6INQUIRY
struct _LARGE_INTEGER::@2479 u
_In_ WDFCOLLECTION _In_ ULONG Index
_Must_inspect_result_ _In_ WDFDMAENABLER _In_ _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFCOMMONBUFFER * CommonBuffer
_In_ WDF_SPECIAL_FILE_TYPE NotificationType
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ ULONG BufferLength
_Must_inspect_result_ _In_ WDFDMATRANSACTION _In_ PFN_WDF_PROGRAM_DMA _In_ WDF_DMA_DIRECTION _In_ PMDL _In_ PVOID VirtualAddress
_Must_inspect_result_ _In_ PDRIVER_OBJECT _In_ PCUNICODE_STRING RegistryPath
_Must_inspect_result_ _In_ PDRIVER_OBJECT DriverObject
_Must_inspect_result_ _In_ PWDFDEVICE_INIT _In_ PCUNICODE_STRING DeviceDescription
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING _Out_opt_ PUSHORT _Inout_opt_ PUNICODE_STRING Value
_In_ WDFREQUEST _In_ NTSTATUS _In_ ULONG_PTR Information
_Must_inspect_result_ _In_ WDFIORESREQLIST _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFIORESLIST * ResourceList
_In_ WDFIORESREQLIST _In_ ULONG SlotNumber
void int int ULONGLONG int va_list * ap
_IRQL_requires_same_ _In_opt_ PVOID Argument1
_In_opt_ PUNICODE_STRING _In_ PDRIVER_OBJECT _In_ PDEVICE_OBJECT _In_ INTERFACE_TYPE _In_ ULONG BusNumber
_In_opt_ PUNICODE_STRING _In_ PDRIVER_OBJECT _In_ PDEVICE_OBJECT _In_ INTERFACE_TYPE BusType
NTKERNELAPI VOID NTAPI WRITE_REGISTER_UCHAR(IN PUCHAR Register, IN UCHAR Value)
_In_ ULONG _In_ PHYSICAL_ADDRESS _Inout_ PULONG _Out_ PPHYSICAL_ADDRESS TranslatedAddress
_In_ ULONG _In_ PHYSICAL_ADDRESS _Inout_ PULONG AddressSpace
NTKERNELAPI UCHAR NTAPI READ_REGISTER_UCHAR(IN PUCHAR Register)
_In_ ULONG _In_ BOOLEAN _Out_ struct _DRIVE_LAYOUT_INFORMATION ** PartitionBuffer
#define PCI_INVALID_VENDORID
_Must_inspect_result_ typedef _In_ PHYSICAL_ADDRESS PhysicalAddress
#define DEVICE_DESCRIPTION_VERSION
_Must_inspect_result_ typedef _In_ PHYSICAL_ADDRESS _Inout_ PLARGE_INTEGER NumberOfBytes
#define ROUND_TO_PAGES(Size)