24 #define TAG_ISAPNP 'pasI' 27 #define ISAPNP_MAX_RESOURCEDATA 0x1000 30 #define ISAPNP_MAX_ALTERNATIVES 8 134 #define ISAPNP_PRESENT 0x00000001 135 #define ISAPNP_HAS_MULTIPLE_LOGDEVS 0x00000002 136 #define ISAPNP_HAS_RESOURCES 0x00000004 138 LIST_ENTRY DeviceLink; 187 #define ISAPNP_ENUMERATED 0x00000001 188 #define ISAPNP_SCANNED_BY_READ_PORT 0x00000002 189 #define ISAPNP_READ_PORT_ALLOW_FDO_SCAN 0x00000004 190 #define ISAPNP_READ_PORT_NEED_REBALANCE 0x00000008 192 _Write_guarded_by_(_Global_interlock_) 193 volatile LONG SpecialFiles;
199 extern BOOLEAN ReadPortCreated;
208 IsaPnpAcquireBusDataLock(
VOID)
216 IsaPnpReleaseBusDataLock(
VOID)
225 IsaPnpAcquireDeviceDataLock(
234 IsaPnpReleaseDeviceDataLock(
245 return (Alternatives->Io[0].Length != 0);
253 return (Alternatives->Irq[0].Mask != 0);
261 return (Alternatives->Dma[0].Mask != 0);
269 return (Alternatives->MemRange[0].Length != 0);
277 return (Alternatives->MemRange32[0].Length != 0);
392 IsaHwDeactivateDevice(
403 IsaHwWaitForKey(
VOID);
struct _ISAPNP_FDO_EXTENSION ISAPNP_FDO_EXTENSION
_Field_range_(0, ISAPNP_MAX_ALTERNATIVES) UCHAR Count
_IRQL_requires_max_(DISPATCH_LEVEL) VOID IsaHwWakeDevice(_In_ PISAPNP_LOGICAL_DEVICE LogicalDevice)
NTSTATUS IsaPnpFillDeviceRelations(_In_ PISAPNP_FDO_EXTENSION FdoExt, _Inout_ PIRP Irp, _In_ BOOLEAN IncludeDataPort)
_Requires_lock_not_held_(BusSyncEvent) _Acquires_lock_(BusSyncEvent) FORCEINLINE VOID IsaPnpAcquireBusDataLock(VOID)
_In_ ULONG _In_ ULONG _In_ ULONG Length
FORCEINLINE BOOLEAN HasIoAlternatives(_In_ PISAPNP_ALTERNATIVES Alternatives)
static LIST_ENTRY DeviceListHead
ISAPNP_IO_DESCRIPTION Description
struct _ISAPNP_DMA ISAPNP_DMA
struct _ISAPNP_LOGICAL_DEVICE ISAPNP_LOGICAL_DEVICE
PUSBHUB_PORT_PDO_EXTENSION NTAPI PdoExt(IN PDEVICE_OBJECT DeviceObject)
VOID IsaPnpRemoveReadPortDO(_In_ PDEVICE_OBJECT Pdo)
_Guarded_by_(BusSyncEvent) extern BOOLEAN ReadPortCreated
struct _ISAPNP_ALTERNATIVES ISAPNP_ALTERNATIVES
PISAPNP_LOGICAL_DEVICE IsaPnpDevice
ISAPNP_COMMON_EXTENSION Common
LONG NTAPI KeSetEvent(IN PKEVENT Event, IN KPRIORITY Increment, IN BOOLEAN Wait)
NTSTATUS NTAPI KeWaitForSingleObject(IN PVOID Object, IN KWAIT_REASON WaitReason, IN KPROCESSOR_MODE WaitMode, IN BOOLEAN Alertable, IN PLARGE_INTEGER Timeout OPTIONAL)
_In_ WDFREQUEST _In_ NTSTATUS _In_ ULONG_PTR Information
ISAPNP_MEMRANGE32 MemRange32[4]
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)
FORCEINLINE BOOLEAN HasDmaAlternatives(_In_ PISAPNP_ALTERNATIVES Alternatives)
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)
NTSTATUS IsaFdoQueryInterface(_In_ PISAPNP_FDO_EXTENSION FdoExt, _In_ PIO_STACK_LOCATION IrpSp)
DRIVER_INITIALIZE DriverEntry
PCM_RESOURCE_LIST ResourceList
_In_ PISAPNP_LOGICAL_DEVICE LogicalDevice
ISAPNP_DMA_DESCRIPTION Description
struct _ISAPNP_COMPATIBLE_ID_ENTRY ISAPNP_COMPATIBLE_ID_ENTRY
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
UCHAR IsaHwTryReadDataPort(_In_ PUCHAR ReadDataPort)
ISAPNP_MEMRANGE_DESCRIPTION MemRange[ISAPNP_MAX_ALTERNATIVES]
PISAPNP_ALTERNATIVES Alternatives
ISAPNP_DEVICE_STATE State
_Requires_lock_held_(FdoExt->DeviceSyncEvent) NTSTATUS IsaHwFillDeviceList(_In_ PISAPNP_FDO_EXTENSION FdoExt)
ISAPNP_IRQ_DESCRIPTION Irq[ISAPNP_MAX_ALTERNATIVES]
ISAPNP_DMA_DESCRIPTION Dma[ISAPNP_MAX_ALTERNATIVES]
struct _ISAPNP_COMPATIBLE_ID_ENTRY * PISAPNP_COMPATIBLE_ID_ENTRY
struct _ISAPNP_MEMRANGE ISAPNP_MEMRANGE
struct _ISAPNP_FDO_EXTENSION * PISAPNP_FDO_EXTENSION
NTSTATUS IsaFdoPnp(_In_ PISAPNP_FDO_EXTENSION FdoExt, _Inout_ PIRP Irp, _In_ PIO_STACK_LOCATION IrpSp)
struct _ISAPNP_IRQ ISAPNP_IRQ
struct _ISAPNP_LOGICAL_DEVICE * PISAPNP_LOGICAL_DEVICE
ISAPNP_COMMON_EXTENSION Common
struct _ISAPNP_IO * PISAPNP_IO
struct _ISAPNP_PDO_EXTENSION ISAPNP_PDO_EXTENSION
BOOLEAN FindDmaDescriptor(_In_ PISAPNP_LOGICAL_DEVICE LogDevice, _In_ ULONG Channel, _Out_opt_ PUCHAR WriteOrder)
NTSTATUS IsaHwConfigureDevice(_In_ PISAPNP_FDO_EXTENSION FdoExt, _In_ PISAPNP_LOGICAL_DEVICE LogicalDevice, _In_ PCM_RESOURCE_LIST Resources)
ISAPNP_MEMRANGE32_DESCRIPTION MemRange32[ISAPNP_MAX_ALTERNATIVES]
_In_ WDFINTERRUPT _In_ WDF_INTERRUPT_POLICY _In_ WDF_INTERRUPT_PRIORITY Priority
_Guarded_by_(DeviceSyncEvent) LIST_ENTRY DeviceListHead
ISAPNP_IRQ_DESCRIPTION Description
struct _ISAPNP_MEMRANGE * PISAPNP_MEMRANGE
ISAPNP_MEMRANGE_DESCRIPTION Description
LIST_ENTRY CompatibleIdList
ISAPNP_MEMRANGE32_DESCRIPTION Description
PISAPNP_FDO_EXTENSION FdoExt
VOID IsaPnpRemoveLogicalDeviceDO(_In_ PDEVICE_OBJECT Pdo)
PDEVICE_OBJECT ReadPortPdo
struct _ISAPNP_IO ISAPNP_IO
PIO_RESOURCE_REQUIREMENTS_LIST RequirementsList
struct _ISAPNP_IRQ * PISAPNP_IRQ
PDRIVER_OBJECT DriverObject
#define ISAPNP_MAX_ALTERNATIVES
Maximum number of Start DF tags supported by the driver.
_In_ PIO_STACK_LOCATION IrpSp
NTSTATUS IsaPnpCreateReadPortDORequirements(_In_ PISAPNP_PDO_EXTENSION PdoExt, _In_opt_ ULONG SelectedReadPort)
ISAPNP_MEMRANGE MemRange[4]
struct _ISAPNP_COMMON_EXTENSION ISAPNP_COMMON_EXTENSION
ISAPNP_SIGNATURE Signature
struct _ISAPNP_DMA * PISAPNP_DMA
enum _ISAPNP_SIGNATURE ISAPNP_SIGNATURE
_Releases_lock_(BusSyncEvent) FORCEINLINE VOID IsaPnpReleaseBusDataLock(VOID)
struct _ISAPNP_MEMRANGE32 ISAPNP_MEMRANGE32
struct _ISAPNP_MEMRANGE32 * PISAPNP_MEMRANGE32
struct _ISAPNP_ALTERNATIVES * PISAPNP_ALTERNATIVES
struct _ISAPNP_COMMON_EXTENSION * PISAPNP_COMMON_EXTENSION
FORCEINLINE BOOLEAN HasMemory32Alternatives(_In_ PISAPNP_ALTERNATIVES Alternatives)
#define _Acquires_lock_(lock)
NTSTATUS IsaPdoPnp(_In_ PISAPNP_PDO_EXTENSION PdoDeviceExtension, _Inout_ PIRP Irp, _In_ PIO_STACK_LOCATION IrpSp)
struct _ISAPNP_PDO_EXTENSION * PISAPNP_PDO_EXTENSION
FORCEINLINE BOOLEAN HasIrqAlternatives(_In_ PISAPNP_ALTERNATIVES Alternatives)
FORCEINLINE BOOLEAN HasMemoryAlternatives(_In_ PISAPNP_ALTERNATIVES Alternatives)
BOOLEAN FindIrqDescriptor(_In_ PISAPNP_LOGICAL_DEVICE LogDevice, _In_ ULONG Vector, _Out_opt_ PUCHAR WriteOrder)
ISAPNP_IO_DESCRIPTION Io[ISAPNP_MAX_ALTERNATIVES]