103 if (!FirstDescriptor)
133 if (!FirstDescriptor)
276 for (
i = 0;
i < Alternatives->Count;
i++)
278 TempBuffer = Alternatives->
Irq[
i].
Mask;
285 AltOptionalCount += BitCount - 1;
290 for (
i = 0;
i < Alternatives->Count;
i++)
292 TempBuffer = Alternatives->
Dma[
i].
Mask;
299 AltOptionalCount += BitCount - 1;
324 RequirementsList->AlternativeLists = Alternatives ? Alternatives->Count : 1;
344 FirstDescriptor =
TRUE;
357 FirstDescriptor =
FALSE;
365 FirstDescriptor =
TRUE;
378 FirstDescriptor =
FALSE;
439 for (
j = 0;
j < AltList->
Count - AltCount;
j++)
455 &Alternatives->
Io[BestConfig[
i]]);
459 FirstDescriptor =
TRUE;
463 if (!(Alternatives->
Irq[BestConfig[
i]].
Mask & (1 <<
j)))
467 &Alternatives->
Irq[BestConfig[
i]],
472 FirstDescriptor =
FALSE;
479 FirstDescriptor =
TRUE;
483 if (!(Alternatives->
Dma[BestConfig[
i]].
Mask & (1 <<
j)))
487 &Alternatives->
Dma[BestConfig[
i]],
492 FirstDescriptor =
FALSE;
548 *WriteOrder = LogDevice->Io[
i].Index;
554 if (!LogDevice->Alternatives)
557 for (
i = 0;
i < LogDevice->Alternatives->Count;
i++)
572 *WriteOrder = LogDevice->Alternatives->IoIndex;
604 *WriteOrder = LogDevice->Irq[
i].Index;
612 if (!LogDevice->Alternatives)
615 for (
i = 0;
i < LogDevice->Alternatives->Count;
i++)
626 *WriteOrder = LogDevice->Alternatives->IrqIndex;
660 *WriteOrder = LogDevice->Dma[
i].Index;
668 if (!LogDevice->Alternatives)
671 for (
i = 0;
i < LogDevice->Alternatives->Count;
i++)
682 *WriteOrder = LogDevice->Alternatives->DmaIndex;
721 *WriteOrder = LogDevice->MemRange[
i].Index;
728 Description32 = &LogDevice->MemRange32[
i].Description;
730 if ((RangeStart >= Description32->
Minimum) &&
731 (RangeEnd <= (Description32->
Maximum + Description32->
Length - 1)))
738 *WriteOrder = LogDevice->MemRange32[
i].Index;
744 if (!LogDevice->Alternatives)
747 for (
i = 0;
i < LogDevice->Alternatives->Count;
i++)
759 *WriteOrder = LogDevice->Alternatives->MemRangeIndex;
764 for (
i = 0;
i < LogDevice->Alternatives->Count;
i++)
766 Description32 = &LogDevice->Alternatives->MemRange32[
i];
768 if ((RangeStart >= Description32->
Minimum) &&
769 (RangeEnd <= (Description32->
Maximum + Description32->
Length - 1)))
776 *WriteOrder = LogDevice->Alternatives->MemRange32Index;
872 goto InvalidBiosResources;
892 goto InvalidBiosResources;
903 Descriptor->u.Interrupt.Affinity = 0xFFFFFFFF;
911 goto InvalidBiosResources;
931 goto InvalidBiosResources;
957 goto InvalidBiosResources;
973 PdoExt->ResourceListSize = ListSize;
976 InvalidBiosResources:
977 DPRINT(
"Invalid boot resources! (CSN %u, LDN %u)\n", LogDev->
CSN, LogDev->
LDN);
986 static CODE_SEG(
"PAGE") DRIVER_DISPATCH_PAGED IsaCreateClose;
1009 static CODE_SEG(
"PAGE") DRIVER_DISPATCH_PAGED IsaForwardOrIgnore;
1050 const ULONG ReadPorts[] = { 0x274, 0x3E4, 0x204, 0x2E4, 0x354, 0x2F4 };
1054 if (SelectedReadPort)
1129 if (SelectedReadPort)
1137 if (ReadPorts[
i] != SelectedReadPort)
1146 Descriptor->u.Port.MinimumAddress.LowPart = ReadPorts[
i];
1147 Descriptor->u.Port.MaximumAddress.LowPart = ReadPorts[
i] +
1167 Descriptor->u.Port.MinimumAddress.LowPart = ReadPorts[
i / 2];
1168 Descriptor->u.Port.MaximumAddress.LowPart = ReadPorts[
i / 2] +
1211 ResourceList->List[0].PartialResourceList.Revision = 1;
1227 PdoExt->ResourceListSize = ListSize;
1243 DPRINT(
"Creating Read Port\n");
1251 &FdoExt->ReadPortPdo);
1255 PdoExt = FdoExt->ReadPortPdo->DeviceExtension;
1277 FdoExt->ReadPortPdo =
NULL;
1291 DPRINT(
"Removing Read Port\n");
1317 IsaPnpAcquireBusDataLock();
1320 if (!ReadPortCreated)
1326 ReadPortCreated =
TRUE;
1329 IsaPnpReleaseBusDataLock();
1332 if (!FdoExt->ReadPortPdo)
1333 IncludeDataPort =
FALSE;
1335 IsaPnpAcquireDeviceDataLock(FdoExt);
1338 if (IncludeDataPort && FdoExt->ReadPortPdo)
1345 DPRINT(
"Rescan ISA PnP bus\n");
1351 if (FdoExt->Cards > 0)
1352 (
VOID)IsaHwFillDeviceList(FdoExt);
1360 PdoCount = FdoExt->DeviceCount;
1361 if (IncludeDataPort)
1364 CurrentEntry = FdoExt->DeviceListHead.
Flink;
1365 while (CurrentEntry != &FdoExt->DeviceListHead)
1372 CurrentEntry = CurrentEntry->
Flink;
1378 if (!DeviceRelations)
1380 IsaPnpReleaseDeviceDataLock(FdoExt);
1384 if (IncludeDataPort)
1388 DeviceRelations->
Objects[
i++] = FdoExt->ReadPortPdo;
1395 CurrentEntry = FdoExt->DeviceListHead.
Flink;
1396 while (CurrentEntry != &FdoExt->DeviceListHead)
1405 if (!IsaDevice->
Pdo)
1426 PdoExt->IsaPnpDevice = IsaDevice;
1432 if (
PdoExt->RequirementsList)
1438 if (
PdoExt->ResourceList)
1458 CurrentEntry = CurrentEntry->
Flink;
1470 CurrentEntry = CurrentEntry->
Flink;
1473 IsaPnpReleaseDeviceDataLock(FdoExt);
1475 DeviceRelations->
Count =
i;
1477 Irp->IoStatus.Information = (
ULONG_PTR)DeviceRelations;
1482 static CODE_SEG(
"PAGE") DRIVER_ADD_DEVICE IsaAddDevice;
1514 FdoExt =
Fdo->DeviceExtension;
1534 IsaPnpAcquireBusDataLock();
1536 IsaPnpReleaseBusDataLock();
1582 static CODE_SEG(
"PAGE") DRIVER_DISPATCH_PAGED IsaPnp;
1618 DriverObject->DriverExtension->AddDevice = IsaAddDevice;
static NTSTATUS IsaPnpCreateLogicalDeviceResources(_In_ PISAPNP_PDO_EXTENSION PdoExt)
#define DO_DEVICE_INITIALIZING
struct _IO_RESOURCE_REQUIREMENTS_LIST IO_RESOURCE_REQUIREMENTS_LIST
_Guarded_by_(BusSyncEvent)
#define ISAPNP_SCANNED_BY_READ_PORT
The bus has been scanned by Read Port PDO.
struct _IO_RESOURCE_LIST * PIO_RESOURCE_LIST
#define ISAPNP_HAS_RESOURCES
Cleared when the device has no boot resources.
static VOID IsaConvertIrqRequirement(_Out_ PIO_RESOURCE_DESCRIPTOR Descriptor, _In_ PISAPNP_IRQ_DESCRIPTION Description, _In_ ULONG Vector, _In_ BOOLEAN FirstDescriptor)
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)
#define STATUS_DEVICE_REMOVED
_In_ ULONG _In_ ULONG _In_ ULONG Length
#define ISAPNP_ENUMERATED
Whether the device has been reported to the PnP manager.
_Must_inspect_result_ _In_ WDFIORESLIST _In_ PIO_RESOURCE_DESCRIPTOR Descriptor
static NTSTATUS IsaPnpCreateReadPortDOResources(_In_ PISAPNP_PDO_EXTENSION PdoExt)
FORCEINLINE BOOLEAN HasIoAlternatives(_In_ PISAPNP_ALTERNATIVES Alternatives)
#define ISAPNP_PRESENT
Cleared when the device is physically removed.
NTSTATUS IsaPnpFillDeviceRelations(_In_ PISAPNP_FDO_EXTENSION FdoExt, _Inout_ PIRP Irp, _In_ BOOLEAN IncludeDataPort)
#define IRP_MN_QUERY_POWER
ISAPNP_IO_DESCRIPTION Description
#define UNREFERENCED_PARAMETER(P)
BOOLEAN FindIrqDescriptor(_In_ PISAPNP_LOGICAL_DEVICE LogDevice, _In_ ULONG Vector, _Out_opt_ PUCHAR WriteOrder)
PDEVICE_OBJECT Objects[1]
struct _IO_RESOURCE_LIST IO_RESOURCE_LIST
_In_ CLIPOBJ _In_ BRUSHOBJ _In_ LONG x1
NTSYSAPI void WINAPI RtlInitializeBitMap(PRTL_BITMAP, PULONG, ULONG)
_Must_inspect_result_ _In_ PDRIVER_OBJECT _In_ PCUNICODE_STRING RegistryPath
PUSBHUB_PORT_PDO_EXTENSION NTAPI PdoExt(IN PDEVICE_OBJECT DeviceObject)
VOID IsaPnpRemoveReadPortDO(_In_ PDEVICE_OBJECT Pdo)
static const WCHAR Description[]
PDEVICE_OBJECT PhysicalDeviceObject
#define InsertTailList(ListHead, Entry)
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)
_In_ WDFREQUEST _In_ NTSTATUS _In_ ULONG_PTR Information
ISAPNP_MEMRANGE32 MemRange32[4]
_Must_inspect_result_ _In_ WDFIORESREQLIST _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFIORESLIST * ResourceList
struct _CM_PARTIAL_RESOURCE_DESCRIPTOR CM_PARTIAL_RESOURCE_DESCRIPTOR
#define CM_RESOURCE_MEMORY_READ_WRITE
#define CmResourceTypePort
#define RtlMoveMemory(Destination, Source, Length)
FORCEINLINE BOOLEAN HasDmaAlternatives(_In_ PISAPNP_ALTERNATIVES Alternatives)
PCM_RESOURCE_LIST ResourceList
_In_ PDEVICE_OBJECT DeviceObject
ISAPNP_DMA_DESCRIPTION Description
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
#define FILE_DEVICE_CONTROLLER
#define CM_RESOURCE_MEMORY_24
WDF_EXTERN_C_START typedef _Must_inspect_result_ _In_ WDFDRIVER _In_opt_ PWDF_OBJECT_ATTRIBUTES _In_ PDEVICE_OBJECT _In_opt_ PDEVICE_OBJECT _In_opt_ PDEVICE_OBJECT Pdo
PDEVICE_OBJECT NTAPI IoAttachDeviceToDeviceStack(IN PDEVICE_OBJECT SourceDevice, IN PDEVICE_OBJECT TargetDevice)
void __cdecl qsort(_Inout_updates_bytes_(_NumOfElements *_SizeOfElements) void *_Base, _In_ size_t _NumOfElements, _In_ size_t _SizeOfElements, _In_ int(__cdecl *_PtFuncCompare)(const void *, const void *))
_In_ UCHAR _In_ UCHAR MinorFunction
COMMON_DEVICE_EXTENSION Common
static VOID IsaDetermineBestConfig(_Out_writes_all_(ISAPNP_MAX_ALTERNATIVES) PUCHAR BestConfig, _In_ PISAPNP_ALTERNATIVES Alternatives)
NTSYSAPI ULONG WINAPI RtlNumberOfSetBits(PCRTL_BITMAP)
#define CM_RESOURCE_MEMORY_READ_ONLY
ISAPNP_MEMRANGE_DESCRIPTION MemRange[ISAPNP_MAX_ALTERNATIVES]
PISAPNP_ALTERNATIVES Alternatives
_Dispatch_type_(IRP_MJ_CREATE)
#define CM_RESOURCE_PORT_16_BIT_DECODE
#define IoCompleteRequest
ISAPNP_DEVICE_STATE State
ISAPNP_IRQ_DESCRIPTION Irq[ISAPNP_MAX_ALTERNATIVES]
ISAPNP_DMA_DESCRIPTION Dma[ISAPNP_MAX_ALTERNATIVES]
#define CM_RESOURCE_PORT_10_BIT_DECODE
#define FILE_AUTOGENERATED_DEVICE_NAME
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
#define ISAPNP_READ_PORT_ALLOW_FDO_SCAN
Allows the active FDO to scan the bus.
_In_opt_ PUNICODE_STRING _In_ PDRIVER_OBJECT _In_ PDEVICE_OBJECT _In_ INTERFACE_TYPE _In_ ULONG BusNumber
_Must_inspect_result_ _In_ PDRIVER_OBJECT DriverObject
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
struct _IO_RESOURCE_DESCRIPTOR IO_RESOURCE_DESCRIPTOR
#define DBG_UNREFERENCED_LOCAL_VARIABLE(L)
IO_RESOURCE_DESCRIPTOR Descriptors[1]
struct _LIST_ENTRY * Flink
#define NT_SUCCESS(StatCode)
NTSTATUS IsaPnpCreateReadPortDORequirements(_In_ PISAPNP_PDO_EXTENSION PdoExt, _In_opt_ ULONG SelectedReadPort)
ISAPNP_COMMON_EXTENSION Common
NTSTATUS NTAPI DriverEntry(_In_ PDRIVER_OBJECT DriverObject, _In_ PUNICODE_STRING RegistryPath)
#define IO_RESOURCE_ALTERNATIVE
static PS2_PORT Ports[PS2_PORTS]
static VOID IsaConvertMemRangeRequirement(_Out_ PIO_RESOURCE_DESCRIPTOR Descriptor, _In_ PISAPNP_MEMRANGE_DESCRIPTION Description)
#define ExAllocatePoolWithTag(hernya, size, tag)
_Must_inspect_result_ _In_ WDFDEVICE Fdo
ISAPNP_MEMRANGE32_DESCRIPTION MemRange32[ISAPNP_MAX_ALTERNATIVES]
BOOLEAN FindDmaDescriptor(_In_ PISAPNP_LOGICAL_DEVICE LogDevice, _In_ ULONG Channel, _Out_opt_ PUCHAR WriteOrder)
static ULONG ResourceCount
_In_ WDFINTERRUPT _In_ WDF_INTERRUPT_POLICY _In_ WDF_INTERRUPT_PRIORITY Priority
#define CM_RESOURCE_DMA_8
ISAPNP_IRQ_DESCRIPTION Description
ISAPNP_MEMRANGE_DESCRIPTION Description
#define _No_competing_thread_end_
static VOID IsaConvertMemRange32Requirement(_Out_ PIO_RESOURCE_DESCRIPTOR Descriptor, _In_ PISAPNP_MEMRANGE32_DESCRIPTION Description)
#define IRP_MJ_SYSTEM_CONTROL
struct _CM_RESOURCE_LIST CM_RESOURCE_LIST
static NTSTATUS IsaPnpCreateLogicalDeviceRequirements(_In_ PISAPNP_PDO_EXTENSION PdoExt)
ISAPNP_MEMRANGE32_DESCRIPTION Description
__drv_aliasesMem FORCEINLINE PIO_STACK_LOCATION IoGetCurrentIrpStackLocation(_In_ PIRP Irp)
VOID NTAPI IoDeleteDevice(IN PDEVICE_OBJECT DeviceObject)
PIO_RESOURCE_REQUIREMENTS_LIST RequirementsList
#define KeInitializeEvent(pEvt, foo, foo2)
VOID NTAPI PoStartNextPowerIrp(IN PIRP Irp)
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
PDRIVER_OBJECT DriverObject
#define CM_RESOURCE_PORT_IO
#define ISAPNP_MAX_ALTERNATIVES
Maximum number of Start DF tags supported by the driver.
_In_ PKSERVICE_ROUTINE _In_opt_ PVOID _In_opt_ PKSPIN_LOCK _In_ ULONG Vector
static NTSTATUS IsaPnpCreateReadPortDO(_In_ PISAPNP_FDO_EXTENSION FdoExt)
#define InitializeListHead(ListHead)
_In_ PIO_STACK_LOCATION IrpSp
#define FIELD_OFFSET(t, f)
static VOID IsaConvertIoRequirement(_Out_ PIO_RESOURCE_DESCRIPTOR Descriptor, _In_ PISAPNP_IO_DESCRIPTION Description)
NTSTATUS NTAPI IoCallDriver(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
#define CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE
#define IoSkipCurrentIrpStackLocation(Irp)
#define CmResourceTypeInterrupt
NTSTATUS IsaFdoPnp(_In_ PISAPNP_FDO_EXTENSION FdoExt, _Inout_ PIRP Irp, _In_ PIO_STACK_LOCATION IrpSp)
_In_ WDFIORESREQLIST RequirementsList
ISAPNP_MEMRANGE MemRange[4]
ISAPNP_SIGNATURE Signature
#define ObReferenceObject
#define CM_RESOURCE_INTERRUPT_LATCHED
#define _Out_writes_all_(size)
NTSTATUS NTAPI IoCreateDevice(IN PDRIVER_OBJECT DriverObject, IN ULONG DeviceExtensionSize, IN PUNICODE_STRING DeviceName, IN DEVICE_TYPE DeviceType, IN ULONG DeviceCharacteristics, IN BOOLEAN Exclusive, OUT PDEVICE_OBJECT *DeviceObject)
#define RtlZeroMemory(Destination, Length)
static VOID IsaConvertDmaRequirement(_Out_ PIO_RESOURCE_DESCRIPTOR Descriptor, _In_ PISAPNP_DMA_DESCRIPTION Description, _In_ ULONG Channel, _In_ BOOLEAN FirstDescriptor)
#define _No_competing_thread_begin_
UCHAR IsaHwTryReadDataPort(_In_ PUCHAR ReadDataPort)
#define FILE_DEVICE_SECURE_OPEN
FORCEINLINE BOOLEAN HasMemory32Alternatives(_In_ PISAPNP_ALTERNATIVES Alternatives)
#define CmResourceTypeMemory
DRIVER_DISPATCH DRIVER_DISPATCH_RAISED
#define ISAPNP_WRITE_DATA
#define FILE_DEVICE_BUS_EXTENDER
#define RTL_BITS_OF(sizeOfArg)
#define ExFreePoolWithTag(_P, _T)
NTSTATUS IsaPdoPnp(_In_ PISAPNP_PDO_EXTENSION PdoDeviceExtension, _Inout_ PIRP Irp, _In_ PIO_STACK_LOCATION IrpSp)
#define CmResourceTypeDma
#define IRP_MJ_DEVICE_CONTROL
unsigned int(__cdecl typeof(jpeg_read_scanlines))(struct jpeg_decompress_struct *
FORCEINLINE BOOLEAN HasIrqAlternatives(_In_ PISAPNP_ALTERNATIVES Alternatives)
FORCEINLINE BOOLEAN HasMemoryAlternatives(_In_ PISAPNP_ALTERNATIVES Alternatives)
ISAPNP_IO_DESCRIPTION Io[ISAPNP_MAX_ALTERNATIVES]