74 WCHAR DeviceBuffer[20];
76 WCHAR SymlinkBuffer[20];
99 ERR_(VIDEOPRT,
"Failed to create DEVICEMAP registry entry: 0x%X\n",
Status);
111 ERR_(VIDEOPRT,
"Failed to write MaxObjectNumber: 0x%X\n",
Status);
122 ERR_(VIDEOPRT,
"Failed to create symbolic link: 0x%X\n",
Status);
142 if (NtHeader ==
NULL)
163 PVOID HwDeviceExtension =
184 WCHAR DeviceBuffer[20];
198 WARN_(VIDEOPRT,
"Can't find free device number\n");
210 INFO_(VIDEOPRT,
"HwDeviceExtension size is: 0x%x\n",
226 WARN_(VIDEOPRT,
"IoCreateDevice call failed with status 0x%08x\n",
Status);
257 WARN_(VIDEOPRT,
"IntCreateRegistryPath() call failed with status 0x%08x\n",
Status);
272 WARN_(VIDEOPRT,
"Couldn't get an information from bus driver. We will try to\n"
273 "use legacy detection method, but even that doesn't mean that\n"
302 SlotNumber.u.bits.DeviceNumber = (PciSlotNumber >> 16) & 0xFFFF;
303 SlotNumber.u.bits.FunctionNumber = PciSlotNumber & 0xFFFF;
325 ERR_(VIDEOPRT,
"IntCreateNewRegistryPath() failed with status 0x%08x\n",
Status);
332 (*DeviceObject)->Flags &= ~DO_DEVICE_INITIALIZING;
338 ERR_(VIDEOPRT,
"IntVideoPortAddDeviceMapLink() failed with status 0x%08x\n",
Status);
342 if (DisplayNumber == 0)
480 LegacyDetection =
TRUE;
495 INFO_(VIDEOPRT,
"Temporarily releasing VGA resources for adapter probing\n");
497 VgaResourcesReleased =
TRUE;
517 DPRINT(
"Bus Type %lu, Number %lu\n",
558 ERR_(VIDEOPRT,
"HwFindAdapter failed (vpStatus=0x%X) bus=%u iface=%u legacy=%u vga=%u detect(VGA=%u LEGACY=%u)\n",
567 if (VgaResourcesReleased)
571 INFO_(VIDEOPRT,
"Reclaiming VGA resources after failed probe\n");
576 WARN_(VIDEOPRT,
"Failed to reclaim VGA resources after probe failure\n");
603 ERR_(VIDEOPRT,
"IntVideoPortSetupTimer failed\n");
645 WARN_(VIDEOPRT,
"IoReportDetectedDevice failed 0x%08lx (bus=%u slot=%u)\n",
652 INFO_(VIDEOPRT,
"Reported legacy adapter PDO %p (bus=%u slot=%u)\n",
671 WARN_(VIDEOPRT,
"VGA reclaim failed (vpStatus=0x%X); releasing fallback state\n", vr);
682 INFO_(VIDEOPRT,
"VGA reclaim succeeded\n");
686 INFO_(VIDEOPRT,
"STATUS_SUCCESS\n");
695 if (VgaResourcesReleased)
699 INFO_(VIDEOPRT,
"Final reclaim attempt of VGA resources during failure cleanup\n");
704 WARN_(VIDEOPRT,
"VGA reclaim failed during failure cleanup\n");
777 RtlInitUnicodeString(&KeyPath,
L"\\Registry\\Machine\\System\\CurrentControlSet\\Control\\GraphicsDrivers\\UseNewKey");
794 RtlInitUnicodeString(&KeyPath,
L"\\Registry\\Machine\\System\\CurrentControlSet\\Control\\GraphicsDrivers\\DisableEmulator");
805 VideoPortDisableX86Emulator =
TRUE;
808 DPRINT1(
"Using %s\n", VideoPortDisableX86Emulator ?
"V86 mode" :
"x86 emulator");
895 RtlInitUnicodeString(&KeyPath,
L"\\Registry\\Machine\\System\\CurrentControlSet\\Control\\GraphicsDrivers\\BaseVideo");
912 ERR_(VIDEOPRT,
"Failed to create the BaseVideo key (0x%x)\n",
Status);
936 static BOOLEAN FirstInitialization;
938 TRACE_(VIDEOPRT,
"VideoPortInitialize\n");
940 if (!FirstInitialization)
942 FirstInitialization =
TRUE;
952 ERR_(VIDEOPRT,
"Invalid HwInitializationData\n");
960 ERR_(VIDEOPRT,
"Invalid HwInitializationData\n");
971 INFO_(VIDEOPRT,
"We were loaded by a Windows NT miniport driver.\n");
975 INFO_(VIDEOPRT,
"We were loaded by a Windows 2000 miniport driver.\n");
979 INFO_(VIDEOPRT,
"We were loaded by a Windows XP or later miniport driver.\n");
983 ERR_(VIDEOPRT,
"Invalid HwInitializationData size %lu (expected %lu, %lu or %lu)\n",
1007 INFO_(VIDEOPRT,
"The miniport is a PnP miniport driver\n");
1014 INFO_(VIDEOPRT,
"Legacy detection for adapter interface %d\n",
1019 LegacyDetection =
TRUE;
1038 ERR_(VIDEOPRT,
"IoAllocateDriverObjectExtension failed 0x%x\n",
Status);
1097 if (LegacyDetection)
1115 ERR_(VIDEOPRT,
"IntVideoPortCreateAdapterDeviceObject returned 0x%x\n",
Status);
1121 ERR_(VIDEOPRT,
"IntVideoPortFindAdapter returned 0x%x\n",
Status);
1148 DebugPrintLevel =
Error;
1168 INFO_(VIDEOPRT,
"VideoPortLogError ErrorCode %d (0x%x) UniqueId %lu (0x%lx)\n",
1171 INFO_(VIDEOPRT,
"Vrp->IoControlCode %lu (0x%lx)\n", Vrp->IoControlCode, Vrp->IoControlCode);
1204 INFO_(VIDEOPRT,
"Found registry value for name %S: type %d, length %d\n",
1234 TRACE_(VIDEOPRT,
"VideoPortGetRegistryParameters ParameterName %S, RegPath: %wZ\n",
1237 Context.HwDeviceExtension = HwDeviceExtension;
1239 Context.HwGetRegistryRoutine = GetRegistryRoutine;
1252 WARN_(VIDEOPRT,
"VideoPortGetRegistryParameters could not find the "
1253 "requested parameter\n");
1257 if (IsParameterFileName)
1281 TRACE_(VIDEOPRT,
"VideoPortSetRegistryParameters ParameterName %S, RegPath: %wZ\n",
1292 WARN_(VIDEOPRT,
"VideoPortSetRegistryParameters error 0x%x\n",
Status);
1308 TRACE_(VIDEOPRT,
"VideoPortGetVgaStatus\n");
1340 TRACE_(VIDEOPRT,
"VideoPortGetRomImage(HwDeviceExtension 0x%X Length 0x%X)\n",
1341 HwDeviceExtension,
Length);
1346 if (RomImageBuffer !=
NULL)
1349 RomImageBuffer =
NULL;
1364 if (RomImageBuffer !=
NULL)
1368 if (RomImageBuffer ==
NULL)
1380 RomImageBuffer =
NULL;
1382 return RomImageBuffer;
1401 TRACE_(VIDEOPRT,
"VideoPortScanRom RomBase %p RomLength 0x%x String %s\n", RomBase, RomLength,
String);
1405 for (SearchLocation = RomBase;
1406 !
Found && SearchLocation < RomBase + RomLength - StringLength;
1412 INFO_(VIDEOPRT,
"Match found at %p\n", SearchLocation);
1437 Ret = (*SynchronizeRoutine)(
Context);
1443 Ret = (*SynchronizeRoutine)(
Context);
1456 Ret = (*SynchronizeRoutine)(
Context);
1481 UCHAR LastMonitorID[10];
1487 INFO_(VIDEOPRT,
"Starting child device probe\n");
1491 WARN_(VIDEOPRT,
"Miniport's HwGetVideoChildDescriptor is NULL!\n");
1497 ERR_(VIDEOPRT,
"FIXME: Support calling VideoPortEnumerateChildren again!\n");
1511 &ChildDeviceObject);
1527 ChildEnumInfo.
Size =
sizeof(ChildEnumInfo);
1560 if (bHaveLastMonitorID)
1565 INFO_(VIDEOPRT,
"Found identical Monitor ID two times, stopping enumeration\n");
1573 bHaveLastMonitorID =
TRUE;
1587 WARN_(VIDEOPRT,
"Child device %d is invalid!\n", ChildEnumInfo.
ChildIndex);
1593 INFO_(VIDEOPRT,
"End of child enumeration! (%d children enumerated)\n",
i - 1);
1599 WARN_(VIDEOPRT,
"HwGetVideoChildDescriptor returned unknown status code 0x%x!\n",
Status);
1608 INFO_(VIDEOPRT,
"Monitor device enumerated! (ChildId = 0x%x)\n", ChildExtension->
ChildId);
1611 INFO_(VIDEOPRT,
"%02x %02x %02x %02x %02x %02x %02x %02x\n",
1612 p[
j + 0],
p[
j + 1],
p[
j + 2],
p[
j + 3],
1613 p[
j + 4],
p[
j + 5],
p[
j + 6],
p[
j + 7]);
1622 ERR_(VIDEOPRT,
"HwGetVideoChildDescriptor returned unsupported type: %d\n", ChildExtension->
ChildType);
1626 ChildDeviceObject->
Flags &= ~DO_DEVICE_INITIALIZING;
1669 ASSERT(SecondaryDeviceExtension);
1680 DPRINT1(
"Calling VideoPortCreateSecondaryDisplay for InstanceId %lu\n",
1692 DPRINT1(
"IntVideoPortCreateAdapterDeviceObject() failed with status 0x%08x\n",
Status);
1731 TRACE_(VIDEOPRT,
"VideoPortGetAssociatedDeviceExtension\n");
1733 if (!DeviceExtension)
1755 VpOsVersionInfo->MajorVersion =
Version.dwMajorVersion;
1756 VpOsVersionInfo->MinorVersion =
Version.dwMinorVersion;
1757 VpOsVersionInfo->BuildNumber =
Version.dwBuildNumber;
1758 VpOsVersionInfo->ServicePackMajor =
Version.wServicePackMajor;
1759 VpOsVersionInfo->ServicePackMinor =
Version.wServicePackMinor;
1764 VpOsVersionInfo->MajorVersion = 5;
1765 VpOsVersionInfo->MinorVersion = 0;
1766 VpOsVersionInfo->BuildNumber = 2195;
1767 VpOsVersionInfo->ServicePackMajor = 4;
1768 VpOsVersionInfo->ServicePackMinor = 0;
1798 TRACE_(VIDEOPRT,
"VideoPortCheckForDeviceExistence\n");
1814 &GUID_PCI_DEVICE_PRESENT_INTERFACE;
1819 WARN_(VIDEOPRT,
"IopInitiatePnpIrp() failed! (Status 0x%lx)\n",
Status);
1829 VendorId, DeviceId, RevisionId,
1830 SubVendorId, SubSystemId, PciFlags);
1834 return DevicePresent;
1863 TRACE_(VIDEOPRT,
"VideoPortQueryPerformanceCounter\n");
1878 TRACE_(VIDEOPRT,
"VideoPortAcquireDeviceLock\n");
1894 TRACE_(VIDEOPRT,
"VideoPortReleaseDeviceLock\n");
static USHORT USHORT * NewLength
static KSYNCHRONIZE_ROUTINE SynchronizeRoutine
NTSYSAPI ULONG NTAPI vDbgPrintEx(_In_ ULONG ComponentId, _In_ ULONG Level, _In_z_ PCCH Format, _In_ va_list ap)
PDEVICE_OBJECT PhysicalDeviceObject
_In_opt_ PWSTR _In_ PWSTR ParameterName
#define FILE_DEVICE_SECURE_OPEN
_In_ PCHAR _In_ ULONG DeviceNumber
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES ObjectAttributes
PVOID NTAPI MmAllocateContiguousMemory(IN SIZE_T NumberOfBytes, IN PHYSICAL_ADDRESS HighestAcceptableAddress)
#define ERROR_DEV_NOT_EXIST
#define ERROR_INVALID_FUNCTION
#define NT_SUCCESS(StatCode)
NTSTATUS NTAPI RtlGetVersion(IN OUT PRTL_OSVERSIONINFOW lpVersionInformation)
#define ERROR_INVALID_PARAMETER
_ACRTIMP wchar_t *__cdecl wcsstr(const wchar_t *, const wchar_t *)
_ACRTIMP size_t __cdecl strlen(const char *)
BOOLEAN NTAPI KeInsertQueueDpc(IN PKDPC Dpc, IN PVOID SystemArgument1, IN PVOID SystemArgument2)
VOID NTAPI KeInitializeDpc(IN PKDPC Dpc, IN PKDEFERRED_ROUTINE DeferredRoutine, IN PVOID DeferredContext)
DRIVER_INITIALIZE DriverEntry
#define InsertTailList(ListHead, Entry)
#define ExAllocatePoolWithTag(hernya, size, tag)
#define IsListEmpty(ListHead)
#define KeRaiseIrql(irql, oldIrql)
#define RtlCompareMemory(s1, s2, l)
struct _DEVICE_OBJECT * PDEVICE_OBJECT
#define KeLowerIrql(oldIrql)
#define KeGetCurrentIrql()
#define InitializeListHead(ListHead)
#define KeInitializeSpinLock(sl)
#define ExAllocatePool(type, size)
NTSYSAPI NTSTATUS NTAPI ZwQuerySystemInformation(IN SYSTEM_INFORMATION_CLASS SystemInfoClass, OUT PVOID SystemInfoBuffer, IN ULONG SystemInfoBufferSize, OUT PULONG BytesReturned OPTIONAL)
_Must_inspect_result_ _In_ PFLT_GET_OPERATION_STATUS_CALLBACK CallbackRoutine
PVOID NTAPI IntVideoPortGetProcAddress(_In_ PVOID HwDeviceExtension, _In_ PUCHAR FunctionName)
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 const GLfloat const GLdouble const GLfloat GLint GLint GLint j
LARGE_INTEGER NTAPI KeQueryPerformanceCounter(IN PLARGE_INTEGER PerformanceFreq)
_In_ GUID _In_ PVOID ValueData
#define OBJ_KERNEL_HANDLE
#define OBJ_CASE_INSENSITIVE
NTSYSAPI NTSTATUS WINAPI RtlWriteRegistryValue(ULONG, PCWSTR, PCWSTR, ULONG, PVOID, ULONG)
NTSYSAPI NTSTATUS WINAPI RtlQueryRegistryValues(ULONG, PCWSTR, PRTL_QUERY_REGISTRY_TABLE, PVOID, PVOID)
KMUTEX VideoPortInt10Mutex
PLIST_ENTRY NTAPI ExInterlockedInsertTailList(IN OUT PLIST_ENTRY ListHead, IN OUT PLIST_ENTRY ListEntry, IN OUT PKSPIN_LOCK Lock)
PCI_INTERFACE PciDevicePresentInterface
NTSTATUS NTAPI IoQueryDeviceDescription(_In_opt_ PINTERFACE_TYPE BusType, _In_opt_ PULONG BusNumber, _In_opt_ PCONFIGURATION_TYPE ControllerType, _In_opt_ PULONG ControllerNumber, _In_opt_ PCONFIGURATION_TYPE PeripheralType, _In_opt_ PULONG PeripheralNumber, _In_ PIO_QUERY_DEVICE_ROUTINE CalloutRoutine, _In_opt_ PVOID Context)
Reads and returns Hardware information from the appropriate hardware registry key.
#define ExFreePoolWithTag(_P, _T)
#define InitializeObjectAttributes(p, n, a, r, s)
_In_ NDIS_ERROR_CODE ErrorCode
_Out_ PNDIS_HANDLE _Out_ PUINT _In_ PNDIS_STRING _In_ NDIS_PHYSICAL_ADDRESS HighestAcceptableAddress
_Must_inspect_result_ _Out_ PNDIS_STATUS _In_ NDIS_HANDLE _In_ ULONG _Out_ PNDIS_STRING _Out_ PNDIS_HANDLE KeyHandle
_In_ HANDLE _Outptr_result_bytebuffer_ ViewSize PVOID * BaseAddress
NTSYSAPI NTSTATUS NTAPI ZwClose(_In_ HANDLE Handle)
_In_ PCWSTR _Inout_ _At_ QueryTable EntryContext
_In_ PCWSTR _Inout_ _At_ QueryTable _Pre_unknown_ PRTL_QUERY_REGISTRY_TABLE QueryTable
NTSYSAPI VOID NTAPI RtlCopyUnicodeString(PUNICODE_STRING DestinationString, PUNICODE_STRING SourceString)
@ KeyValuePartialInformation
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
NTSYSAPI BOOLEAN NTAPI RtlEqualUnicodeString(PUNICODE_STRING String1, PUNICODE_STRING String2, BOOLEAN CaseInSensitive)
#define RTL_REGISTRY_ABSOLUTE
#define RTL_REGISTRY_DEVICEMAP
#define RTL_QUERY_REGISTRY_REQUIRED
NTSYSAPI VOID NTAPI RtlFreeUnicodeString(PUNICODE_STRING UnicodeString)
#define REG_OPTION_VOLATILE
#define UNREFERENCED_PARAMETER(P)
__GNU_EXTENSION typedef __int64 * PLONGLONG
_In_ ULONG _In_ ULONG _In_ ULONG Length
static OUT PIO_STATUS_BLOCK IoStatusBlock
NTSTATUS NTAPI IopInitiatePnpIrp(IN PDEVICE_OBJECT DeviceObject, IN PIO_STATUS_BLOCK IoStatusBlock, IN UCHAR MinorFunction, IN PIO_STACK_LOCATION Stack)
_Out_ PKAPC_STATE ApcState
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 IoDetachDevice(IN PDEVICE_OBJECT TargetDevice)
VOID NTAPI IoDeleteDevice(IN PDEVICE_OBJECT DeviceObject)
PVOID NTAPI IoGetDriverObjectExtension(IN PDRIVER_OBJECT DriverObject, IN PVOID ClientIdentificationAddress)
NTSTATUS NTAPI IoAllocateDriverObjectExtension(IN PDRIVER_OBJECT DriverObject, IN PVOID ClientIdentificationAddress, IN ULONG DriverObjectExtensionSize, OUT PVOID *DriverObjectExtension)
VOID NTAPI IoDisconnectInterrupt(PKINTERRUPT InterruptObject)
NTSTATUS NTAPI IoCreateSymbolicLink(IN PUNICODE_STRING SymbolicLinkName, IN PUNICODE_STRING DeviceName)
BOOLEAN NTAPI KeSynchronizeExecution(IN OUT PKINTERRUPT Interrupt, IN PKSYNCHRONIZE_ROUTINE SynchronizeRoutine, IN PVOID SynchronizeContext OPTIONAL)
VOID NTAPI KeInitializeMutex(IN PKMUTEX Mutex, IN ULONG Level)
LONG NTAPI KeReleaseMutex(IN PKMUTEX Mutex, IN BOOLEAN Wait)
#define STATUS_REVISION_MISMATCH
PPCI_DRIVER_EXTENSION DriverExtension
SYSTEM_BASIC_INFORMATION SystemBasicInfo
NTSTATUS NTAPI IoGetDeviceProperty(IN PDEVICE_OBJECT DeviceObject, IN DEVICE_REGISTRY_PROPERTY DeviceProperty, IN ULONG BufferLength, OUT PVOID PropertyBuffer, OUT PULONG ResultLength)
VOID NTAPI IoInvalidateDeviceRelations(IN PDEVICE_OBJECT DeviceObject, IN DEVICE_RELATION_TYPE Type)
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)
VOID NTAPI KeStackAttachProcess(IN PKPROCESS Process, OUT PRKAPC_STATE ApcState)
VOID NTAPI KeUnstackDetachProcess(IN PRKAPC_STATE ApcState)
#define FILE_DEVICE_VIDEO
#define FILE_DEVICE_CONTROLLER
#define IRP_MJ_DEVICE_CONTROL
enum _INTERFACE_TYPE INTERFACE_TYPE
struct _INTERFACE * PINTERFACE
_Must_inspect_result_ _In_ PVOID _In_ struct _HW_INITIALIZATION_DATA _In_ PVOID HwContext
_Must_inspect_result_ _In_ PVOID _In_ struct _HW_INITIALIZATION_DATA * HwInitializationData
#define VIDEO_ENUM_INVALID_DEVICE
VPAPI VP_STATUS NTAPI VideoPortVerifyAccessRanges(_In_ PVOID HwDeviceExtension, _In_opt_ ULONG NumAccessRanges, _In_reads_opt_(NumAccessRanges) PVIDEO_ACCESS_RANGE AccessRanges)
Claims or releases a range of hardware resources and checks for conflicts.
#define VIDEO_ENUM_NO_MORE_DEVICES
VOID(NTAPI * PVIDEO_BUGCHECK_CALLBACK)(IN PVOID HwDeviceExtension, IN ULONG BugcheckCode, IN PUCHAR Buffer, IN ULONG BufferSize)
VIDEO_SYNCHRONIZE_PRIORITY
VOID(NTAPI * PMINIPORT_DPC_ROUTINE)(IN PVOID HwDeviceExtension, IN PVOID Context)
struct _VIDEO_HW_INITIALIZATION_DATA VIDEO_HW_INITIALIZATION_DATA
#define SIZE_OF_NT4_VIDEO_HW_INITIALIZATION_DATA
#define VIDEO_ENUM_MORE_DEVICES
#define SIZE_OF_W2K_VIDEO_HW_INITIALIZATION_DATA
struct _VIDEO_PORT_CONFIG_INFO VIDEO_PORT_CONFIG_INFO
#define CDE_USE_SUBSYSTEM_IDS
VP_STATUS(NTAPI * PMINIPORT_GET_REGISTRY_ROUTINE)(IN PVOID HwDeviceExtension, IN PVOID Context, IN OUT PWSTR ValueName, IN OUT PVOID ValueData, IN ULONG ValueLength)
BOOLEAN(NTAPI * PMINIPORT_SYNCHRONIZE_ROUTINE)(IN PVOID Context)
enum _CONFIGURATION_TYPE CONFIGURATION_TYPE
#define ASSERT_IRQL_LESS_OR_EQUAL(x)
#define STATUS_BUFFER_TOO_SMALL
#define STATUS_BUFFER_OVERFLOW
PULONG MinorVersion OPTIONAL
base for all directory entries
PMINIPORT_GET_REGISTRY_ROUTINE HwGetRegistryRoutine
struct _IO_STACK_LOCATION::@4301::@4327 QueryInterface
union _IO_STACK_LOCATION::@1710 Parameters
PRTL_QUERY_REGISTRY_ROUTINE QueryRoutine
ULONG ChildDescriptorSize
PVOID ChildHwDeviceExtension
ULONG HwChildDeviceExtensionSize
PVIDEO_HW_GET_CHILD_DESCRIPTOR HwGetVideoChildDescriptor
UCHAR ChildDescriptor[256]
PDEVICE_OBJECT PhysicalDeviceObject
VIDEO_CHILD_TYPE ChildType
PDRIVER_OBJECT DriverObject
VIDEO_PORT_COMMON_EXTENSION Common
KINTERRUPT_MODE InterruptMode
INTERFACE_TYPE AdapterInterfaceType
PVIDEO_PORT_GET_PROC_ADDRESS VideoPortGetProcAddress
ULONGLONG SystemMemorySize
PDEVICE_OBJECT PhysicalDeviceObject
PDEVICE_OBJECT NextDeviceObject
VIDEO_PORT_DRIVER_EXTENSION * DriverExtension
LIST_ENTRY ChildDeviceList
ULONG NumberOfSecondaryDisplays
INTERFACE_TYPE AdapterInterfaceType
CHAR POINTER_ALIGNMENT MiniPortDeviceExtension[1]
PKINTERRUPT InterruptObject
UNICODE_STRING RegistryPath
LIST_ENTRY AddressMappingListHead
VIDEO_PORT_COMMON_EXTENSION Common
LIST_ENTRY DmaAdapterList
PDRIVER_OBJECT DriverObject
LIST_ENTRY HwResetListEntry
UNICODE_STRING NewRegistryPath
PDEVICE_OBJECT FunctionalDeviceObject
VIDEO_HW_INITIALIZATION_DATA InitializationData
_In_ PNET_PNP_EVENT _In_ PTDI_PNP_CONTEXT Context1
_In_ PNET_PNP_EVENT _In_ PTDI_PNP_CONTEXT _In_ PTDI_PNP_CONTEXT Context2
#define RTL_CONSTANT_STRING(s)
#define FIELD_OFFSET(t, f)
#define RtlCopyMemory(Destination, Source, Length)
#define RtlZeroMemory(Destination, Length)
#define STATUS_INVALID_PARAMETER
#define STATUS_UNSUCCESSFUL
#define STATUS_INSUFFICIENT_RESOURCES
VOID NTAPI VpNotifyEaData(IN PDEVICE_OBJECT DeviceObject, IN PVOID Data)
VOID NTAPI VideoPortAcquireDeviceLock(IN PVOID HwDeviceExtension)
VOID NTAPI IntVideoPortDeferredRoutine(IN PKDPC Dpc, IN PVOID DeferredContext, IN PVOID SystemArgument1, IN PVOID SystemArgument2)
BOOLEAN VideoPortUseNewKey
BOOLEAN NTAPI VideoPortCheckForDeviceExistence(IN PVOID HwDeviceExtension, IN USHORT VendorId, IN USHORT DeviceId, IN UCHAR RevisionId, IN USHORT SubVendorId, IN USHORT SubSystemId, IN ULONG Flags)
PVOID NTAPI VideoPortAllocateContiguousMemory(IN PVOID HwDeviceExtension, IN ULONG NumberOfBytes, IN PHYSICAL_ADDRESS HighestAcceptableAddress)
VOID NTAPI VideoPortLogError(IN PVOID HwDeviceExtension, IN PVIDEO_REQUEST_PACKET Vrp OPTIONAL, IN VP_STATUS ErrorCode, IN ULONG UniqueId)
VOID FASTCALL IntDetachFromCSRSS(_In_ PKPROCESS CallingProcess, _In_ PKAPC_STATE ApcState)
Detach the current thread from the CSRSS process. This routine is to be invoked after a previous succ...
VP_STATUS NTAPI VideoPortSetRegistryParameters(IN PVOID HwDeviceExtension, IN PWSTR ValueName, IN PVOID ValueData, IN ULONG ValueLength)
PVOID NTAPI IntVideoPortImageDirectoryEntryToData(PVOID BaseAddress, ULONG Directory)
VOID FASTCALL IntLoadRegistryParameters(VOID)
VP_STATUS NTAPI VideoPortRegisterBugcheckCallback(IN PVOID HwDeviceExtension, IN ULONG BugcheckCode, IN PVIDEO_BUGCHECK_CALLBACK Callback, IN ULONG BugcheckDataSize)
BOOLEAN NTAPI VideoPortScanRom(IN PVOID HwDeviceExtension, IN PUCHAR RomBase, IN ULONG RomLength, IN PUCHAR String)
VP_STATUS NTAPI VideoPortGetVersion(IN PVOID HwDeviceExtension, IN OUT PVPOSVERSIONINFO VpOsVersionInfo)
VP_STATUS NTAPI VideoPortGetRegistryParameters(IN PVOID HwDeviceExtension, IN PWSTR ParameterName, IN UCHAR IsParameterFileName, IN PMINIPORT_GET_REGISTRY_ROUTINE GetRegistryRoutine, IN PVOID HwContext)
struct QueryRegistryCallbackContext * PQUERY_REGISTRY_CALLBACK_CONTEXT
static ULONG VideoPortMaxObjectNumber
static NTSTATUS NTAPI QueryRegistryCallback(IN PWSTR ValueName, IN ULONG ValueType, IN PVOID ValueData, IN ULONG ValueLength, IN PVOID Context, IN PVOID EntryContext)
UCHAR NTAPI VideoPortGetCurrentIrql(VOID)
VOID VideoPortDebugPrint(IN VIDEO_DEBUG_LEVEL DebugPrintLevel, IN PCHAR DebugMessage,...)
NTSTATUS NTAPI IntVideoPortCreateAdapterDeviceObject(_In_ PDRIVER_OBJECT DriverObject, _In_ PVIDEO_PORT_DRIVER_EXTENSION DriverExtension, _In_opt_ PDEVICE_OBJECT PhysicalDeviceObject, _In_ USHORT AdapterNumber, _In_ USHORT DisplayNumber, _Out_opt_ PDEVICE_OBJECT *DeviceObject)
NTSTATUS NTAPI IntVideoPortFindAdapter(IN PDRIVER_OBJECT DriverObject, IN PVIDEO_PORT_DRIVER_EXTENSION DriverExtension, IN PDEVICE_OBJECT DeviceObject)
VOID NTAPI VideoPortReleaseDeviceLock(IN PVOID HwDeviceExtension)
static NTSTATUS IntVideoPortAddDeviceMapLink(PVIDEO_PORT_DEVICE_EXTENSION DeviceExtension)
VP_STATUS NTAPI VideoPortEnumerateChildren(IN PVOID HwDeviceExtension, IN PVOID Reserved)
PVIDEO_PORT_DEVICE_EXTENSION VgaDeviceExtension
LONGLONG NTAPI VideoPortQueryPerformanceCounter(IN PVOID HwDeviceExtension, OUT PLONGLONG PerformanceFrequency OPTIONAL)
ULONG NTAPI VideoPortInitialize(IN PVOID Context1, IN PVOID Context2, IN PVIDEO_HW_INITIALIZATION_DATA HwInitializationData, IN PVOID HwContext)
struct QueryRegistryCallbackContext QUERY_REGISTRY_CALLBACK_CONTEXT
BOOLEAN NTAPI VideoPortIsNoVesa(VOID)
VP_STATUS NTAPI VideoPortCreateSecondaryDisplay(IN PVOID HwDeviceExtension, IN OUT PVOID *SecondaryDeviceExtension, IN ULONG Flag)
static NTSTATUS IntVideoPortEnumBuses(_In_ INTERFACE_TYPE AdapterInterfaceType, _Inout_ PULONG BusNumber)
Enumerates all supported buses on the system.
static NTSTATUS NTAPI IntVideoPortEnumBusCallback(_In_ PVOID Context, _In_ PUNICODE_STRING PathName, _In_ INTERFACE_TYPE BusType, _In_ ULONG BusNumber, _In_ PKEY_VALUE_FULL_INFORMATION *BusInformation, _In_ CONFIGURATION_TYPE ControllerType, _In_ ULONG ControllerNumber, _In_ PKEY_VALUE_FULL_INFORMATION *ControllerInformation, _In_ CONFIGURATION_TYPE PeripheralType, _In_ ULONG PeripheralNumber, _In_ PKEY_VALUE_FULL_INFORMATION *PeripheralInformation)
A PIO_QUERY_DEVICE_ROUTINE callback for IoQueryDeviceDescription() to return success when an enumerat...
KSPIN_LOCK HwResetAdaptersLock
PVOID NTAPI VideoPortGetAssociatedDeviceExtension(IN PVOID DeviceObject)
PVOID NTAPI VideoPortGetRomImage(IN PVOID HwDeviceExtension, IN PVOID Unused1, IN ULONG Unused2, IN ULONG Length)
PVIDEO_ACCESS_RANGE VgaRanges
NTSTATUS NTAPI IntVideoPortEnumerateChildren(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
BOOLEAN FASTCALL IntAttachToCSRSS(_Outptr_ PKPROCESS *CallingProcess, _Out_ PKAPC_STATE ApcState)
Attach the current thread to the CSRSS process. The caller must detach from the process by invoking I...
BOOLEAN NTAPI VideoPortQueueDpc(IN PVOID HwDeviceExtension, IN PMINIPORT_DPC_ROUTINE CallbackRoutine, IN PVOID Context)
VP_STATUS NTAPI VideoPortGetVgaStatus(IN PVOID HwDeviceExtension, OUT PULONG VgaStatus)
BOOLEAN NTAPI VideoPortSynchronizeExecution(IN PVOID HwDeviceExtension, IN VIDEO_SYNCHRONIZE_PRIORITY Priority, IN PMINIPORT_SYNCHRONIZE_ROUTINE SynchronizeRoutine, OUT PVOID Context)
static BOOLEAN IntIsVgaSaveDriverName(_In_ PDRIVER_OBJECT DriverObject)
LIST_ENTRY HwResetAdaptersList
#define VIDEO_PORT_GET_DEVICE_EXTENSION(MiniportExtension)
struct _VIDEO_PORT_DEVICE_EXTENSTION * PVIDEO_PORT_DEVICE_EXTENSION
#define VIDEO_PORT_GET_CHILD_EXTENSION(MiniportExtension)
struct _VIDEO_PORT_DEVICE_EXTENSTION VIDEO_PORT_DEVICE_EXTENSION
_Must_inspect_result_ _In_ WDFCHILDLIST _In_ PWDF_CHILD_LIST_ITERATOR _Out_ WDFDEVICE _Inout_opt_ PWDF_CHILD_RETRIEVE_INFO Info
_In_ PDEVICE_OBJECT DeviceObject
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ DEVPROPTYPE _In_ ULONG Size
_Must_inspect_result_ _In_ WDFDEVICE _In_ WDFSTRING String
_In_ WDFDEVICE _In_ PPNP_BUS_INFORMATION BusInformation
_Must_inspect_result_ _In_ PWDFDEVICE_INIT _In_opt_ PCUNICODE_STRING DeviceName
_Must_inspect_result_ _In_ PWDF_DPC_CONFIG _In_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFDPC * Dpc
_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 _In_ USHORT _In_ USHORT Version
_In_ WDFINTERRUPT _In_ WDF_INTERRUPT_POLICY _In_ WDF_INTERRUPT_PRIORITY Priority
_In_ WDFINTERRUPT _In_ PFN_WDF_INTERRUPT_SYNCHRONIZE Callback
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING _In_ ULONG _Out_opt_ PULONG _Out_opt_ PULONG ValueType
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING ValueName
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING _In_ ULONG ValueLength
_In_ WDFIORESREQLIST _In_ ULONG SlotNumber
struct _KPROCESS * PKPROCESS
NTSTATUS NTAPI IntVideoPortDispatchClose(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
VOID NTAPI IntVideoPortUnload(PDRIVER_OBJECT DriverObject)
NTSTATUS NTAPI IntVideoPortDispatchOpen(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
NTSTATUS NTAPI IntVideoPortDispatchDeviceControl(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
NTSTATUS NTAPI IntVideoPortDispatchSystemControl(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
NTSTATUS NTAPI IntVideoPortDispatchPnp(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
NTSTATUS NTAPI IntVideoPortAddDevice(IN PDRIVER_OBJECT DriverObject, IN PDEVICE_OBJECT PhysicalDeviceObject)
NTSTATUS NTAPI IntVideoPortDispatchPower(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
BOOLEAN NTAPI IntVideoPortSetupInterrupt(IN PDEVICE_OBJECT DeviceObject, IN PVIDEO_PORT_DRIVER_EXTENSION DriverExtension, IN PVIDEO_PORT_CONFIG_INFO ConfigInfo)
NTSTATUS NTAPI IntCreateRegistryPath(IN PCUNICODE_STRING DriverRegistryPath, IN ULONG DeviceNumber, OUT PUNICODE_STRING DeviceRegistryPath)
NTSTATUS NTAPI IntCreateNewRegistryPath(PVIDEO_PORT_DEVICE_EXTENSION DeviceExtension)
NTSTATUS NTAPI IntSetupDeviceSettingsKey(PVIDEO_PORT_DEVICE_EXTENSION DeviceExtension)
VOID IntVideoPortReleaseResources(_In_ PVIDEO_PORT_DEVICE_EXTENSION DeviceExtension)
BOOLEAN NTAPI IntVideoPortSetupTimer(IN PDEVICE_OBJECT DeviceObject, IN PVIDEO_PORT_DRIVER_EXTENSION DriverExtension)
_Reserved_ PVOID Reserved
void int int ULONGLONG int va_list * ap
_IRQL_requires_same_ typedef _In_ ULONG _In_ UCHAR _In_ ULONGLONG _In_ ULONGLONG _In_opt_ PEVENT_FILTER_DESCRIPTOR _Inout_opt_ PVOID CallbackContext
_At_(*)(_In_ PWSK_CLIENT Client, _In_opt_ PUNICODE_STRING NodeName, _In_opt_ PUNICODE_STRING ServiceName, _In_opt_ ULONG NameSpace, _In_opt_ GUID *Provider, _In_opt_ PADDRINFOEXW Hints, _Outptr_ PADDRINFOEXW *Result, _In_opt_ PEPROCESS OwningProcess, _In_opt_ PETHREAD OwningThread, _Inout_ PIRP Irp Result)(Mem)) NTSTATUS(WSKAPI *PFN_WSK_GET_ADDRESS_INFO
_Must_inspect_result_ _In_ ULONG Flags
_In_opt_ PUNICODE_STRING _In_ PDRIVER_OBJECT _In_ PDEVICE_OBJECT _In_ INTERFACE_TYPE _In_ ULONG BusNumber
_In_opt_ PUNICODE_STRING _In_ PDRIVER_OBJECT _In_ PDEVICE_OBJECT _In_ INTERFACE_TYPE BusType
#define IRP_MN_QUERY_INTERFACE
struct _PCI_DEVICE_PRESENT_INTERFACE PCI_DEVICE_PRESENT_INTERFACE
@ DevicePropertyBusNumber
@ DevicePropertyLegacyBusType
#define IRP_MJ_SYSTEM_CONTROL
#define PCI_USE_SUBSYSTEM_IDS
_Must_inspect_result_ typedef _In_ PHYSICAL_ADDRESS _Inout_ PLARGE_INTEGER NumberOfBytes
#define KeWaitForMutexObject
_Requires_lock_held_ Interrupt _Releases_lock_ Interrupt _In_ _IRQL_restores_ KIRQL OldIrql
_In_opt_ PVOID _In_opt_ PVOID SystemArgument1
_In_opt_ PVOID DeferredContext
_In_opt_ PVOID _In_opt_ PVOID _In_opt_ PVOID SystemArgument2
#define PsGetCurrentProcess
#define RTL_STATIC_LIST_HEAD(x)
struct _OSVERSIONINFOEXW RTL_OSVERSIONINFOEXW