16#pragma warning(disable:28138)
323 UCHAR NextLfsr = Lfsr >> 1;
325 NextLfsr |= (((Lfsr ^ NextLfsr) ^ InputBit)) << 7;
340 for (
i = 0;
i < 32;
i++)
357 for (
i = 0;
i < 20;
i++)
403 *Dest++ = *ResourceData++;
441 Buffer[0] = ((CompressedData >> 2) & 0x1F) +
'A' - 1;
442 Buffer[1] = (((CompressedData & 0x3) << 3) | ((CompressedData >> 13) & 0x7)) +
'A' - 1;
443 Buffer[2] = ((CompressedData >> 8) & 0x1F) +
'A' - 1;
485 if (MaxLength <
sizeof(Temp))
488 Peek(ReadDataPort, &Temp,
sizeof(Temp));
491 MaxLength -=
sizeof(Temp);
493 TagLen = Temp[0] + (Temp[1] << 8);
497 if (
Tag == 0xFF && TagLen == 0xFFFF)
503 if (TagLen > MaxLength)
530 if (LogDevice->FriendlyName)
533 if (LogDevice->Alternatives)
536 Entry = LogDevice->CompatibleIdList.Flink;
537 while (
Entry != &LogDevice->CompatibleIdList)
564 UCHAR NumberOfIo = 0,
567 NumberOfMemRange = 0,
568 NumberOfMemRange32 = 0,
569 NumberOfDepedentSet = 0;
575 LogDev = LogDevToParse + 1;
582 Tag = *ResourceData++;
591 TagLen = *ResourceData++;
592 TagLen += *ResourceData++ << 8;
613 ResourceData += TagLen;
615 DPRINT(
"Found tag 0x%X (len %u)\n"
643 ResourceData += TagLen;
645 DPRINT(
"Found tag 0x%X (len %u)\n"
677 Description = &LogDevice->Alternatives->Irq[NumberOfDepedentSet];
681 Description = &LogDevice->Irq[NumberOfIrq].Description;
683 LogDevice->Irq[NumberOfIrq].Index = NumberOfIrq;
688 ResourceData += TagLen;
693 DPRINT(
"Found tag 0x%X (len %u)\n"
695 " Information 0x%X\n",
718 Description = &LogDevice->Alternatives->Dma[NumberOfDepedentSet];
722 Description = &LogDevice->Dma[NumberOfDma].Description;
724 LogDevice->Dma[NumberOfDma].Index = NumberOfDma;
729 ResourceData += TagLen;
731 DPRINT(
"Found tag 0x%X (len %u)\n"
733 " Information 0x%X\n",
743 if (LogDev != 0 || TagLen > 1 ||
751 LogDevice->Alternatives = ExAllocatePoolZero(
PagedPool,
754 if (!LogDevice->Alternatives)
761 ++NumberOfDepedentSet;
768 ++LogDevice->Alternatives->Count;
772 LogDevice->Alternatives->Priority[NumberOfDepedentSet] = 1;
777 &LogDevice->Alternatives->Priority[NumberOfDepedentSet],
779 ResourceData += TagLen;
782 DPRINT(
"*** Start depedent set %u, priority %u ***\n",
784 LogDevice->Alternatives->Priority[NumberOfDepedentSet]);
796 ResourceData += TagLen;
799 LogDevice->Alternatives->IoIndex = NumberOfIo++;
801 LogDevice->Alternatives->IrqIndex = NumberOfIrq++;
803 LogDevice->Alternatives->DmaIndex = NumberOfDma++;
805 LogDevice->Alternatives->MemRangeIndex = NumberOfMemRange++;
807 LogDevice->Alternatives->MemRange32Index = NumberOfMemRange32++;
809 DPRINT(
"*** End of depedent set ***\n");
829 Description = &LogDevice->Alternatives->Io[NumberOfDepedentSet];
833 Description = &LogDevice->Io[NumberOfIo].Description;
835 LogDevice->Io[NumberOfIo].Index = NumberOfIo;
840 ResourceData += TagLen;
842 DPRINT(
"Found tag 0x%X (len %u)\n"
843 " Information 0x%X\n"
874 Description = &LogDevice->Alternatives->Io[NumberOfDepedentSet];
878 Description = &LogDevice->Io[NumberOfIo].Description;
880 LogDevice->Io[NumberOfIo].Index = NumberOfIo;
885 ResourceData += TagLen;
893 DPRINT(
"Found tag 0x%X (len %u)\n"
912 if (!LogDevice->FriendlyName)
915 PeekCached(IdStrPos, LogDevice->FriendlyName, IdStrLen);
917 End = LogDevice->FriendlyName + IdStrLen - 1;
918 while (End > LogDevice->FriendlyName && *End ==
' ')
943 Description = &LogDevice->Alternatives->MemRange[NumberOfDepedentSet];
947 Description = &LogDevice->MemRange[NumberOfMemRange].Description;
949 LogDevice->MemRange[NumberOfMemRange].Index = NumberOfMemRange;
954 ResourceData += TagLen;
956 DPRINT(
"Found tag 0x%X (len %u)\n"
957 " Information 0x%X\n"
975 if (LogDev == LogDevToParse + 1 || LogDev == 0)
977 IdStrPos = ResourceData;
980 ResourceData += TagLen;
982 DPRINT(
"Found tag 0x%X (len %u)\n"
1011 Description = &LogDevice->Alternatives->MemRange32[NumberOfDepedentSet];
1015 Description = &LogDevice->MemRange32[NumberOfMemRange32].Description;
1017 LogDevice->MemRange32[NumberOfMemRange32].Index = NumberOfMemRange32;
1018 ++NumberOfMemRange32;
1022 ResourceData += TagLen;
1024 DPRINT(
"Found tag 0x%X (len %u)\n"
1025 " Information 0x%X\n"
1026 " Minimum 0x%08lX\n"
1027 " Maximum 0x%08lX\n"
1028 " Alignment 0x%08lX\n"
1029 " Length 0x%08lX\n",
1056 Description = &LogDevice->Alternatives->MemRange32[NumberOfDepedentSet];
1060 Description = &LogDevice->MemRange32[NumberOfMemRange32].Description;
1062 LogDevice->MemRange32[NumberOfMemRange32].Index = NumberOfMemRange32;
1063 ++NumberOfMemRange32;
1067 ResourceData += TagLen;
1075 DPRINT(
"Found tag 0x%X (len %u)\n"
1076 " Information 0x%X\n"
1077 " MemoryBase 0x%08lX\n"
1078 " Length 0x%08lX\n",
1091 DPRINT(
"Found unknown tag 0x%X (len %u)\n",
Tag, TagLen);
1095 ResourceData += TagLen;
1120 LogDevice->Flags &= ~ISAPNP_HAS_RESOURCES;
1126 LogDevice->Io[
i].CurrentBase =
ReadIoBase(ReadDataPort,
i);
1129 if (!LogDevice->Io[
i].CurrentBase)
1134 LogDevice->Irq[
i].CurrentNo =
ReadIrqNo(ReadDataPort,
i);
1136 if (!LogDevice->Irq[
i].CurrentNo)
1139 LogDevice->Irq[
i].CurrentType =
ReadIrqType(ReadDataPort,
i);
1145 if (LogDevice->Dma[
i].CurrentChannel == 4)
1152 if (!LogDevice->MemRange[
i].CurrentBase)
1159 LogDevice->MemRange[
i].CurrentLength -= LogDevice->MemRange[
i].CurrentBase;
1163 LogDevice->MemRange[
i].CurrentLength =
1171 if (!LogDevice->MemRange32[
i].CurrentBase)
1178 LogDevice->MemRange32[
i].CurrentLength -= LogDevice->MemRange32[
i].CurrentBase;
1182 LogDevice->MemRange32[
i].CurrentLength =
1204 NumberOfMemory32 = 0;
1210 for (
i = 0;
i < PartialResourceList->Count;
i++)
1292 u.Memory.Length) >> 8));
1365 ULONG NumberOfRead = 0;
1370 DPRINT(
"Setting read data port: 0x%p\n", ReadDataPort);
1428 DPRINT(
"Bad checksum\n");
1434 DPRINT(
"Saw no sign of life\n");
1448 if (NumberOfRead == 1)
1450 DPRINT(
"Trying next read data port\n");
1455 DPRINT(
"Found %u cards at read port 0x%p\n", Csn, ReadDataPort);
1472 ASSERT(FdoExt->ReadDataPort);
1479 DPRINT1(
"Failed to allocate memory for cache data\n");
1483 for (
Entry = FdoExt->DeviceListHead.Flink;
1484 Entry != &FdoExt->DeviceListHead;
1489 LogDevice->
Flags &= ~ISAPNP_PRESENT;
1492 for (Csn = 1; Csn <= FdoExt->Cards; Csn++)
1495 UCHAR TempId[3], LogDev;
1509 DPRINT1(
"Failed to read tags with status 0x%08lx, CSN %u\n",
Status, Csn);
1513 DPRINT(
"Detected ISA PnP device - VID: '%.3s' PID: 0x%04x SN: 0x%08lX\n",
1516 for (LogDev = 0; LogDev < MaxLogDev; LogDev++)
1520 for (
Entry = FdoExt->DeviceListHead.Flink;
1521 Entry != &FdoExt->DeviceListHead;
1530 (LogDevice->
LDN == LogDev))
1535 LogDevice->
CSN = Csn;
1545 DPRINT(
"Skip CSN %u, LDN %u\n", LogDevice->
CSN, LogDevice->
LDN);
1546 IsAlreadyEnumerated =
TRUE;
1551 if (IsAlreadyEnumerated)
1557 DPRINT1(
"Failed to allocate logical device!\n");
1563 LogDevice->
CSN = Csn;
1564 LogDevice->
LDN = LogDev;
1569 DPRINT1(
"Failed to parse tags with status 0x%08lx, CSN %u, LDN %u\n",
1576 DPRINT(
"Unable to read boot resources\n");
1588 FdoExt->DeviceCount++;
1620 for (
i = 0;
i <
Resources->List[0].PartialResourceList.Count;
i++)
1623 &
Resources->List[0].PartialResourceList.PartialDescriptors[
i];
1687 if (!Memory32 && (
Descriptor->u.Memory.Start.LowPart & 0xFF))
1725IsaHwDeactivateDevice(
1733IsaHwWaitForKey(
VOID)
VOID NTAPI KeStallExecutionProcessor(IN ULONG MicroSeconds)
#define _Requires_lock_held_(lock)
#define NT_SUCCESS(StatCode)
static const WCHAR Description[]
static VOID WriteDoubleWord(_In_ UCHAR Address, _In_ ULONG Value)
static ULONG ReadDoubleWord(_In_ PUCHAR ReadDataPort, _In_ UCHAR Address)
static VOID SetReadDataPort(_In_ PUCHAR ReadDataPort)
static VOID SendKey(VOID)
static NTSTATUS ParseTags(_In_ PUCHAR ResourceData, _In_ USHORT LogDevToParse, _Inout_ PISAPNP_LOGICAL_DEVICE LogDevice)
static USHORT ReadMemoryLimit(_In_ PUCHAR ReadDataPort, _In_ UCHAR Index)
static USHORT ReadIoBase(_In_ PUCHAR ReadDataPort, _In_ UCHAR Index)
static UCHAR ReadIrqType(_In_ PUCHAR ReadDataPort, _In_ UCHAR Index)
static USHORT ReadWord(_In_ PUCHAR ReadDataPort, _In_ UCHAR Address)
static VOID Peek(_In_ PUCHAR ReadDataPort, _Out_writes_bytes_all_opt_(Length) PVOID Buffer, _In_ USHORT Length)
static VOID WriteCsn(_In_ UCHAR Csn)
static VOID ActivateDevice(_In_ PUCHAR ReadDataPort, _In_ UCHAR LogDev)
static UCHAR ReadIrqNo(_In_ PUCHAR ReadDataPort, _In_ UCHAR Index)
static VOID FreeLogicalDevice(_In_ __drv_freesMem(Mem) PISAPNP_LOGICAL_DEVICE LogDevice)
static VOID WriteByte(_In_ UCHAR Address, _In_ UCHAR Value)
static UCHAR ReadMemoryControl(_In_ PUCHAR ReadDataPort, _In_ UCHAR Index)
static UCHAR ReadByte(_In_ PUCHAR ReadDataPort, _In_ UCHAR Address)
static VOID EnterIsolationState(VOID)
UCHAR IsaHwTryReadDataPort(_In_ PUCHAR ReadDataPort)
static ULONG ReadMemoryBase32(_In_ PUCHAR ReadDataPort, _In_ UCHAR Index)
static UCHAR ReadStatus(_In_ PUCHAR ReadDataPort)
static UCHAR NextLFSR(_In_ UCHAR Lfsr, _In_ UCHAR InputBit)
static VOID DeactivateDevice(_In_ UCHAR LogDev)
static VOID WriteLogicalDeviceNumber(_In_ UCHAR LogDev)
static UCHAR ReadMemoryControl32(_In_ PUCHAR ReadDataPort, _In_ UCHAR Index)
static VOID WriteAddress(_In_ UCHAR Address)
static VOID Wake(_In_ UCHAR Csn)
static UCHAR ReadResourceData(_In_ PUCHAR ReadDataPort)
static VOID PeekCached(_In_reads_bytes_(Length) PUCHAR ResourceData, _Out_writes_bytes_all_(Length) PVOID Buffer, _In_ USHORT Length)
static VOID WriteWord(_In_ UCHAR Address, _In_ USHORT Value)
static ULONG ReadMemoryLimit32(_In_ PUCHAR ReadDataPort, _In_ UCHAR Index)
static VOID WriteResources(_In_ PUCHAR ReadDataPort, _In_ PISAPNP_LOGICAL_DEVICE LogDevice, _In_ PCM_PARTIAL_RESOURCE_LIST PartialResourceList)
static VOID IsaPnpExtractAscii(_Out_writes_all_(3) PUCHAR Buffer, _In_ USHORT CompressedData)
static USHORT ReadMemoryBase(_In_ PUCHAR ReadDataPort, _In_ UCHAR Index)
static UCHAR ReadDmaChannel(_In_ PUCHAR ReadDataPort, _In_ UCHAR Index)
static VOID WaitForKey(VOID)
NTSTATUS IsaHwConfigureDevice(_In_ PISAPNP_FDO_EXTENSION FdoExt, _In_ PISAPNP_LOGICAL_DEVICE LogicalDevice, _In_ PCM_RESOURCE_LIST Resources)
static UCHAR PeekByte(_In_ PUCHAR ReadDataPort)
static NTSTATUS ReadTags(_In_ PUCHAR ReadDataPort, _Out_writes_(ISAPNP_MAX_RESOURCEDATA) PUCHAR Buffer, _In_ ULONG MaxLength, _Out_ PUSHORT MaxLogDev)
static UCHAR IsaPnpChecksum(_In_ PISAPNP_IDENTIFIER Identifier)
static BOOLEAN ReadCurrentResources(_In_ PUCHAR ReadDataPort, _Inout_ PISAPNP_LOGICAL_DEVICE LogDevice)
static VOID WriteData(_In_ UCHAR Data)
#define __drv_freesMem(kind)
#define _IRQL_requires_max_(irql)
#define RemoveEntryList(Entry)
#define InsertTailList(ListHead, Entry)
#define ExAllocatePoolWithTag(hernya, size, tag)
#define RtlCompareMemory(s1, s2, l)
#define InitializeListHead(ListHead)
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
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 * u
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 GLint GLint j
#define CmResourceTypeMemory
#define CmResourceTypeDma
#define CmResourceTypePort
#define CmResourceTypeInterrupt
BOOLEAN FindMemoryDescriptor(_In_ PISAPNP_LOGICAL_DEVICE LogDevice, _In_ ULONG RangeStart, _In_ ULONG RangeEnd, _Out_opt_ PBOOLEAN Memory32, _Out_opt_ PUCHAR Information, _Out_opt_ PUCHAR WriteOrder)
BOOLEAN FindIrqDescriptor(_In_ PISAPNP_LOGICAL_DEVICE LogDevice, _In_ ULONG Vector, _Out_opt_ PUCHAR WriteOrder)
BOOLEAN FindIoDescriptor(_In_ PISAPNP_LOGICAL_DEVICE LogDevice, _In_opt_ ULONG Base, _In_ ULONG RangeStart, _In_ ULONG RangeEnd, _Out_opt_ PUCHAR Information, _Out_opt_ PULONG Length, _Out_opt_ PUCHAR WriteOrder)
BOOLEAN FindDmaDescriptor(_In_ PISAPNP_LOGICAL_DEVICE LogDevice, _In_ ULONG Channel, _Out_opt_ PUCHAR WriteOrder)
_In_ PISAPNP_LOGICAL_DEVICE LogicalDevice
#define ISAPNP_HAS_MULTIPLE_LOGDEVS
Indicates if the parent card has multiple logical devices.
#define ISAPNP_MAX_ALTERNATIVES
Maximum number of Start DF tags supported by the driver.
FORCEINLINE BOOLEAN HasDmaAlternatives(_In_ PISAPNP_ALTERNATIVES Alternatives)
#define ISAPNP_MAX_RESOURCEDATA
Maximum size of resource data structure supported by the driver.
#define ISAPNP_PRESENT
Cleared when the device is physically removed.
FORCEINLINE BOOLEAN HasMemory32Alternatives(_In_ PISAPNP_ALTERNATIVES Alternatives)
FORCEINLINE BOOLEAN HasMemoryAlternatives(_In_ PISAPNP_ALTERNATIVES Alternatives)
#define ISAPNP_HAS_RESOURCES
Cleared when the device has no boot resources.
FORCEINLINE BOOLEAN HasIoAlternatives(_In_ PISAPNP_ALTERNATIVES Alternatives)
FORCEINLINE BOOLEAN HasIrqAlternatives(_In_ PISAPNP_ALTERNATIVES Alternatives)
#define ISAPNP_MEMBASE32(n)
#define ISAPNP_TAG_FIXEDIO
#define RANGE_LENGTH_TO_LENGTH(RangeLength)
#define ISAPNP_TAG_ANSISTR
#define ISAPNP_IORANGECHECK
#define ISAPNP_MEMCONTROL32(n)
#define ISAPNP_TAG_STARTDEP
#define IRQTYPE_LOW_LEVEL
#define ISAPNP_MEMLIMIT(n)
#define ISAPNP_LOGICALDEVICENUMBER
#define MEMORY_USE_32_BIT_DECODER
#define ISAPNP_MEMLIMIT32(n)
#define ISAPNP_SERIALISOLATION
#define ISAPNP_DMACHANNEL(n)
#define ISAPNP_TAG_MEMRANGE
#define ISAPNP_TAG_MEM32RANGE
#define MEMORY_USE_8_BIT_DECODER
#define ISAPNP_MEMBASE(n)
#define ISAPNP_RESOURCEDATA
#define ISAPNP_SMALL_TAG_NAME(t)
#define MEMORY_USE_16_BIT_DECODER
#define ISAPNP_TAG_COMPATDEVID
#define MEMORY_UPPER_LIMIT
#define ISAPNP_MEMCONTROL(n)
#define ISAPNP_SMALL_TAG_LEN(t)
#define ISAPNP_TAG_ENDDEP
#define ISAPNP_IRQTYPE(n)
#define IRQTYPE_HIGH_EDGE
#define ISAPNP_LARGE_TAG_NAME(t)
#define LENGTH_TO_RANGE_LENGTH(Length)
#define ISAPNP_CARDSELECTNUMBER
#define ISAPNP_IS_SMALL_TAG(t)
#define ISAPNP_TAG_LOGDEVID
#define ISAPNP_WRITE_DATA
#define MEMRANGE_16_BIT_MEMORY_MASK
#define ISAPNP_CONFIG_WAIT_FOR_KEY
#define ISAPNP_CONFIGCONTROL
#define ISAPNP_TAG_FIXEDMEM32RANGE
#define ISAPNP_CONFIG_RESET_CSN
#define MEMRANGE_32_BIT_MEMORY_ONLY
#define ISAPNP_TAG_IOPORT
#define ExFreePoolWithTag(_P, _T)
#define _In_reads_bytes_(size)
#define _Out_writes_bytes_all_(size)
#define _Out_writes_all_(size)
#define _Out_writes_(size)
#define _Out_writes_bytes_all_opt_(size)
#define CM_RESOURCE_INTERRUPT_LATCHED
#define RTL_BITS_OF(sizeOfArg)
_In_ ULONG _In_ ULONG _In_ ULONG Length
#define STATUS_INVALID_PARAMETER_4
#define STATUS_INVALID_PARAMETER_2
#define STATUS_RESOURCE_DATA_NOT_FOUND
#define STATUS_INVALID_PARAMETER_1
#define STATUS_INVALID_PARAMETER_3
#define READ_PORT_UCHAR(p)
#define WRITE_PORT_UCHAR(p, d)
#define STATUS_BUFFER_OVERFLOW
base of all file and directory entries
LIST_ENTRY CompatibleIdList
ISAPNP_MEMRANGE MemRange[4]
COMMON_DEVICE_EXTENSION Common
#define FIELD_OFFSET(t, f)
#define RtlZeroMemory(Destination, Length)
#define CONTAINING_RECORD(address, type, field)
#define STATUS_INVALID_PARAMETER
#define STATUS_INSUFFICIENT_RESOURCES
PUSBHUB_PORT_PDO_EXTENSION NTAPI PdoExt(IN PDEVICE_OBJECT DeviceObject)
_In_ WDFCOLLECTION _In_ ULONG Index
_Must_inspect_result_ _In_ WDFDEVICE _In_ BOOLEAN _In_opt_ PVOID Tag
_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_ WDFIORESLIST _In_ PIO_RESOURCE_DESCRIPTOR Descriptor
#define RtlUshortByteSwap(_x)