63 WCHAR DeviceBuffer[20];
65 WCHAR SymlinkBuffer[20];
88 ERR_(VIDEOPRT,
"Failed to create DEVICEMAP registry entry: 0x%X\n",
Status);
100 ERR_(VIDEOPRT,
"Failed to write MaxObjectNumber: 0x%X\n",
Status);
111 ERR_(VIDEOPRT,
"Failed to create symbolic link: 0x%X\n",
Status);
131 if (NtHeader ==
NULL)
152 PVOID HwDeviceExtension =
173 WCHAR DeviceBuffer[20];
187 WARN_(VIDEOPRT,
"Can't find free device number\n");
199 INFO_(VIDEOPRT,
"HwDeviceExtension size is: 0x%x\n",
215 WARN_(VIDEOPRT,
"IoCreateDevice call failed with status 0x%08x\n",
Status);
246 WARN_(VIDEOPRT,
"IntCreateRegistryPath() call failed with status 0x%08x\n",
Status);
261 WARN_(VIDEOPRT,
"Couldn't get an information from bus driver. We will try to\n"
262 "use legacy detection method, but even that doesn't mean that\n"
291 SlotNumber.u.bits.DeviceNumber = (PciSlotNumber >> 16) & 0xFFFF;
292 SlotNumber.u.bits.FunctionNumber = PciSlotNumber & 0xFFFF;
314 ERR_(VIDEOPRT,
"IntCreateNewRegistryPath() failed with status 0x%08x\n",
Status);
321 (*DeviceObject)->Flags &= ~DO_DEVICE_INITIALIZING;
327 ERR_(VIDEOPRT,
"IntVideoPortAddDeviceMapLink() failed with status 0x%08x\n",
Status);
331 if (DisplayNumber == 0)
464 LegacyDetection =
TRUE;
483 DPRINT(
"Bus Type %lu, Number %lu\n",
524 ERR_(VIDEOPRT,
"HwFindAdapter call failed with error 0x%X\n", vpStatus);
548 ERR_(VIDEOPRT,
"IntVideoPortSetupTimer failed\n");
562 INFO_(VIDEOPRT,
"STATUS_SUCCESS\n");
727 ERR_(VIDEOPRT,
"Failed to create the BaseVideo key (0x%x)\n",
Status);
751 static BOOLEAN FirstInitialization;
753 TRACE_(VIDEOPRT,
"VideoPortInitialize\n");
755 if (!FirstInitialization)
757 FirstInitialization =
TRUE;
766 ERR_(VIDEOPRT,
"Invalid HwInitializationData\n");
774 ERR_(VIDEOPRT,
"Invalid HwInitializationData\n");
785 INFO_(VIDEOPRT,
"We were loaded by a Windows NT miniport driver.\n");
789 INFO_(VIDEOPRT,
"We were loaded by a Windows 2000 miniport driver.\n");
793 INFO_(VIDEOPRT,
"We were loaded by a Windows XP or later miniport driver.\n");
797 ERR_(VIDEOPRT,
"Invalid HwInitializationData size %lu (expected %lu, %lu or %lu)\n",
821 INFO_(VIDEOPRT,
"The miniport is a PnP miniport driver\n");
828 INFO_(VIDEOPRT,
"Legacy detection for adapter interface %d\n",
833 LegacyDetection =
TRUE;
852 ERR_(VIDEOPRT,
"IoAllocateDriverObjectExtension failed 0x%x\n",
Status);
929 ERR_(VIDEOPRT,
"IntVideoPortCreateAdapterDeviceObject returned 0x%x\n",
Status);
935 ERR_(VIDEOPRT,
"IntVideoPortFindAdapter returned 0x%x\n",
Status);
962 DebugPrintLevel =
Error;
982 INFO_(VIDEOPRT,
"VideoPortLogError ErrorCode %d (0x%x) UniqueId %lu (0x%lx)\n",
985 INFO_(VIDEOPRT,
"Vrp->IoControlCode %lu (0x%lx)\n", Vrp->IoControlCode, Vrp->IoControlCode);
1018 INFO_(VIDEOPRT,
"Found registry value for name %S: type %d, length %d\n",
1048 TRACE_(VIDEOPRT,
"VideoPortGetRegistryParameters ParameterName %S, RegPath: %wZ\n",
1051 Context.HwDeviceExtension = HwDeviceExtension;
1053 Context.HwGetRegistryRoutine = GetRegistryRoutine;
1066 WARN_(VIDEOPRT,
"VideoPortGetRegistryParameters could not find the "
1067 "requested parameter\n");
1071 if (IsParameterFileName)
1095 TRACE_(VIDEOPRT,
"VideoPortSetRegistryParameters ParameterName %S, RegPath: %wZ\n",
1106 WARN_(VIDEOPRT,
"VideoPortSetRegistryParameters error 0x%x\n",
Status);
1122 TRACE_(VIDEOPRT,
"VideoPortGetVgaStatus\n");
1154 TRACE_(VIDEOPRT,
"VideoPortGetRomImage(HwDeviceExtension 0x%X Length 0x%X)\n",
1155 HwDeviceExtension,
Length);
1160 if (RomImageBuffer !=
NULL)
1163 RomImageBuffer =
NULL;
1178 if (RomImageBuffer !=
NULL)
1184 if (RomImageBuffer ==
NULL)
1193 return RomImageBuffer;
1212 TRACE_(VIDEOPRT,
"VideoPortScanRom RomBase %p RomLength 0x%x String %s\n", RomBase, RomLength,
String);
1216 for (SearchLocation = RomBase;
1217 !
Found && SearchLocation < RomBase + RomLength - StringLength;
1223 INFO_(VIDEOPRT,
"Match found at %p\n", SearchLocation);
1248 Ret = (*SynchronizeRoutine)(
Context);
1254 Ret = (*SynchronizeRoutine)(
Context);
1267 Ret = (*SynchronizeRoutine)(
Context);
1292 UCHAR LastMonitorID[10];
1298 INFO_(VIDEOPRT,
"Starting child device probe\n");
1302 WARN_(VIDEOPRT,
"Miniport's HwGetVideoChildDescriptor is NULL!\n");
1308 ERR_(VIDEOPRT,
"FIXME: Support calling VideoPortEnumerateChildren again!\n");
1322 &ChildDeviceObject);
1338 ChildEnumInfo.
Size =
sizeof(ChildEnumInfo);
1371 if (bHaveLastMonitorID)
1376 INFO_(VIDEOPRT,
"Found identical Monitor ID two times, stopping enumeration\n");
1384 bHaveLastMonitorID =
TRUE;
1398 WARN_(VIDEOPRT,
"Child device %d is invalid!\n", ChildEnumInfo.
ChildIndex);
1404 INFO_(VIDEOPRT,
"End of child enumeration! (%d children enumerated)\n",
i - 1);
1410 WARN_(VIDEOPRT,
"HwGetVideoChildDescriptor returned unknown status code 0x%x!\n",
Status);
1419 INFO_(VIDEOPRT,
"Monitor device enumerated! (ChildId = 0x%x)\n", ChildExtension->
ChildId);
1422 INFO_(VIDEOPRT,
"%02x %02x %02x %02x %02x %02x %02x %02x\n",
1423 p[
j + 0],
p[
j + 1],
p[
j + 2],
p[
j + 3],
1424 p[
j + 4],
p[
j + 5],
p[
j + 6],
p[
j + 7]);
1433 ERR_(VIDEOPRT,
"HwGetVideoChildDescriptor returned unsupported type: %d\n", ChildExtension->
ChildType);
1437 ChildDeviceObject->
Flags &= ~DO_DEVICE_INITIALIZING;
1480 ASSERT(SecondaryDeviceExtension);
1491 DPRINT1(
"Calling VideoPortCreateSecondaryDisplay for InstanceId %lu\n",
1503 DPRINT1(
"IntVideoPortCreateAdapterDeviceObject() failed with status 0x%08x\n",
Status);
1542 TRACE_(VIDEOPRT,
"VideoPortGetAssociatedDeviceExtension\n");
1544 if (!DeviceExtension)
1566 VpOsVersionInfo->MajorVersion =
Version.dwMajorVersion;
1567 VpOsVersionInfo->MinorVersion =
Version.dwMinorVersion;
1568 VpOsVersionInfo->BuildNumber =
Version.dwBuildNumber;
1569 VpOsVersionInfo->ServicePackMajor =
Version.wServicePackMajor;
1570 VpOsVersionInfo->ServicePackMinor =
Version.wServicePackMinor;
1575 VpOsVersionInfo->MajorVersion = 5;
1576 VpOsVersionInfo->MinorVersion = 0;
1577 VpOsVersionInfo->BuildNumber = 2195;
1578 VpOsVersionInfo->ServicePackMajor = 4;
1579 VpOsVersionInfo->ServicePackMinor = 0;
1609 TRACE_(VIDEOPRT,
"VideoPortCheckForDeviceExistence\n");
1625 &GUID_PCI_DEVICE_PRESENT_INTERFACE;
1630 WARN_(VIDEOPRT,
"IopInitiatePnpIrp() failed! (Status 0x%lx)\n",
Status);
1640 VendorId, DeviceId, RevisionId,
1641 SubVendorId, SubSystemId, PciFlags);
1645 return DevicePresent;
1674 TRACE_(VIDEOPRT,
"VideoPortQueryPerformanceCounter\n");
1689 TRACE_(VIDEOPRT,
"VideoPortAcquireDeviceLock\n");
1705 TRACE_(VIDEOPRT,
"VideoPortReleaseDeviceLock\n");
static USHORT USHORT * NewLength
static KSYNCHRONIZE_ROUTINE SynchronizeRoutine
PRTL_UNICODE_STRING_BUFFER Path
ACPI_SIZE strlen(const char *String)
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
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
enum _INTERFACE_TYPE INTERFACE_TYPE
_CONST_RETURN wchar_t *__cdecl wcsstr(_In_z_ const wchar_t *_Str, _In_z_ const wchar_t *_SubStr)
#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)
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)
static OUT PIO_STATUS_BLOCK IoStatusBlock
#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)
#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
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
NTSTATUS NTAPI ObCloseHandle(IN HANDLE Handle, IN KPROCESSOR_MODE AccessMode)
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)
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
_CRTIMP wchar_t *__cdecl wcsncpy(wchar_t *_Dest, const wchar_t *_Source, size_t _Count)
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
#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::@3983::@4009 QueryInterface
union _IO_STACK_LOCATION::@1584 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 FASTCALL IntDetachFromCSRSS(PKPROCESS *CallingProcess, PKAPC_STATE ApcState)
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)
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)
VOID FASTCALL IntAttachToCSRSS(PKPROCESS *CallingProcess, PKAPC_STATE ApcState)
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)
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)
KMUTEX VideoPortInt10Mutex
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)
NTSTATUS NTAPI IntVideoPortEnumerateChildren(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
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)
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