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'
141 if (!DeviceExtension->HwInterrupt(DeviceExtension->MiniPortDeviceExtension))
148 DeviceExtension->InterruptFlags &= ~SCSI_PORT_NEXT_REQUEST_READY;
151 if (!DeviceExtension->HwStartIo(
152 DeviceExtension->MiniPortDeviceExtension,
163 if (!DeviceExtension->HwInterrupt(DeviceExtension->MiniPortDeviceExtension))
259 Context->DeviceExtension = DeviceExtension;
277 ULONG FullSectors, NbSectors;
285 FullSectors =
N /
Context->SectorSize;
289 if (FullSectors > 0xffff)
315 Cdb->
CDB10.LogicalBlockByte0 = (Lba >> 24) & 0xff;
316 Cdb->
CDB10.LogicalBlockByte1 = (Lba >> 16) & 0xff;
317 Cdb->
CDB10.LogicalBlockByte2 = (Lba >> 8) & 0xff;
318 Cdb->
CDB10.LogicalBlockByte3 = Lba & 0xff;
319 Cdb->
CDB10.TransferBlocksMsb = (FullSectors >> 8) & 0xff;
320 Cdb->
CDB10.TransferBlocksLsb = FullSectors & 0xff;
326 N -= FullSectors *
Context->SectorSize;
328 Context->SectorNumber += FullSectors;
362 Cdb->
CDB10.LogicalBlockByte0 = (Lba >> 24) & 0xff;
363 Cdb->
CDB10.LogicalBlockByte1 = (Lba >> 16) & 0xff;
364 Cdb->
CDB10.LogicalBlockByte2 = (Lba >> 8) & 0xff;
365 Cdb->
CDB10.LogicalBlockByte3 = Lba & 0xff;
438 ConfigInfo->AdapterInterfaceType = HwInitData->AdapterInterfaceType;
439 ConfigInfo->InterruptMode =
Latched;
446 ConfigInfo->NeedPhysicalAddresses = HwInitData->NeedPhysicalAddresses;
447 ConfigInfo->MapBuffers = HwInitData->MapBuffers;
448 ConfigInfo->AutoRequestSense = HwInitData->AutoRequestSense;
449 ConfigInfo->ReceiveEvent = HwInitData->ReceiveEvent;
450 ConfigInfo->TaggedQueuing = HwInitData->TaggedQueuing;
451 ConfigInfo->MultipleRequestPerLu = HwInitData->MultipleRequestPerLu;
454 ConfigInfo->AtdiskPrimaryClaimed =
FALSE;
455 ConfigInfo->AtdiskSecondaryClaimed =
FALSE;
458 for (Bus = 0; Bus <
RTL_NUMBER_OF(ConfigInfo->InitiatorBusId); Bus++)
464 ConfigInfo->NumberOfPhysicalBreaks = 17;
473 IN PCCHAR DebugMessage,
480 if (DebugPrintLevel > 10)
518#undef ScsiPortConvertPhysicalAddressToUlong
534 Address.QuadPart = UlongAddress;
633 TRACE(
"ScsiPortGetPhysicalAddress(%p %p %p %p)\n",
680 if (!DeviceExtension->SrbExtensionSize)
681 DeviceExtension->SrbExtensionSize = 16;
684 BufSize = DeviceExtension->SrbExtensionSize;
694 if (!DeviceExtension->AdapterObject)
714 DeviceExtension->CommonBufferLength = CommonBufferLength;
723 CommonBufferLength -= NonCachedSize;
728 DeviceExtension->NonCachedExtension =
NULL;
743 ULONG MapRegistersCount;
746 TRACE(
"ScsiPortGetUncachedExtension(%p %p %lu)\n",
787 MapRegistersCount = 0;
791 if (ConfigInfo->NumberOfPhysicalBreaks != 0 &&
792 MapRegistersCount > ConfigInfo->NumberOfPhysicalBreaks)
795 ConfigInfo->NumberOfPhysicalBreaks;
812 TRACE(
"SpiAllocateCommonBuffer() failed with Status = 0x%08X!\n",
Status);
843 CHAR PartitionName[64];
862 sizeof(PartitionName),
889 if (!DeviceExtension->HwResetBus(DeviceExtension->MiniPortDeviceExtension,
PathId))
902 TRACE(
"Scanning SCSI device %d.%d.%d\n",
932 sprintf(ArcName,
"scsi(%ld)cdrom(%d)fdisk(%d)",
938 sprintf(ArcName,
"scsi(%ld)disk(%d)rdisk(%d)",
965 for (
Index = 0;
Index < ResourceDescriptor->PartialResourceList.Count;
Index++)
967 PartialData = &ResourceDescriptor->PartialResourceList.PartialDescriptors[
Index];
969 switch (PartialData->
Type)
973 if (RangeNumber < HwInitializationData->NumberOfAccessRanges)
975 TRACE(
"Got port at 0x%I64x, len 0x%x\n",
976 PartialData->
u.
Port.Start.QuadPart, PartialData->
u.
Port.Length);
977 AccessRange = &((*(PortConfig->AccessRanges))[RangeNumber]);
989 if (RangeNumber < HwInitializationData->NumberOfAccessRanges)
991 TRACE(
"Got memory at 0x%I64x, len 0x%x\n",
992 PartialData->
u.
Memory.Start.QuadPart, PartialData->
u.
Memory.Length);
993 AccessRange = &((*(PortConfig->AccessRanges))[RangeNumber]);
1005 TRACE(
"Got interrupt level %d, vector %d\n",
1007 PortConfig->BusInterruptLevel = PartialData->
u.
Interrupt.Level;
1008 PortConfig->BusInterruptVector = PartialData->
u.
Interrupt.Vector;
1013 PortConfig->InterruptMode =
Latched;
1022 TRACE(
"Got DMA channel %d, port %d\n",
1023 PartialData->
u.
Dma.Channel, PartialData->
u.
Dma.Port);
1024 PortConfig->DmaChannel = PartialData->
u.
Dma.Channel;
1025 PortConfig->DmaPort = PartialData->
u.
Dma.Port;
1043 ULONG FunctionNumber;
1044 CHAR VendorIdString[8];
1045 CHAR DeviceIdString[8];
1057 for (FunctionNumber = NextSlotNumber->u.bits.FunctionNumber; FunctionNumber <
PCI_MAX_FUNCTION; FunctionNumber++)
1059 SlotNumber.u.bits.FunctionNumber = FunctionNumber;
1079 sprintf(VendorIdString,
"%04hx", PciConfig.VendorID);
1080 sprintf(DeviceIdString,
"%04hx", PciConfig.DeviceID);
1089 TRACE(
"Found device 0x%04hx 0x%04hx at %1lu %2lu %1lu\n",
1090 PciConfig.VendorID, PciConfig.DeviceID,
1116 NextSlotNumber->u.bits.FunctionNumber = FunctionNumber + 1;
1119 PortConfig->SlotNumber =
SlotNumber.u.AsULONG;
1123 NextSlotNumber->u.bits.FunctionNumber = 0;
1126 NextSlotNumber->u.bits.DeviceNumber = 0;
1140 ULONG DeviceExtensionSize;
1172 if (!DeviceExtension)
1214 TRACE(
"VendorId '%.*s' DeviceId '%.*s'\n",
1258 TRACE(
"Adapter found: buses = %d, targets = %d\n",
1269 for (ScsiBus = 0; ScsiBus < PortConfig.
NumberOfBuses; ScsiBus++)
1275 FirstConfigCall =
FALSE;
1393 TRACE(
"ScsiPortReadPortUchar(%p)\n",
Port);
1640 ULONG ImportTableSize;
1658 strcat(NtBootDdPath,
"\\NTBOOTDD.SYS");
1670 "NTBOOTDD.SYS", ImageBase, &BootDdDTE);
1708 for (;(ImportTable->
Name != 0) && (ImportTable->
FirstThunk != 0);ImportTable++)
PRTL_UNICODE_STRING_BUFFER Path
char * strcat(char *DstString, const char *SrcString)
char * strcpy(char *DstString, const char *SrcString)
#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 MmFreeMemory(PVOID MemoryPointer)
FORCEINLINE PVOID FrLdrTempAlloc(_In_ SIZE_T Size, _In_ ULONG Tag)
FORCEINLINE VOID FrLdrTempFree(PVOID Allocation, 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 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 RtlImageDirectoryEntryToData
#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 RemoveEntryList(Entry)
#define InitializeListHead(ListHead)
#define ExAllocatePool(type, size)
CCHAR FrLdrBootPath[MAX_PATH]
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)
#define CmResourceTypeMemory
#define CmResourceTypeDma
enum _INTERFACE_TYPE INTERFACE_TYPE
#define CmResourceTypePort
#define CmResourceTypeInterrupt
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)
LIST_ENTRY * ModuleListHead
#define sprintf(buf, format,...)
#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
#define CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE
#define CM_RESOURCE_INTERRUPT_LATCHED
ULONG NTAPI LdrRelocateImageWithBias(_In_ PVOID BaseAddress, _In_ LONGLONG AdditionalBias, _In_opt_ PCSTR LoaderName, _In_ ULONG Success, _In_ ULONG Conflict, _In_ ULONG Invalid)
_In_ ULONG _In_ ULONG Offset
_In_ ULONG _In_ ULONG _In_ ULONG Length
struct _IMAGE_IMPORT_DESCRIPTOR * PIMAGE_IMPORT_DESCRIPTOR
PIMAGE_THUNK_DATA32 PIMAGE_THUNK_DATA
#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)
#define IMAGE_DIRECTORY_ENTRY_IMPORT
BOOLEAN PeLdrScanImportDescriptorTable(IN OUT PLIST_ENTRY ModuleListHead, IN PCCH DirectoryPath, IN PLDR_DATA_TABLE_ENTRY ScanDTE)
VOID PeLdrFreeDataTableEntry(_In_ PLDR_DATA_TABLE_ENTRY Entry)
BOOLEAN PeLdrAllocateDataTableEntry(IN OUT PLIST_ENTRY ModuleListHead, IN PCCH BaseDllName, IN PCCH FullDllName, IN PVOID BasePA, OUT PLDR_DATA_TABLE_ENTRY *NewEntry)
BOOLEAN PeLdrLoadImage(_In_ PCSTR FilePath, _In_ TYPE_OF_MEMORY MemoryType, _Out_ PVOID *ImageBasePA)
Loads the specified image from the file.
_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::@391::@393 Port
struct _CM_PARTIAL_RESOURCE_DESCRIPTOR::@391::@396 Memory
union _CM_PARTIAL_RESOURCE_DESCRIPTOR::@391 u
struct _CM_PARTIAL_RESOURCE_DESCRIPTOR::@391::@394 Interrupt
struct _CM_PARTIAL_RESOURCE_DESCRIPTOR::@391::@397 Dma
union _IMAGE_THUNK_DATA32::@2138 u1
ULONG MaximumPhysicalPages
LIST_ENTRY InLoadOrderLinks
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::@2299 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)