75 WCHAR DeviceBuffer[20];
77 WCHAR SymlinkBuffer[20];
100 ERR_(VIDEOPRT,
"Failed to create DEVICEMAP registry entry: 0x%X\n",
Status);
112 ERR_(VIDEOPRT,
"Failed to write MaxObjectNumber: 0x%X\n",
Status);
123 ERR_(VIDEOPRT,
"Failed to create symbolic link: 0x%X\n",
Status);
143 if (NtHeader ==
NULL)
164 PVOID HwDeviceExtension =
185 WCHAR DeviceBuffer[20];
199 WARN_(VIDEOPRT,
"Can't find free device number\n");
211 INFO_(VIDEOPRT,
"HwDeviceExtension size is: 0x%x\n",
227 WARN_(VIDEOPRT,
"IoCreateDevice call failed with status 0x%08x\n",
Status);
266 WARN_(VIDEOPRT,
"IntCreateRegistryPath() call failed with status 0x%08x\n",
Status);
281 WARN_(VIDEOPRT,
"Couldn't get an information from bus driver. We will try to\n"
282 "use legacy detection method, but even that doesn't mean that\n"
311 SlotNumber.u.bits.DeviceNumber = (PciSlotNumber >> 16) & 0xFFFF;
312 SlotNumber.u.bits.FunctionNumber = PciSlotNumber & 0xFFFF;
334 ERR_(VIDEOPRT,
"IntCreateNewRegistryPath() failed with status 0x%08x\n",
Status);
341 (*DeviceObject)->Flags &= ~DO_DEVICE_INITIALIZING;
347 ERR_(VIDEOPRT,
"IntVideoPortAddDeviceMapLink() failed with status 0x%08x\n",
Status);
351 if (DisplayNumber == 0)
488 LegacyDetection =
TRUE;
503 INFO_(VIDEOPRT,
"Temporarily releasing VGA resources for adapter probing\n");
505 VgaResourcesReleased =
TRUE;
525 DPRINT(
"Bus Type %lu, Number %lu\n",
566 ERR_(VIDEOPRT,
"HwFindAdapter failed (vpStatus=0x%X) bus=%u iface=%u legacy=%u vga=%u detect(VGA=%u LEGACY=%u)\n",
575 if (VgaResourcesReleased)
579 INFO_(VIDEOPRT,
"Reclaiming VGA resources after failed probe\n");
584 WARN_(VIDEOPRT,
"Failed to reclaim VGA resources after probe failure\n");
611 ERR_(VIDEOPRT,
"IntVideoPortSetupTimer failed\n");
653 WARN_(VIDEOPRT,
"IoReportDetectedDevice failed 0x%08lx (bus=%u slot=%u)\n",
660 INFO_(VIDEOPRT,
"Reported legacy adapter PDO %p (bus=%u slot=%u)\n",
679 WARN_(VIDEOPRT,
"VGA reclaim failed (vpStatus=0x%X); releasing fallback state\n", vr);
690 INFO_(VIDEOPRT,
"VGA reclaim succeeded\n");
694 INFO_(VIDEOPRT,
"STATUS_SUCCESS\n");
703 if (VgaResourcesReleased)
707 INFO_(VIDEOPRT,
"Final reclaim attempt of VGA resources during failure cleanup\n");
712 WARN_(VIDEOPRT,
"VGA reclaim failed during failure cleanup\n");
785 RtlInitUnicodeString(&KeyPath,
L"\\Registry\\Machine\\System\\CurrentControlSet\\Control\\GraphicsDrivers\\UseNewKey");
802 RtlInitUnicodeString(&KeyPath,
L"\\Registry\\Machine\\System\\CurrentControlSet\\Control\\GraphicsDrivers\\DisableEmulator");
813 VideoPortDisableX86Emulator =
TRUE;
816 DPRINT1(
"Using %s\n", VideoPortDisableX86Emulator ?
"V86 mode" :
"x86 emulator");
903 RtlInitUnicodeString(&KeyPath,
L"\\Registry\\Machine\\System\\CurrentControlSet\\Control\\GraphicsDrivers\\BaseVideo");
920 ERR_(VIDEOPRT,
"Failed to create the BaseVideo key (0x%x)\n",
Status);
946 TRACE_(VIDEOPRT,
"VideoPortInitialize\n");
948 if (!FirstInitialization)
950 FirstInitialization =
TRUE;
959 ERR_(VIDEOPRT,
"IntInitializeInt10(FirstInit) failed: 0x%lx\n",
Status);
967 ERR_(VIDEOPRT,
"Invalid HwInitializationData\n");
975 ERR_(VIDEOPRT,
"Invalid HwInitializationData\n");
986 INFO_(VIDEOPRT,
"We were loaded by a Windows NT miniport driver.\n");
990 INFO_(VIDEOPRT,
"We were loaded by a Windows 2000 miniport driver.\n");
994 INFO_(VIDEOPRT,
"We were loaded by a Windows XP or later miniport driver.\n");
998 ERR_(VIDEOPRT,
"Invalid HwInitializationData size %lu (expected %lu, %lu or %lu)\n",
1022 INFO_(VIDEOPRT,
"The miniport is a PnP miniport driver\n");
1029 INFO_(VIDEOPRT,
"Legacy detection for adapter interface %d\n",
1034 LegacyDetection =
TRUE;
1053 ERR_(VIDEOPRT,
"IoAllocateDriverObjectExtension failed 0x%x\n",
Status);
1112 if (LegacyDetection)
1130 ERR_(VIDEOPRT,
"IntVideoPortCreateAdapterDeviceObject returned 0x%x\n",
Status);
1136 ERR_(VIDEOPRT,
"IntVideoPortFindAdapter returned 0x%x\n",
Status);
1164 DebugPrintLevel =
Error;
1184 INFO_(VIDEOPRT,
"VideoPortLogError ErrorCode %d (0x%x) UniqueId %lu (0x%lx)\n",
1187 INFO_(VIDEOPRT,
"Vrp->IoControlCode %lu (0x%lx)\n", Vrp->IoControlCode, Vrp->IoControlCode);
1220 INFO_(VIDEOPRT,
"Found registry value for name %S: type %d, length %d\n",
1250 TRACE_(VIDEOPRT,
"VideoPortGetRegistryParameters ParameterName %S, RegPath: %wZ\n",
1253 Context.HwDeviceExtension = HwDeviceExtension;
1255 Context.HwGetRegistryRoutine = GetRegistryRoutine;
1268 WARN_(VIDEOPRT,
"VideoPortGetRegistryParameters could not find the "
1269 "requested parameter\n");
1273 if (IsParameterFileName)
1297 TRACE_(VIDEOPRT,
"VideoPortSetRegistryParameters ParameterName %S, RegPath: %wZ\n",
1308 WARN_(VIDEOPRT,
"VideoPortSetRegistryParameters error 0x%x\n",
Status);
1324 TRACE_(VIDEOPRT,
"VideoPortGetVgaStatus\n");
1356 TRACE_(VIDEOPRT,
"VideoPortGetRomImage(HwDeviceExtension 0x%X Length 0x%X)\n",
1357 HwDeviceExtension,
Length);
1362 if (RomImageBuffer !=
NULL)
1365 RomImageBuffer =
NULL;
1380 if (RomImageBuffer !=
NULL)
1384 if (RomImageBuffer ==
NULL)
1396 RomImageBuffer =
NULL;
1398 return RomImageBuffer;
1417 TRACE_(VIDEOPRT,
"VideoPortScanRom RomBase %p RomLength 0x%x String %s\n", RomBase, RomLength,
String);
1421 for (SearchLocation = RomBase;
1422 !
Found && SearchLocation < RomBase + RomLength - StringLength;
1428 INFO_(VIDEOPRT,
"Match found at %p\n", SearchLocation);
1453 Ret = (*SynchronizeRoutine)(
Context);
1459 Ret = (*SynchronizeRoutine)(
Context);
1472 Ret = (*SynchronizeRoutine)(
Context);
1497 UCHAR LastMonitorID[10];
1503 INFO_(VIDEOPRT,
"Starting child device probe\n");
1507 WARN_(VIDEOPRT,
"Miniport's HwGetVideoChildDescriptor is NULL!\n");
1513 ERR_(VIDEOPRT,
"FIXME: Support calling VideoPortEnumerateChildren again!\n");
1527 &ChildDeviceObject);
1543 ChildEnumInfo.
Size =
sizeof(ChildEnumInfo);
1576 if (bHaveLastMonitorID)
1581 INFO_(VIDEOPRT,
"Found identical Monitor ID two times, stopping enumeration\n");
1589 bHaveLastMonitorID =
TRUE;
1603 WARN_(VIDEOPRT,
"Child device %d is invalid!\n", ChildEnumInfo.
ChildIndex);
1609 INFO_(VIDEOPRT,
"End of child enumeration! (%d children enumerated)\n",
i - 1);
1615 WARN_(VIDEOPRT,
"HwGetVideoChildDescriptor returned unknown status code 0x%x!\n",
Status);
1624 INFO_(VIDEOPRT,
"Monitor device enumerated! (ChildId = 0x%x)\n", ChildExtension->
ChildId);
1627 INFO_(VIDEOPRT,
"%02x %02x %02x %02x %02x %02x %02x %02x\n",
1628 p[
j + 0],
p[
j + 1],
p[
j + 2],
p[
j + 3],
1629 p[
j + 4],
p[
j + 5],
p[
j + 6],
p[
j + 7]);
1638 ERR_(VIDEOPRT,
"HwGetVideoChildDescriptor returned unsupported type: %d\n", ChildExtension->
ChildType);
1642 ChildDeviceObject->
Flags &= ~DO_DEVICE_INITIALIZING;
1685 ASSERT(SecondaryDeviceExtension);
1696 DPRINT1(
"Calling VideoPortCreateSecondaryDisplay for InstanceId %lu\n",
1708 DPRINT1(
"IntVideoPortCreateAdapterDeviceObject() failed with status 0x%08x\n",
Status);
1747 TRACE_(VIDEOPRT,
"VideoPortGetAssociatedDeviceExtension\n");
1749 if (!DeviceExtension)
1771 VpOsVersionInfo->MajorVersion =
Version.dwMajorVersion;
1772 VpOsVersionInfo->MinorVersion =
Version.dwMinorVersion;
1773 VpOsVersionInfo->BuildNumber =
Version.dwBuildNumber;
1774 VpOsVersionInfo->ServicePackMajor =
Version.wServicePackMajor;
1775 VpOsVersionInfo->ServicePackMinor =
Version.wServicePackMinor;
1780 VpOsVersionInfo->MajorVersion = 5;
1781 VpOsVersionInfo->MinorVersion = 0;
1782 VpOsVersionInfo->BuildNumber = 2195;
1783 VpOsVersionInfo->ServicePackMajor = 4;
1784 VpOsVersionInfo->ServicePackMinor = 0;
1814 TRACE_(VIDEOPRT,
"VideoPortCheckForDeviceExistence\n");
1830 &GUID_PCI_DEVICE_PRESENT_INTERFACE;
1835 WARN_(VIDEOPRT,
"IopInitiatePnpIrp() failed! (Status 0x%lx)\n",
Status);
1845 VendorId, DeviceId, RevisionId,
1846 SubVendorId, SubSystemId, PciFlags);
1850 return DevicePresent;
1879 TRACE_(VIDEOPRT,
"VideoPortQueryPerformanceCounter\n");
1894 TRACE_(VIDEOPRT,
"VideoPortAcquireDeviceLock\n");
1910 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 RTL_CONSTANT_STRING(s)
#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
NTSTATUS IntInitializeInt10(VOID)
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 OBJ_KERNEL_HANDLE
#define OBJ_CASE_INSENSITIVE
#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::@4326::@4352 QueryInterface
union _IO_STACK_LOCATION::@1680 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 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)
VOID __cdecl VideoPortDebugPrint(_In_ VIDEO_DEBUG_LEVEL DebugPrintLevel, _In_ PSTR DebugMessage, _In_ ...)
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)
static BOOLEAN IntIsVgaSaveDriver(_In_ PDRIVER_OBJECT DriverObject)
UCHAR NTAPI VideoPortGetCurrentIrql(VOID)
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)
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
NTSYSAPI NTSTATUS WINAPI RtlWriteRegistryValue(ULONG, PCWSTR, PCWSTR, ULONG, PVOID, ULONG)
NTSYSAPI NTSTATUS WINAPI RtlQueryRegistryValues(ULONG, PCWSTR, PRTL_QUERY_REGISTRY_TABLE, PVOID, PVOID)
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