229 if ((
i > 0) && (--
i == 0))
246 if ((
i > 0) && (--
i == 0))
354 ERR_(VIDEOPRT,
"IntVideoPortCreateAdapterDeviceObject() failed with status 0x%lx\n",
Status);
377 TRACE_(VIDEOPRT,
"IntVideoPortDispatchOpen\n");
385 INFO_(VIDEOPRT,
"Referencing CSRSS\n");
393 ERR_(VIDEOPRT,
"IntInitializeVideoAddressSpace() failed: 0x%lx\n",
Status);
440 TRACE_(VIDEOPRT,
"IntVideoPortDispatchClose\n");
455 return "IOCTL_VIDEO_ENABLE_VDM";
457 return "IOCTL_VIDEO_DISABLE_VDM";
459 return "IOCTL_VIDEO_REGISTER_VDM";
461 return "IOCTL_VIDEO_SET_OUTPUT_DEVICE_POWER_STATE";
463 return "IOCTL_VIDEO_GET_OUTPUT_DEVICE_POWER_STATE";
465 return "IOCTL_VIDEO_MONITOR_DEVICE";
467 return "IOCTL_VIDEO_ENUM_MONITOR_PDO";
469 return "IOCTL_VIDEO_INIT_WIN32K_CALLBACKS";
471 return "IOCTL_VIDEO_HANDLE_VIDEOPARAMETERS";
473 return "IOCTL_VIDEO_IS_VGA_DEVICE";
475 return "IOCTL_VIDEO_USE_DEVICE_IN_SESSION";
477 return "IOCTL_VIDEO_PREPARE_FOR_EARECOVERY";
479 return "IOCTL_VIDEO_SAVE_HARDWARE_STATE";
481 return "IOCTL_VIDEO_RESTORE_HARDWARE_STATE";
483 return "IOCTL_VIDEO_QUERY_AVAIL_MODES";
485 return "IOCTL_VIDEO_QUERY_NUM_AVAIL_MODES";
487 return "IOCTL_VIDEO_QUERY_CURRENT_MODE";
489 return "IOCTL_VIDEO_SET_CURRENT_MODE";
491 return "IOCTL_VIDEO_RESET_DEVICE";
493 return "IOCTL_VIDEO_LOAD_AND_SET_FONT";
495 return "IOCTL_VIDEO_SET_PALETTE_REGISTERS";
497 return "IOCTL_VIDEO_SET_COLOR_REGISTERS";
499 return "IOCTL_VIDEO_ENABLE_CURSOR";
501 return "IOCTL_VIDEO_DISABLE_CURSOR";
503 return "IOCTL_VIDEO_SET_CURSOR_ATTR";
505 return "IOCTL_VIDEO_QUERY_CURSOR_ATTR";
507 return "IOCTL_VIDEO_SET_CURSOR_POSITION";
509 return "IOCTL_VIDEO_QUERY_CURSOR_POSITION";
511 return "IOCTL_VIDEO_ENABLE_POINTER";
513 return "IOCTL_VIDEO_DISABLE_POINTER";
515 return "IOCTL_VIDEO_SET_POINTER_ATTR";
517 return "IOCTL_VIDEO_QUERY_POINTER_ATTR";
519 return "IOCTL_VIDEO_SET_POINTER_POSITION";
521 return "IOCTL_VIDEO_QUERY_POINTER_POSITION";
523 return "IOCTL_VIDEO_QUERY_POINTER_CAPABILITIES";
525 return "IOCTL_VIDEO_GET_BANK_SELECT_CODE";
527 return "IOCTL_VIDEO_MAP_VIDEO_MEMORY";
529 return "IOCTL_VIDEO_UNMAP_VIDEO_MEMORY";
531 return "IOCTL_VIDEO_QUERY_PUBLIC_ACCESS_RANGES";
533 return "IOCTL_VIDEO_FREE_PUBLIC_ACCESS_RANGES";
535 return "IOCTL_VIDEO_QUERY_COLOR_CAPABILITIES";
537 return "IOCTL_VIDEO_SET_POWER_MANAGEMENT";
539 return "IOCTL_VIDEO_GET_POWER_MANAGEMENT";
541 return "IOCTL_VIDEO_SHARE_VIDEO_MEMORY";
543 return "IOCTL_VIDEO_UNSHARE_VIDEO_MEMORY";
545 return "IOCTL_VIDEO_SET_COLOR_LUT_DATA";
547 return "IOCTL_VIDEO_GET_CHILD_STATE";
549 return "IOCTL_VIDEO_VALIDATE_CHILD_STATE_CONFIGURATION";
551 return "IOCTL_VIDEO_SET_CHILD_STATE_CONFIGURATION";
553 return "IOCTL_VIDEO_SWITCH_DUALVIEW";
555 return "IOCTL_VIDEO_SET_BANK_POSITION";
557 return "IOCTL_VIDEO_QUERY_SUPPORTED_BRIGHTNESS";
559 return "IOCTL_VIDEO_QUERY_DISPLAY_BRIGHTNESS";
561 return "IOCTL_VIDEO_SET_DISPLAY_BRIGHTNESS";
564 return "<unknown ioctl code>";
581 ERR_(VIDEOPRT,
"Buffer too small for VIDEO_DEVICE_SESSION_STATUS: %lx\n",
590 if (SessionState->bEnable)
597 SessionState->bSuccess =
TRUE;
601 ERR_(VIDEOPRT,
"Requested to set session, but session is already set to: 0x%lx\n",
603 SessionState->bSuccess =
FALSE;
613 SessionState->bSuccess =
TRUE;
617 ERR_(VIDEOPRT,
"Requested to reset session, but session is not set\n");
618 SessionState->bSuccess =
FALSE;
638 ERR_(VIDEOPRT,
"Buffer too small for VIDEO_WIN32K_CALLBACKS: %lx\n",
647 Win32kCallbacks->bACPI =
FALSE;
649 Win32kCallbacks->DualviewFlags = 0;
665 TRACE_(VIDEOPRT,
"VideoPortForwardDeviceControl\n");
687 INFO_(VIDEOPRT,
"- Returned status: %x\n",
Irp->IoStatus.Status);
690 switch (
Irp->IoStatus.Status)
731 TRACE_(VIDEOPRT,
"IntVideoPortDispatchDeviceControl\n");
770 WARN_(VIDEOPRT,
"- IOCTL_VIDEO_*_VDM are UNIMPLEMENTED!\n");
776 WARN_(VIDEOPRT,
"- IOCTL_VIDEO_GET/SET_OUTPUT_DEVICE_POWER_STATE are UNIMPLEMENTED!\n");
782 WARN_(VIDEOPRT,
"- IOCTL_VIDEO_GET/SET_POWER_MANAGEMENT are UNIMPLEMENTED!\n");
789 WARN_(VIDEOPRT,
"- IOCTL_VIDEO_*_BRIGHTNESS are UNIMPLEMENTED!\n");
794 WARN_(VIDEOPRT,
"- IOCTL_VIDEO_ENUM_MONITOR_PDO is UNIMPLEMENTED!\n");
799 INFO_(VIDEOPRT,
"- IOCTL_VIDEO_INIT_WIN32K_CALLBACKS\n");
801 Irp->AssociatedIrp.SystemBuffer,
803 &
Irp->IoStatus.Information);
807 WARN_(VIDEOPRT,
"- IOCTL_VIDEO_IS_VGA_DEVICE is UNIMPLEMENTED!\n");
812 INFO_(VIDEOPRT,
"- IOCTL_VIDEO_USE_DEVICE_IN_SESSION\n");
814 Irp->AssociatedIrp.SystemBuffer,
816 &
Irp->IoStatus.Information);
820 INFO_(VIDEOPRT,
"- IOCTL_VIDEO_PREPARE_FOR_EARECOVERY\n");
841 INFO_(VIDEOPRT,
"- Returned status: 0x%x\n",
Status);
872 ULONG ResourceListSize;
892 INFO_(VIDEOPRT,
"InterfaceType %u BusNumber List %u Device BusNumber %u Version %u Revision %u\n",
916 INFO_(VIDEOPRT,
"Interrupt level: 0x%x Interrupt Vector: 0x%x\n",
936 if (
Irp->PendingReturned)
956 WARN_(VIDEOPRT,
"Skipping child enumeration because device is not opened");
970 CurrentEntry = CurrentEntry->
Flink;
974 return Irp->IoStatus.Status;
980 DeviceRelations->
Count =
i;
993 CurrentEntry = CurrentEntry->
Flink;
996 INFO_(VIDEOPRT,
"Reported %d PDOs\n",
i);
1049 Irp->IoStatus.Information = 0;
1086 Irp->IoStatus.Information = 0;
1094 Irp->IoStatus.Information = 0;
1115 if (CommonExtension->
Fdo)
1133 Irp->IoStatus.Information = 0;
static PIO_STACK_LOCATION IoGetCurrentIrpStackLocation(PIRP Irp)
#define InterlockedIncrement
#define InterlockedDecrement
static const COLUMN_LIST Columns[]
PDEVICE_OBJECT PhysicalDeviceObject
NTSTATUS NTAPI IntVideoPortDispatchPdoPnp(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES ObjectAttributes
#define STATUS_NOT_IMPLEMENTED
#define ERROR_DEV_NOT_EXIST
#define ERROR_NOT_ENOUGH_MEMORY
#define ERROR_INSUFFICIENT_BUFFER
#define ERROR_INVALID_FUNCTION
#define NT_SUCCESS(StatCode)
#define ERROR_INVALID_PARAMETER
_In_ PIO_STACK_LOCATION IrpSp
#define InterlockedExchangePointer(Target, Value)
#define IsListEmpty(ListHead)
#define KeRaiseIrql(irql, oldIrql)
#define KeWaitForSingleObject(pEvt, foo, a, b, c)
#define KeInitializeEvent(pEvt, foo, foo2)
#define KeLowerIrql(oldIrql)
#define KeSetEvent(pEvt, foo, foo2)
#define KeGetCurrentIrql()
#define KeDelayExecutionThread(mode, foo, t)
#define ExAllocatePool(type, size)
_Must_inspect_result_ __in WDFIOTARGET __in_opt WDFREQUEST __in ULONG Ioctl
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
#define KeGetCurrentThread
#define CmResourceTypeInterrupt
VOID NTAPI InbvNotifyDisplayOwnershipLost(_In_ INBV_RESET_DISPLAY_PARAMETERS Callback)
BOOLEAN NTAPI InbvCheckDisplayOwnership(VOID)
static ULONG ResourceCount
#define OBJ_KERNEL_HANDLE
#define EXCEPTION_EXECUTE_HANDLER
#define LOW_REALTIME_PRIORITY
NTSTATUS NTAPI IntInitializeVideoAddressSpace(VOID)
#define InterlockedCompareExchange
#define IoSetCompletionRoutine(_Irp, _CompletionRoutine, _Context, _InvokeOnSuccess, _InvokeOnError, _InvokeOnCancel)
_Inout_opt_ PDEVICE_OBJECT _Inout_opt_ PDEVICE_OBJECT _Inout_opt_ PDEVICE_OBJECT _Inout_opt_ PCM_RESOURCE_LIST * AllocatedResources
NTSYSAPI VOID NTAPI RtlFreeUnicodeString(PUNICODE_STRING UnicodeString)
#define IOCTL_VIDEO_SWITCH_DUALVIEW
#define IOCTL_VIDEO_SET_POWER_MANAGEMENT
#define IOCTL_VIDEO_SHARE_VIDEO_MEMORY
#define IOCTL_VIDEO_MAP_VIDEO_MEMORY
#define IOCTL_VIDEO_ENABLE_POINTER
#define IOCTL_VIDEO_IS_VGA_DEVICE
#define IOCTL_VIDEO_ENABLE_VDM
#define IOCTL_VIDEO_SET_PALETTE_REGISTERS
#define IOCTL_VIDEO_SET_POINTER_ATTR
#define IOCTL_VIDEO_UNMAP_VIDEO_MEMORY
#define IOCTL_VIDEO_HANDLE_VIDEOPARAMETERS
#define IOCTL_VIDEO_USE_DEVICE_IN_SESSION
#define IOCTL_VIDEO_QUERY_CURSOR_ATTR
VOID(NTAPI * PVIDEO_WIN32K_CALLOUT)(_In_ PVOID Params)
#define IOCTL_VIDEO_QUERY_CURSOR_POSITION
#define IOCTL_VIDEO_SET_CURSOR_POSITION
#define IOCTL_VIDEO_QUERY_CURRENT_MODE
@ VideoFindAdapterCallout
#define IOCTL_VIDEO_SET_BANK_POSITION
#define IOCTL_VIDEO_MONITOR_DEVICE
#define IOCTL_VIDEO_ENABLE_CURSOR
#define IOCTL_VIDEO_DISABLE_CURSOR
#define IOCTL_VIDEO_GET_CHILD_STATE
#define IOCTL_VIDEO_GET_POWER_MANAGEMENT
#define IOCTL_VIDEO_SET_POINTER_POSITION
#define IOCTL_VIDEO_QUERY_DISPLAY_BRIGHTNESS
#define IOCTL_VIDEO_SET_CURRENT_MODE
#define IOCTL_VIDEO_SET_DISPLAY_BRIGHTNESS
#define IOCTL_VIDEO_FREE_PUBLIC_ACCESS_RANGES
#define IOCTL_VIDEO_GET_BANK_SELECT_CODE
#define IOCTL_VIDEO_PREPARE_FOR_EARECOVERY
#define IOCTL_VIDEO_QUERY_POINTER_CAPABILITIES
#define IOCTL_VIDEO_SET_COLOR_REGISTERS
#define IOCTL_VIDEO_VALIDATE_CHILD_STATE_CONFIGURATION
#define IOCTL_VIDEO_SET_COLOR_LUT_DATA
#define IOCTL_VIDEO_LOAD_AND_SET_FONT
#define IOCTL_VIDEO_RESET_DEVICE
#define IOCTL_VIDEO_QUERY_POINTER_POSITION
#define IOCTL_VIDEO_SET_CURSOR_ATTR
struct _VIDEO_WIN32K_CALLBACKS VIDEO_WIN32K_CALLBACKS
struct _VIDEO_DEVICE_SESSION_STATUS VIDEO_DEVICE_SESSION_STATUS
#define IOCTL_VIDEO_SET_CHILD_STATE_CONFIGURATION
#define IOCTL_VIDEO_DISABLE_VDM
#define IOCTL_VIDEO_DISABLE_POINTER
#define IOCTL_VIDEO_GET_OUTPUT_DEVICE_POWER_STATE
#define IOCTL_VIDEO_REGISTER_VDM
#define IOCTL_VIDEO_QUERY_POINTER_ATTR
#define IOCTL_VIDEO_ENUM_MONITOR_PDO
#define IOCTL_VIDEO_UNSHARE_VIDEO_MEMORY
#define IOCTL_VIDEO_SET_OUTPUT_DEVICE_POWER_STATE
#define IOCTL_VIDEO_QUERY_AVAIL_MODES
#define IOCTL_VIDEO_INIT_WIN32K_CALLBACKS
#define IOCTL_VIDEO_QUERY_COLOR_CAPABILITIES
#define IOCTL_VIDEO_QUERY_NUM_AVAIL_MODES
#define IOCTL_VIDEO_SAVE_HARDWARE_STATE
#define IOCTL_VIDEO_QUERY_SUPPORTED_BRIGHTNESS
#define IOCTL_VIDEO_RESTORE_HARDWARE_STATE
#define IOCTL_VIDEO_QUERY_PUBLIC_ACCESS_RANGES
#define RTL_CONSTANT_OBJECT_ATTRIBUTES(n, a)
#define IRP_MN_SURPRISE_REMOVAL
#define IoSkipCurrentIrpStackLocation(Irp)
#define IoCopyCurrentIrpStackLocationToNext(Irp)
PVOID NTAPI IoGetDriverObjectExtension(IN PDRIVER_OBJECT DriverObject, IN PVOID ClientIdentificationAddress)
#define IoCompleteRequest
BOOLEAN FASTCALL KeTestSpinLock(IN PKSPIN_LOCK SpinLock)
VOID NTAPI PoStartNextPowerIrp(IN PIRP Irp)
ULONG NTAPI PsGetCurrentProcessSessionId(VOID)
NTSTATUS NTAPI PsCreateSystemThread(OUT PHANDLE ThreadHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes, IN HANDLE ProcessHandle, IN PCLIENT_ID ClientId, IN PKSTART_ROUTINE StartRoutine, IN PVOID StartContext)
#define STATUS_DEVICE_DOES_NOT_EXIST
NTSTATUS NTAPI ObCloseHandle(IN HANDLE Handle, IN KPROCESSOR_MODE AccessMode)
PPCI_DRIVER_EXTENSION DriverExtension
VOID NTAPI KeDetachProcess(VOID)
VOID NTAPI KeAttachProcess(IN PKPROCESS Process)
#define _SEH2_EXCEPT(...)
#define _SEH2_YIELD(__stmt)
#define IRP_MJ_DEVICE_CONTROL
VPAPI VP_STATUS NTAPI VideoPortEnumerateChildren(IN PVOID HwDeviceExtension, IN PVOID Reserved)
struct _STATUS_BLOCK * PSTATUS_BLOCK
#define KeAcquireSpinLockAtDpcLevel(SpinLock)
#define KeReleaseSpinLockFromDpcLevel(SpinLock)
#define STATUS_MORE_PROCESSING_REQUIRED
#define STATUS_BUFFER_TOO_SMALL
#define STATUS_BUFFER_OVERFLOW
base of all file and directory entries
CM_PARTIAL_RESOURCE_LIST PartialResourceList
INTERFACE_TYPE InterfaceType
CM_PARTIAL_RESOURCE_DESCRIPTOR PartialDescriptors[1]
PDEVICE_OBJECT Objects[1]
struct _IO_STACK_LOCATION::@1580::@1581 DeviceIoControl
union _IO_STACK_LOCATION::@1580 Parameters
struct _IO_STACK_LOCATION::@3979::@4004 QueryDeviceRelations
struct _LIST_ENTRY * Blink
struct _LIST_ENTRY * Flink
PDEVICE_OBJECT PhysicalDeviceObject
PDEVICE_OBJECT PhysicalDeviceObject
PCM_RESOURCE_LIST AllocatedResources
PDEVICE_OBJECT NextDeviceObject
VIDEO_PORT_DRIVER_EXTENSION * DriverExtension
LIST_ENTRY ChildDeviceList
CHAR POINTER_ALIGNMENT MiniPortDeviceExtension[1]
UNICODE_STRING RegistryPath
VIDEO_PORT_COMMON_EXTENSION Common
LIST_ENTRY HwResetListEntry
PSTATUS_BLOCK StatusBlock
VIDEO_WIN32K_CALLBACKS_PARAMS_TYPE CalloutType
KPRIORITY NTAPI KeSetPriorityThread(IN PKTHREAD Thread, IN KPRIORITY Priority)
#define FIELD_OFFSET(t, f)
#define RtlCopyMemory(Destination, Source, Length)
#define CONTAINING_RECORD(address, type, field)
#define STATUS_INVALID_PARAMETER
#define STATUS_UNSUCCESSFUL
#define STATUS_INSUFFICIENT_RESOURCES
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)
KSPIN_LOCK HwResetAdaptersLock
NTSTATUS NTAPI IntVideoPortEnumerateChildren(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
LIST_ENTRY HwResetAdaptersList
struct _VIDEO_PORT_DEVICE_EXTENSTION * PVIDEO_PORT_DEVICE_EXTENSION
_In_ PDEVICE_OBJECT DeviceObject
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ ULONG BufferLength
_Must_inspect_result_ _In_ PDRIVER_OBJECT DriverObject
_Must_inspect_result_ _In_ WDFDEVICE Fdo
_In_ WDFREQUEST _In_ size_t _In_ size_t _In_ ULONG IoControlCode
_In_ WDFREQUEST _In_ PIO_STACK_LOCATION Stack
_In_ WDFREQUEST _In_ NTSTATUS _In_ ULONG_PTR Information
_Must_inspect_result_ _In_ WDFIORESLIST _In_ PIO_RESOURCE_DESCRIPTOR Descriptor
_Must_inspect_result_ _In_ WDFCMRESLIST List
struct _KPROCESS * PKPROCESS
NTSTATUS NTAPI IntVideoPortDispatchClose(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
NTSTATUS NTAPI IntVideoPortForwardIrpAndWait(PDEVICE_OBJECT DeviceObject, PIRP Irp)
static BOOLEAN InbvMonitoring
NTSTATUS NTAPI IntVideoPortDispatchCleanup(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
static BOOLEAN NTAPI IntVideoPortResetDisplayParametersEx(_In_ ULONG Columns, _In_ ULONG Rows, _In_ BOOLEAN CalledByInbv)
NTSTATUS NTAPI IntVideoPortQueryBusRelations(PDEVICE_OBJECT DeviceObject, PIRP Irp)
VOID NTAPI IntVideoPortUnload(PDRIVER_OBJECT DriverObject)
NTSTATUS NTAPI IntVideoPortForwardIrpAndWaitCompletionRoutine(PDEVICE_OBJECT Fdo, PIRP Irp, PVOID Context)
NTSTATUS NTAPI IntVideoPortDispatchOpen(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
NTSTATUS NTAPI IntVideoPortDispatchDeviceControl(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
NTSTATUS NTAPI IntVideoPortDispatchFdoPnp(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
NTSTATUS NTAPI IntVideoPortDispatchSystemControl(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
PSTR IoctlName(ULONG Ioctl)
static NTSTATUS VideoPortForwardDeviceControl(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
static VOID VideoPortWin32kCallout(_In_ PVIDEO_WIN32K_CALLBACKS_PARAMS CallbackParams)
static NTSTATUS VideoPortUseDeviceInSession(_Inout_ PDEVICE_OBJECT DeviceObject, _Inout_ PVIDEO_DEVICE_SESSION_STATUS SessionState, _In_ ULONG BufferLength, _Out_ PULONG_PTR Information)
NTSTATUS NTAPI IntVideoPortDispatchPnp(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
static VOID NTAPI InbvMonitorThread(_In_ PVOID Context)
NTSTATUS NTAPI IntVideoPortPnPStartDevice(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
static PVIDEO_WIN32K_CALLOUT Win32kCallout
static BOOLEAN NTAPI IntVideoPortResetDisplayParameters(ULONG Columns, ULONG Rows)
static NTSTATUS IntVideoPortInbvCleanup(IN PDEVICE_OBJECT DeviceObject)
static NTSTATUS VideoPortInitWin32kCallbacks(_In_ PDEVICE_OBJECT DeviceObject, _Inout_ PVIDEO_WIN32K_CALLBACKS Win32kCallbacks, _In_ ULONG BufferLength, _Out_ PULONG_PTR Information)
NTSTATUS NTAPI IntVideoPortAddDevice(IN PDRIVER_OBJECT DriverObject, IN PDEVICE_OBJECT PhysicalDeviceObject)
static NTSTATUS IntVideoPortInbvInitialize(VOID)
static HANDLE InbvThreadHandle
NTSTATUS NTAPI IntVideoPortDispatchPower(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
NTSTATUS NTAPI IntVideoPortFilterResourceRequirements(IN PDEVICE_OBJECT DeviceObject, IN PIO_STACK_LOCATION IrpStack, IN PIRP Irp)
#define IRP_MN_CANCEL_STOP_DEVICE
#define IRP_MN_START_DEVICE
#define IRP_MN_REMOVE_DEVICE
#define IRP_MN_FILTER_RESOURCE_REQUIREMENTS
#define IRP_MN_QUERY_DEVICE_RELATIONS
#define IRP_MN_QUERY_STOP_DEVICE
#define IRP_MN_CANCEL_REMOVE_DEVICE
#define IRP_MN_STOP_DEVICE
#define IO_VIDEO_INCREMENT
#define IRP_MN_QUERY_POWER
#define IRP_MN_QUERY_REMOVE_DEVICE
_Requires_lock_held_ Interrupt _Releases_lock_ Interrupt _In_ _IRQL_restores_ KIRQL OldIrql
#define ObDereferenceObject
#define ObReferenceObject
#define PsGetCurrentProcess