68 DPRINT(
"HAL: PnP Driver ADD!\n");
118 DPRINT1(
"HAL: Could not create ACPI device object status=0x%08x\n",
Status);
186#if !defined(SARCH_XBOX) && !defined(SARCH_PC98)
205 *
Length =
sizeof(*BusInterface);
206 if (InterfaceBufferSize <
sizeof(*BusInterface))
210 BusInterface->
Size =
sizeof(*BusInterface);
221 *
Length =
sizeof(*PciBusInterface);
222 if (InterfaceBufferSize <
sizeof(*PciBusInterface))
226 PciBusInterface->
Size =
sizeof(*PciBusInterface);
236 DPRINT1(
"HalpQueryInterface({%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X}) is UNIMPLEMENTED\n",
258 ULONG i = 0, PdoCount = 0;
280 if (*DeviceRelations)
282 PdoCount += (*DeviceRelations)->Count;
294 FdoRelations->
Count = PdoCount;
297 ObjectEntry = FdoRelations->
Objects;
298 if (*DeviceRelations)
301 if ((*DeviceRelations)->Count)
307 *ObjectEntry++ = (*DeviceRelations)->Objects[
i];
309 while (++
i < (*DeviceRelations)->Count);
334 *DeviceRelations = FdoRelations;
351 PdoRelations->
Count = 1;
356 *DeviceRelations = PdoRelations;
483 PartialDesc->ShareDisposition =
Descriptor->ShareDisposition;
487 PartialDesc->u.Interrupt.Vector =
Descriptor->u.Interrupt.MinimumVector;
488 PartialDesc->u.Interrupt.Level =
Descriptor->u.Interrupt.MinimumVector;
489 PartialDesc->u.Interrupt.Affinity = 0xFFFFFFFF;
573 CurrentId =
L"PCI_HAL\\PNP0A03";
577 CurrentId =
L"*PNP0A03";
585 CurrentId =
L"ACPI_HAL\\PNP0C18";
589 CurrentId =
L"*PNP0C18";
629 DPRINT(
"Returning: %S\n", *BusQueryId);
691 DPRINT(
"Returning: %S\n", *BusQueryId);
728 DPRINT(
"Querying device relations for FDO\n");
737 DPRINT(
"Querying interface for FDO\n");
750 DPRINT(
"Querying ID for FDO\n");
759 DPRINT(
"Querying the capabilities for the FDO\n");
804 DPRINT(
"Start device received\n");
811 DPRINT(
"Remove device received\n");
820 DPRINT(
"Surprise removal IRP\n");
827 DPRINT(
"Querying PDO relations\n");
836 DPRINT(
"Querying interface for PDO\n");
849 DPRINT(
"Querying the capabilities for the PDO\n");
857 DPRINT(
"Querying the resources for the PDO\n");
864 DPRINT(
"Querying the resource requirements for the PDO\n");
872 DPRINT(
"Query the ID for the PDO\n");
881 DPRINT(
"Query text for the PDO\n");
888 DPRINT(
"Filter resource requirements for the PDO\n");
895 DPRINT(
"Query device state for the PDO\n");
902 DPRINT(
"Query bus information for the PDO\n");
941 DPRINT1(
"HAL: PnP Driver Power!\n");
966 DPRINT(
"HAL: PnP Driver ENTRY!\n");
static PIO_STACK_LOCATION IoGetCurrentIrpStackLocation(PIRP Irp)
NTSTATUS NTAPI HalpQueryResources(IN PDEVICE_OBJECT DeviceObject, OUT PCM_RESOURCE_LIST *Resources)
struct _FDO_EXTENSION * PFDO_EXTENSION
NTSTATUS NTAPI HalpQueryResourceRequirements(IN PDEVICE_OBJECT DeviceObject, OUT PIO_RESOURCE_REQUIREMENTS_LIST *Requirements)
NTSTATUS NTAPI HalpQueryInterface(IN PDEVICE_OBJECT DeviceObject, IN CONST GUID *InterfaceType, IN USHORT Version, IN PVOID InterfaceSpecificData, IN ULONG InterfaceBufferSize, IN PINTERFACE Interface, OUT PULONG Length)
NTSTATUS NTAPI HalpQueryIdPdo(IN PDEVICE_OBJECT DeviceObject, IN BUS_QUERY_ID_TYPE IdType, OUT PUSHORT *BusQueryId)
NTSTATUS NTAPI HalpDispatchPower(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
NTSTATUS NTAPI HalpDriverEntry(IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath)
NTSTATUS NTAPI HalpDispatchWmi(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
NTSTATUS NTAPI HalpQueryIdFdo(IN PDEVICE_OBJECT DeviceObject, IN BUS_QUERY_ID_TYPE IdType, OUT PUSHORT *BusQueryId)
NTSTATUS NTAPI HalpQueryCapabilities(IN PDEVICE_OBJECT DeviceObject, OUT PDEVICE_CAPABILITIES Capabilities)
enum _EXTENSION_TYPE EXTENSION_TYPE
NTSTATUS NTAPI HalpAddDevice(IN PDRIVER_OBJECT DriverObject, IN PDEVICE_OBJECT TargetDevice)
struct _PDO_EXTENSION PDO_EXTENSION
NTSTATUS NTAPI HaliInitPnpDriver(VOID)
struct _FDO_EXTENSION FDO_EXTENSION
NTSTATUS NTAPI HalpQueryDeviceRelations(IN PDEVICE_OBJECT DeviceObject, IN DEVICE_RELATION_TYPE RelationType, OUT PDEVICE_RELATIONS *DeviceRelations)
PDRIVER_OBJECT HalpDriverObject
struct _PDO_EXTENSION * PPDO_EXTENSION
NTSTATUS NTAPI HalpDispatchPnp(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
#define InterlockedIncrement
#define InterlockedDecrement
ULONG NTAPI HaliPciInterfaceReadConfig(_In_ PBUS_HANDLER RootBusHandler, _In_ ULONG BusNumber, _In_ PCI_SLOT_NUMBER SlotNumber, _Out_writes_bytes_(Length) PVOID Buffer, _In_ ULONG Offset, _In_ ULONG Length)
ULONG NTAPI HaliPciInterfaceWriteConfig(_In_ PBUS_HANDLER RootBusHandler, _In_ ULONG BusNumber, _In_ PCI_SLOT_NUMBER SlotNumber, _In_reads_bytes_(Length) PVOID Buffer, _In_ ULONG Offset, _In_ ULONG Length)
_In_ BUS_QUERY_ID_TYPE IdType
#define STATUS_NOT_SUPPORTED
_Check_return_ _In_ ULONG _Inout_ PDXGK_DEVICE_DESCRIPTOR DeviceDescriptor
#define NT_SUCCESS(StatCode)
_ACRTIMP size_t __cdecl wcslen(const wchar_t *)
#define UNIMPLEMENTED_DBGBREAK(...)
#define ExAllocatePoolWithTag(hernya, size, tag)
struct _DEVICE_OBJECT * PDEVICE_OBJECT
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
PDMA_ADAPTER NTAPI HalpGetDmaAdapter(IN PVOID Context, IN PDEVICE_DESCRIPTION DeviceDescription, OUT PULONG NumberOfMapRegisters)
PWCHAR HalHardwareIdString
NTSTATUS NTAPI HalpQueryAcpiResourceRequirements(OUT PIO_RESOURCE_REQUIREMENTS_LIST *Requirements)
_Must_inspect_result_ typedef _Out_ PHIDP_CAPS Capabilities
_Outptr_ PUSB_DEVICE_HANDLE _In_ PUSB_DEVICE_HANDLE _In_ USHORT _In_ PUSB_PORT_PATH _Out_ PUSB_CD_ERROR_INFORMATION _In_ USHORT _In_ PDEVICE_OBJECT PdoDeviceObject
static PDMA_ADAPTER NTAPI HalpBusInterfaceGetDmaAdapter(_Inout_opt_ PVOID Context, _In_ PDEVICE_DESCRIPTION DeviceDescriptor, _Out_ PULONG NumberOfMapRegisters)
static VOID NTAPI HalpBusInterfaceReference(PVOID Context)
static VOID NTAPI HalpBusInterfaceDereference(PVOID Context)
NTSTATUS NTAPI HalpLegacyPCQueryArbInterface(_Out_writes_bytes_(Size) PVOID Interface, _In_ ULONG Size, _Out_ PULONG Length)
Query the legacy PC Arbiter.
NTSTATUS NTAPI HalpLegacyPCCreateArbiter(_In_ PDEVICE_OBJECT BusFdo)
Initialize the legacy PC arbiter that uses PIR for PIC IRQ assignments.
#define FILE_AUTOGENERATED_DEVICE_NAME
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
_In_ ULONG _In_ ULONG _In_ ULONG Length
#define IRP_MN_SURPRISE_REMOVAL
#define IoSkipCurrentIrpStackLocation(Irp)
PDEVICE_OBJECT NTAPI IoAttachDeviceToDeviceStack(IN PDEVICE_OBJECT SourceDevice, IN PDEVICE_OBJECT TargetDevice)
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)
VOID NTAPI IoDeleteDevice(IN PDEVICE_OBJECT DeviceObject)
NTSTATUS NTAPI IoCreateDriver(_In_opt_ PUNICODE_STRING DriverName, _In_ PDRIVER_INITIALIZE InitializationFunction)
#define IoCompleteRequest
VOID NTAPI PoStartNextPowerIrp(IN PIRP Irp)
NTSTATUS NTAPI IoReportDetectedDevice(_In_ PDRIVER_OBJECT DriverObject, _In_ INTERFACE_TYPE LegacyBusType, _In_ ULONG BusNumber, _In_ ULONG SlotNumber, _In_opt_ PCM_RESOURCE_LIST ResourceList, _In_opt_ PIO_RESOURCE_REQUIREMENTS_LIST ResourceRequirements, _In_ BOOLEAN ResourceAssigned, _Inout_ PDEVICE_OBJECT *DeviceObject)
#define IsEqualIID(riid1, riid2)
#define FILE_DEVICE_BUS_EXTENDER
#define CmResourceTypeInterrupt
#define STATUS_BUFFER_TOO_SMALL
PINTERFACE_REFERENCE InterfaceReference
PINTERFACE_DEREFERENCE InterfaceDereference
PGET_DMA_ADAPTER GetDmaAdapter
PDEVICE_OBJECT Objects[1]
PDRIVER_ADD_DEVICE AddDevice
PDRIVER_EXTENSION DriverExtension
PDEVICE_OBJECT FunctionalDeviceObject
PDEVICE_OBJECT AttachedDeviceObject
EXTENSION_TYPE ExtensionType
struct _PDO_EXTENSION * ChildPdoList
PDEVICE_OBJECT PhysicalDeviceObject
union _IO_STACK_LOCATION::@1803 Parameters
struct _IO_STACK_LOCATION::@4925::@4950 QueryDeviceRelations
struct _IO_STACK_LOCATION::@4925::@4951 QueryInterface
struct _IO_STACK_LOCATION::@4925::@4952 DeviceCapabilities
struct _IO_STACK_LOCATION::@4925::@4956 QueryId
PINTERFACE_DEREFERENCE InterfaceDereference
PCI_READ_WRITE_CONFIG ReadConfig
PINTERFACE_REFERENCE InterfaceReference
PCI_READ_WRITE_CONFIG WriteConfig
PDEVICE_OBJECT PhysicalDeviceObject
PDESCRIPTION_HEADER WdTable
struct _PDO_EXTENSION * Next
PFDO_EXTENSION ParentFdoExtension
LONG InterfaceReferenceCount
EXTENSION_TYPE ExtensionType
#define FIELD_OFFSET(t, f)
#define RtlCopyMemory(Destination, Source, Length)
#define RtlZeroMemory(Destination, Length)
#define STATUS_NO_SUCH_DEVICE
#define STATUS_UNSUCCESSFUL
#define STATUS_INSUFFICIENT_RESOURCES
_In_ PIO_STACK_LOCATION IoStackLocation
_In_ PDEVICE_OBJECT DeviceObject
_In_ DEVICE_RELATION_TYPE RelationType
_Must_inspect_result_ _In_ PDRIVER_OBJECT _In_ PCUNICODE_STRING RegistryPath
_Must_inspect_result_ _In_ PDRIVER_OBJECT DriverObject
_Must_inspect_result_ _In_ WDFDEVICE _In_ LPCGUID _Out_ PINTERFACE Interface
_Must_inspect_result_ _In_ WDFDEVICE _In_ LPCGUID InterfaceType
_Must_inspect_result_ _In_ WDFDEVICE _In_ LPCGUID _Out_ PINTERFACE _In_ USHORT _In_ USHORT Version
_Must_inspect_result_ _In_ WDFDEVICE _In_ LPCGUID _Out_ PINTERFACE _In_ USHORT _In_ USHORT _In_opt_ PVOID InterfaceSpecificData
_Must_inspect_result_ _In_ WDFIORESREQLIST _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFIORESLIST * ResourceList
_In_ WDFIORESREQLIST RequirementsList
_Must_inspect_result_ _In_ WDFIORESLIST _In_ PIO_RESOURCE_DESCRIPTOR Descriptor
NTSYSAPI void WINAPI DbgBreakPoint(void)
_Out_ PULONG NumberOfMapRegisters
_Must_inspect_result_ __drv_aliasesMem PDEVICE_OBJECT _In_ PDEVICE_OBJECT TargetDevice
struct _PCI_BUS_INTERFACE_STANDARD * PPCI_BUS_INTERFACE_STANDARD
#define IRP_MN_QUERY_PNP_DEVICE_STATE
enum _BUS_QUERY_ID_TYPE BUS_QUERY_ID_TYPE
#define IRP_MN_QUERY_INTERFACE
ULONG(NTAPI * PCI_READ_WRITE_CONFIG)(_In_ PVOID Context, _In_ ULONG BusOffset, _In_ ULONG Slot, _In_reads_bytes_(Length) PVOID Buffer, _In_ ULONG Offset, _In_ ULONG Length)
#define IRP_MN_START_DEVICE
#define IRP_MN_QUERY_RESOURCE_REQUIREMENTS
#define IRP_MN_REMOVE_DEVICE
#define IRP_MN_FILTER_RESOURCE_REQUIREMENTS
#define IRP_MN_QUERY_DEVICE_RELATIONS
struct _BUS_INTERFACE_STANDARD * PBUS_INTERFACE_STANDARD
#define IRP_MJ_SYSTEM_CONTROL
#define IRP_MN_QUERY_DEVICE_TEXT
#define IRP_MN_QUERY_CAPABILITIES
#define IRP_MN_QUERY_RESOURCES
enum _DEVICE_RELATION_TYPE DEVICE_RELATION_TYPE
#define IRP_MN_QUERY_BUS_INFORMATION
#define ObReferenceObject