120 PciCfg1->u.AsULONG = 0;
121 PciCfg1->u.bits.BusNumber = BusHandler->BusNumber;
122 PciCfg1->u.bits.DeviceNumber = Slot.u.bits.DeviceNumber;
123 PciCfg1->u.bits.FunctionNumber = Slot.u.bits.FunctionNumber;
124 PciCfg1->u.bits.Enable =
TRUE;
168 PciCfg->u.AsUSHORT = 0;
169 PciCfg->u.bits.Agent = (
USHORT)Slot.u.bits.DeviceNumber;
179 PciCfg2Cse.
u.
bits.FunctionNumber = (
UCHAR)Slot.u.bits.FunctionNumber;
180 PciCfg2Cse.
u.
bits.Key = -1;
184 (
UCHAR)BusHandler->BusNumber);
311 if (Slot.u.bits.Reserved)
return FALSE;
315 if (!Slot.u.bits.FunctionNumber)
return TRUE;
318 Device = Slot.u.bits.DeviceNumber;
320 MultiSlot.
u.
bits.FunctionNumber = 0;
562 L"\\Registry\\Machine\\Hardware\\Description\\" 563 L"System\\MultiFunctionAdapter");
576 KeyName.MaximumLength =
sizeof(NameBuffer);
603 Status = ZwQueryValueKey(BusKeyHandle,
618 if ((
Tag[0] !=
L'P') ||
629 Status = ZwQueryValueKey(BusKeyHandle,
640 ((
ULONG_PTR)ValueInfo + ValueInfo->DataOffset);
643 PartialResourceList.PartialDescriptors);
660 if (!PciRegistryInfo)
return NULL;
685 if (!PciRegistryInfo)
736 DbgPrint(
"HAL: Unnkown PCI type\n");
740 for (
i = 0;
i < 256;
i++)
743 for (
j.u.AsULONG = 0;
j.u.AsULONG < 32;
j.u.AsULONG++)
PCIPBUSDATA HalpFakePciBusData
_In_ WDFIORESREQLIST _In_ ULONG SlotNumber
VOID NTAPI HalpPCISynchronizeType2(IN PBUS_HANDLER BusHandler, IN PCI_SLOT_NUMBER Slot, IN PKIRQL Irql, IN PPCI_TYPE2_ADDRESS_BITS PciCfg)
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES ObjectAttributes
#define CmResourceTypeDeviceSpecific
PCI_CONFIG_HANDLER PCIConfigHandlerType2
struct _CM_PARTIAL_RESOURCE_DESCRIPTOR * PCM_PARTIAL_RESOURCE_DESCRIPTOR
#define KeRaiseIrql(irql, oldIrql)
#define KeLowerIrql(oldIrql)
_In_ ULONG _In_ ULONG _In_ ULONG Length
#define PCI_TYPE2_FORWARD_PORT
BOOLEAN HalpPCIConfigInitialized
#define OBJ_CASE_INSENSITIVE
_Must_inspect_result_ _Out_ PNDIS_STATUS _In_ NDIS_HANDLE _In_ ULONG _Out_ PNDIS_STRING _Out_ PNDIS_HANDLE KeyHandle
NTSYSAPI NTSTATUS NTAPI ZwClose(_In_ HANDLE Handle)
#define PCI_MULTIFUNCTION
#define PCI_TYPE1_ADDRESS_PORT
struct _PCIPBUSDATA::@1433::@1435 Type2
_Must_inspect_result_ _In_ PDRIVER_OBJECT _In_ PCUNICODE_STRING RegistryPath
struct _PCI_COMMON_CONFIG * PPCI_COMMON_CONFIG
struct _PCI_SLOT_NUMBER::@3804::@3805 bits
VOID NTAPI HalpWritePCIConfig(IN PBUS_HANDLER BusHandler, IN PCI_SLOT_NUMBER Slot, IN PVOID Buffer, IN ULONG Offset, IN ULONG Length)
union _PCIPBUSDATA::@1433 Config
#define TYPE2_WRITE(x, y)
VOID NTAPI HalpPCIConfig(IN PBUS_HANDLER BusHandler, IN PCI_SLOT_NUMBER Slot, IN PUCHAR Buffer, IN ULONG Offset, IN ULONG Length, IN FncConfigIO *ConfigIO)
#define RtlMoveMemory(Destination, Source, Length)
_In_opt_ PUNICODE_STRING DriverClassName
FncReleaseSync ReleaseSynchronzation
VOID(NTAPI * FncReleaseSync)(IN PBUS_HANDLER BusHandler, IN KIRQL Irql)
FncConfigIO ConfigRead[3]
VOID(NTAPI * FncSync)(IN PBUS_HANDLER BusHandler, IN PCI_SLOT_NUMBER Slot, IN PKIRQL Irql, IN PVOID State)
_In_ PDEVICE_OBJECT DeviceObject
return STATUS_NOT_IMPLEMENTED
KSPIN_LOCK HalpPCIConfigLock
NTSTATUS NTAPI HalpSetupPciDeviceForDebugging(IN PVOID LoaderBlock, IN OUT PDEBUG_DEVICE_DESCRIPTOR PciDevice)
VOID NTAPI WRITE_PORT_ULONG(IN PULONG Port, IN ULONG Value)
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
VOID FASTCALL KiReleaseSpinLock(IN PKSPIN_LOCK SpinLock)
union _PCI_TYPE2_CSE_BITS::@1474 u
DECLSPEC_NORETURN VOID NTAPI KeBugCheck(ULONG BugCheckCode)
struct _CM_FULL_RESOURCE_DESCRIPTOR * PCM_FULL_RESOURCE_DESCRIPTOR
FORCEINLINE VOID KeInitializeSpinLock(_Out_ PKSPIN_LOCK SpinLock)
_Must_inspect_result_ _In_ WDFDEVICE _In_ PCUNICODE_STRING KeyName
_In_opt_ PUNICODE_STRING _In_ PDRIVER_OBJECT _In_ PDEVICE_OBJECT _In_ INTERFACE_TYPE _In_ ULONG BusNumber
PCI_CONFIG_HANDLER PCIConfigHandlerType1
_Must_inspect_result_ _In_ PDRIVER_OBJECT DriverObject
#define PCI_TYPE1_DATA_PORT
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
VOID NTAPI HalpInitializePciBus(VOID)
VOID NTAPI HalpPCISynchronizeType1(IN PBUS_HANDLER BusHandler, IN PCI_SLOT_NUMBER Slot, IN PKIRQL Irql, IN PPCI_TYPE1_CFG_BITS PciCfg1)
NTSYSAPI NTSTATUS NTAPI RtlIntegerToUnicodeString(ULONG Value, ULONG Base, PUNICODE_STRING String)
VOID NTAPI HalpReadPCIConfig(IN PBUS_HANDLER BusHandler, IN PCI_SLOT_NUMBER Slot, IN PVOID Buffer, IN ULONG Offset, IN ULONG Length)
#define PCI_INVALID_VENDORID
#define NT_SUCCESS(StatCode)
#define RtlFillMemory(Dest, Length, Fill)
#define ExAllocatePoolWithTag(hernya, size, tag)
struct _PCI_TYPE2_CSE_BITS::@1474::@1475 bits
_Requires_lock_held_ Interrupt _Releases_lock_ Interrupt _In_ _IRQL_restores_ KIRQL OldIrql
#define WRITE_PORT_UCHAR(p, d)
PPCI_REGISTRY_INFO_INTERNAL NTAPI HalpQueryPciRegistryInfo(VOID)
_Must_inspect_result_ _In_ WDFDEVICE Device
_Must_inspect_result_ _In_ WDFDEVICE _In_ BOOLEAN _In_opt_ PVOID Tag
#define PCI_TYPE2_CSE_PORT
struct _PCIPBUSDATA::@1433::@1434 Type1
ULONG NTAPI HalpGetPCIData(IN PBUS_HANDLER BusHandler, IN PBUS_HANDLER RootHandler, IN PCI_SLOT_NUMBER Slot, IN PUCHAR Buffer, IN ULONG Offset, IN ULONG Length)
ULONG NTAPI HalpSetPCIData(IN PBUS_HANDLER BusHandler, IN PBUS_HANDLER RootHandler, IN PCI_SLOT_NUMBER Slot, IN PUCHAR Buffer, IN ULONG Offset, IN ULONG Length)
_In_ ULONG _In_ ULONG Offset
NTSTATUS NTAPI HalpReleasePciDeviceForDebugging(IN OUT PDEBUG_DEVICE_DESCRIPTOR PciDevice)
ULONG NTAPI HaliPciInterfaceReadConfig(IN PBUS_HANDLER RootBusHandler, IN ULONG BusNumber, IN PCI_SLOT_NUMBER SlotNumber, IN PVOID Buffer, IN ULONG Offset, IN ULONG Length)
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
VOID NTAPI HalpInitializePciStubs(VOID)
VOID FASTCALL KiAcquireSpinLock(IN PKSPIN_LOCK SpinLock)
NTSTATUS NTAPI HalpAssignPCISlotResources(IN PBUS_HANDLER BusHandler, IN PBUS_HANDLER RootHandler, IN PUNICODE_STRING RegistryPath, IN PUNICODE_STRING DriverClassName OPTIONAL, IN PDRIVER_OBJECT DriverObject, IN PDEVICE_OBJECT DeviceObject OPTIONAL, IN ULONG Slot, IN OUT PCM_RESOURCE_LIST *pAllocatedResources)
VOID NTAPI HalpPCIReleaseSynchronzationType2(IN PBUS_HANDLER BusHandler, IN KIRQL Irql)
#define FIELD_OFFSET(t, f)
BOOLEAN NTAPI HalpValidPCISlot(IN PBUS_HANDLER BusHandler, IN PCI_SLOT_NUMBER Slot)
ULONG(NTAPI * FncConfigIO)(IN PPCIPBUSDATA BusData, IN PVOID State, IN PUCHAR Buffer, IN ULONG Offset)
struct _PCIPBUSDATA * PPCIPBUSDATA
union _PCI_TYPE1_CFG_BITS::@1472 u
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
#define InitializeObjectAttributes(p, n, a, r, s)
#define RtlCopyMemory(Destination, Source, Length)
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ ULONG _Out_ PULONG ResultLength
BUS_HANDLER HalpFakePciBusHandler
struct _PCI_REGISTRY_INFO * PPCI_REGISTRY_INFO
union _PCI_SLOT_NUMBER::@3804 u
#define PCI_TYPE2_ADDRESS_BASE
FncConfigIO ConfigWrite[3]
VOID NTAPI HalpPCIReleaseSynchronzationType1(IN PBUS_HANDLER BusHandler, IN KIRQL Irql)
#define TYPE1_WRITE(x, y)
#define PCI_COMMON_HDR_LENGTH
PULONG MinorVersion OPTIONAL
PCI_CONFIG_HANDLER PCIConfigHandler