229 if ((
i > 0) && (--
i == 0))
246 if ((
i > 0) && (--
i == 0))
374 TRACE_(VIDEOPRT,
"IntVideoPortDispatchOpen\n");
382 INFO_(VIDEOPRT,
"Referencing CSRSS\n");
390 ERR_(VIDEOPRT,
"IntInitializeVideoAddressSpace() failed: 0x%lx\n",
Status);
433 TRACE_(VIDEOPRT,
"IntVideoPortDispatchClose\n");
448 return "IOCTL_VIDEO_ENABLE_VDM";
450 return "IOCTL_VIDEO_DISABLE_VDM";
452 return "IOCTL_VIDEO_REGISTER_VDM";
454 return "IOCTL_VIDEO_SET_OUTPUT_DEVICE_POWER_STATE";
456 return "IOCTL_VIDEO_GET_OUTPUT_DEVICE_POWER_STATE";
458 return "IOCTL_VIDEO_MONITOR_DEVICE";
460 return "IOCTL_VIDEO_ENUM_MONITOR_PDO";
462 return "IOCTL_VIDEO_INIT_WIN32K_CALLBACKS";
464 return "IOCTL_VIDEO_HANDLE_VIDEOPARAMETERS";
466 return "IOCTL_VIDEO_IS_VGA_DEVICE";
468 return "IOCTL_VIDEO_USE_DEVICE_IN_SESSION";
470 return "IOCTL_VIDEO_PREPARE_FOR_EARECOVERY";
472 return "IOCTL_VIDEO_SAVE_HARDWARE_STATE";
474 return "IOCTL_VIDEO_RESTORE_HARDWARE_STATE";
476 return "IOCTL_VIDEO_QUERY_AVAIL_MODES";
478 return "IOCTL_VIDEO_QUERY_NUM_AVAIL_MODES";
480 return "IOCTL_VIDEO_QUERY_CURRENT_MODE";
482 return "IOCTL_VIDEO_SET_CURRENT_MODE";
484 return "IOCTL_VIDEO_RESET_DEVICE";
486 return "IOCTL_VIDEO_LOAD_AND_SET_FONT";
488 return "IOCTL_VIDEO_SET_PALETTE_REGISTERS";
490 return "IOCTL_VIDEO_SET_COLOR_REGISTERS";
492 return "IOCTL_VIDEO_ENABLE_CURSOR";
494 return "IOCTL_VIDEO_DISABLE_CURSOR";
496 return "IOCTL_VIDEO_SET_CURSOR_ATTR";
498 return "IOCTL_VIDEO_QUERY_CURSOR_ATTR";
500 return "IOCTL_VIDEO_SET_CURSOR_POSITION";
502 return "IOCTL_VIDEO_QUERY_CURSOR_POSITION";
504 return "IOCTL_VIDEO_ENABLE_POINTER";
506 return "IOCTL_VIDEO_DISABLE_POINTER";
508 return "IOCTL_VIDEO_SET_POINTER_ATTR";
510 return "IOCTL_VIDEO_QUERY_POINTER_ATTR";
512 return "IOCTL_VIDEO_SET_POINTER_POSITION";
514 return "IOCTL_VIDEO_QUERY_POINTER_POSITION";
516 return "IOCTL_VIDEO_QUERY_POINTER_CAPABILITIES";
518 return "IOCTL_VIDEO_GET_BANK_SELECT_CODE";
520 return "IOCTL_VIDEO_MAP_VIDEO_MEMORY";
522 return "IOCTL_VIDEO_UNMAP_VIDEO_MEMORY";
524 return "IOCTL_VIDEO_QUERY_PUBLIC_ACCESS_RANGES";
526 return "IOCTL_VIDEO_FREE_PUBLIC_ACCESS_RANGES";
528 return "IOCTL_VIDEO_QUERY_COLOR_CAPABILITIES";
530 return "IOCTL_VIDEO_SET_POWER_MANAGEMENT";
532 return "IOCTL_VIDEO_GET_POWER_MANAGEMENT";
534 return "IOCTL_VIDEO_SHARE_VIDEO_MEMORY";
536 return "IOCTL_VIDEO_UNSHARE_VIDEO_MEMORY";
538 return "IOCTL_VIDEO_SET_COLOR_LUT_DATA";
540 return "IOCTL_VIDEO_GET_CHILD_STATE";
542 return "IOCTL_VIDEO_VALIDATE_CHILD_STATE_CONFIGURATION";
544 return "IOCTL_VIDEO_SET_CHILD_STATE_CONFIGURATION";
546 return "IOCTL_VIDEO_SWITCH_DUALVIEW";
548 return "IOCTL_VIDEO_SET_BANK_POSITION";
550 return "IOCTL_VIDEO_QUERY_SUPPORTED_BRIGHTNESS";
552 return "IOCTL_VIDEO_QUERY_DISPLAY_BRIGHTNESS";
554 return "IOCTL_VIDEO_SET_DISPLAY_BRIGHTNESS";
557 return "<unknown ioctl code>";
574 ERR_(VIDEOPRT,
"Buffer too small for VIDEO_DEVICE_SESSION_STATUS: %lx\n",
583 if (SessionState->bEnable)
590 SessionState->bSuccess =
TRUE;
594 ERR_(VIDEOPRT,
"Requested to set session, but session is already set to: 0x%lx\n",
596 SessionState->bSuccess =
FALSE;
606 SessionState->bSuccess =
TRUE;
610 ERR_(VIDEOPRT,
"Requested to reset session, but session is not set\n");
611 SessionState->bSuccess =
FALSE;
629 ERR_(VIDEOPRT,
"Buffer too small for VIDEO_WIN32K_CALLBACKS: %lx\n",
638 Win32kCallbacks->bACPI =
FALSE;
640 Win32kCallbacks->DualviewFlags = 0;
656 TRACE_(VIDEOPRT,
"VideoPortForwardDeviceControl\n");
678 INFO_(VIDEOPRT,
"- Returned status: %x\n",
Irp->IoStatus.Status);
681 switch (
Irp->IoStatus.Status)
722 TRACE_(VIDEOPRT,
"IntVideoPortDispatchDeviceControl\n");
761 WARN_(VIDEOPRT,
"- IOCTL_VIDEO_*_VDM are UNIMPLEMENTED!\n");
767 WARN_(VIDEOPRT,
"- IOCTL_VIDEO_GET/SET_OUTPUT_DEVICE_POWER_STATE are UNIMPLEMENTED!\n");
773 WARN_(VIDEOPRT,
"- IOCTL_VIDEO_GET/SET_POWER_MANAGEMENT are UNIMPLEMENTED!\n");
780 WARN_(VIDEOPRT,
"- IOCTL_VIDEO_*_BRIGHTNESS are UNIMPLEMENTED!\n");
785 INFO_(VIDEOPRT,
"- IOCTL_VIDEO_INIT_WIN32K_CALLBACKS\n");
787 Irp->AssociatedIrp.SystemBuffer,
788 IrpStack->
Parameters.DeviceIoControl.InputBufferLength,
789 &
Irp->IoStatus.Information);
793 WARN_(VIDEOPRT,
"- IOCTL_VIDEO_IS_VGA_DEVICE is UNIMPLEMENTED!\n");
798 INFO_(VIDEOPRT,
"- IOCTL_VIDEO_USE_DEVICE_IN_SESSION\n");
800 Irp->AssociatedIrp.SystemBuffer,
801 IrpStack->
Parameters.DeviceIoControl.InputBufferLength,
802 &
Irp->IoStatus.Information);
806 INFO_(VIDEOPRT,
"- IOCTL_VIDEO_PREPARE_FOR_EARECOVERY\n");
827 INFO_(VIDEOPRT,
"- Returned status: 0x%x\n",
Status);
858 ULONG ResourceListSize;
878 INFO_(VIDEOPRT,
"InterfaceType %u BusNumber List %u Device BusNumber %u Version %u Revision %u\n",
902 INFO_(VIDEOPRT,
"Interrupt level: 0x%x Interrupt Vector: 0x%x\n",
922 if (
Irp->PendingReturned)
944 CurrentEntry = CurrentEntry->
Flink;
948 return Irp->IoStatus.Status;
954 DeviceRelations->
Count =
i;
967 CurrentEntry = CurrentEntry->
Flink;
970 INFO_(VIDEOPRT,
"Reported %d PDOs\n",
i);
1023 Irp->IoStatus.Information = 0;
1032 Irp->IoStatus.Information = 0;
1060 Irp->IoStatus.Information = 0;
1068 Irp->IoStatus.Information = 0;
1089 if (CommonExtension->
Fdo)
1107 Irp->IoStatus.Information = 0;
#define KeGetCurrentIrql()
NTSTATUS NTAPI IntVideoPortFindAdapter(IN PDRIVER_OBJECT DriverObject, IN PVIDEO_PORT_DRIVER_EXTENSION DriverExtension, IN PDEVICE_OBJECT DeviceObject)
#define IOCTL_VIDEO_QUERY_COLOR_CAPABILITIES
#define ERROR_INVALID_PARAMETER
#define IRP_MN_CANCEL_REMOVE_DEVICE
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES ObjectAttributes
#define STATUS_DEVICE_DOES_NOT_EXIST
#define IOCTL_VIDEO_IS_VGA_DEVICE
NTSTATUS NTAPI IntVideoPortDispatchPdoPnp(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
VOID NTAPI InbvNotifyDisplayOwnershipLost(IN INBV_RESET_DISPLAY_PARAMETERS Callback)
static NTSTATUS VideoPortUseDeviceInSession(_Inout_ PDEVICE_OBJECT DeviceObject, _Inout_ PVIDEO_DEVICE_SESSION_STATUS SessionState, _In_ ULONG BufferLength, _Out_ PULONG_PTR Information)
NTSTATUS NTAPI IntVideoPortDispatchPower(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
#define KeRaiseIrql(irql, oldIrql)
#define IOCTL_VIDEO_QUERY_POINTER_POSITION
NTSYSAPI VOID NTAPI RtlCopyMemory(VOID UNALIGNED *Destination, CONST VOID UNALIGNED *Source, ULONG Length)
#define IRP_MN_REMOVE_DEVICE
#define STATUS_INSUFFICIENT_RESOURCES
#define KeLowerIrql(oldIrql)
#define IOCTL_VIDEO_QUERY_POINTER_ATTR
#define IOCTL_VIDEO_SET_POINTER_ATTR
_Must_inspect_result_ _In_ PFILE_OBJECT _In_ ULONG IoControlCode
#define IOCTL_VIDEO_UNSHARE_VIDEO_MEMORY
static BOOLEAN InbvMonitoring
#define IOCTL_VIDEO_REGISTER_VDM
VIDEO_WIN32K_CALLBACKS_PARAMS_TYPE CalloutType
static VOID NTAPI InbvMonitorThread(_In_ PVOID Context)
#define IRP_MN_QUERY_POWER
#define STATUS_NOT_IMPLEMENTED
NTSTATUS NTAPI IntVideoPortDispatchFdoPnp(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
#define IOCTL_VIDEO_QUERY_POINTER_CAPABILITIES
#define STATUS_MORE_PROCESSING_REQUIRED
VIDEO_PORT_DRIVER_EXTENSION * DriverExtension
NTSTATUS NTAPI PoCallDriver(IN PDEVICE_OBJECT DeviceObject, IN OUT PIRP Irp)
#define ERROR_INVALID_FUNCTION
_Inout_opt_ PDEVICE_OBJECT _Inout_opt_ PDEVICE_OBJECT _Inout_opt_ PDEVICE_OBJECT _Inout_opt_ PCM_RESOURCE_LIST * AllocatedResources
#define STATUS_INVALID_PARAMETER
#define IRP_MN_FILTER_RESOURCE_REQUIREMENTS
struct _LIST_ENTRY * Blink
struct _STATUS_BLOCK * PSTATUS_BLOCK
NTSTATUS NTAPI IntVideoPortDispatchCleanup(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
PDEVICE_OBJECT Objects[1]
#define IOCTL_VIDEO_DISABLE_CURSOR
struct _VIDEO_DEVICE_SESSION_STATUS VIDEO_DEVICE_SESSION_STATUS
VOID NTAPI KeAcquireSpinLockAtDpcLevel(IN PKSPIN_LOCK SpinLock)
#define IOCTL_VIDEO_SET_COLOR_LUT_DATA
struct _VIDEO_PORT_DEVICE_EXTENSTION * PVIDEO_PORT_DEVICE_EXTENSION
#define IOCTL_VIDEO_ENABLE_VDM
#define IOCTL_VIDEO_SET_CHILD_STATE_CONFIGURATION
#define IOCTL_VIDEO_GET_POWER_MANAGEMENT
NTSTATUS NTAPI IntVideoPortForwardIrpAndWaitCompletionRoutine(PDEVICE_OBJECT Fdo, PIRP Irp, PVOID Context)
#define ERROR_NOT_ENOUGH_MEMORY
PCM_RESOURCE_LIST AllocatedResources
#define IOCTL_VIDEO_HANDLE_VIDEOPARAMETERS
#define IOCTL_VIDEO_RESET_DEVICE
#define LOW_REALTIME_PRIORITY
#define IOCTL_VIDEO_MAP_VIDEO_MEMORY
VOID(NTAPI * PVIDEO_WIN32K_CALLOUT)(_In_ PVOID Params)
CHAR MiniPortDeviceExtension[1]
#define IOCTL_VIDEO_GET_OUTPUT_DEVICE_POWER_STATE
VOID NTAPI ObDereferenceObject(IN PVOID Object)
PDEVICE_OBJECT PhysicalDeviceObject
NTSTATUS NTAPI IntVideoPortDispatchDeviceControl(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
LONG NTAPI KeSetEvent(IN PKEVENT Event, IN KPRIORITY Increment, IN BOOLEAN Wait)
PSTR IoctlName(ULONG Ioctl)
#define IOCTL_VIDEO_GET_BANK_SELECT_CODE
#define IOCTL_VIDEO_DISABLE_POINTER
NTSTATUS NTAPI KeWaitForSingleObject(IN PVOID Object, IN KWAIT_REASON WaitReason, IN KPROCESSOR_MODE WaitMode, IN BOOLEAN Alertable, IN PLARGE_INTEGER Timeout OPTIONAL)
#define IOCTL_VIDEO_FREE_PUBLIC_ACCESS_RANGES
_Must_inspect_result_ FORCEINLINE BOOLEAN IsListEmpty(_In_ const LIST_ENTRY *ListHead)
#define IOCTL_VIDEO_ENUM_MONITOR_PDO
#define STATUS_BUFFER_TOO_SMALL
#define IOCTL_VIDEO_QUERY_CURRENT_MODE
#define IoSetCompletionRoutine(_Irp, _CompletionRoutine, _Context, _InvokeOnSuccess, _InvokeOnError, _InvokeOnCancel)
#define IOCTL_VIDEO_SET_CURRENT_MODE
LIST_ENTRY HwResetListEntry
FORCEINLINE VOID IoCopyCurrentIrpStackLocationToNext(_Inout_ PIRP Irp)
CM_PARTIAL_RESOURCE_LIST PartialResourceList
static BOOLEAN NTAPI IntVideoPortResetDisplayParameters(ULONG Columns, ULONG Rows)
static NTSTATUS IntVideoPortInbvCleanup(IN PDEVICE_OBJECT DeviceObject)
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
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
#define IOCTL_VIDEO_MONITOR_DEVICE
#define IOCTL_VIDEO_INIT_WIN32K_CALLBACKS
#define IRP_MN_QUERY_REMOVE_DEVICE
NTSTATUS NTAPI IntVideoPortFilterResourceRequirements(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
#define IOCTL_VIDEO_SET_PALETTE_REGISTERS
NTSTATUS NTAPI KeDelayExecutionThread(IN KPROCESSOR_MODE WaitMode, IN BOOLEAN Alertable, IN PLARGE_INTEGER Interval OPTIONAL)
VOID NTAPI IntVideoPortUnload(PDRIVER_OBJECT DriverObject)
_In_ PVOID _In_ ULONG Event
#define PsGetCurrentProcess
#define EXCEPTION_EXECUTE_HANDLER
#define IOCTL_VIDEO_SET_CURSOR_POSITION
static BOOLEAN NTAPI IntVideoPortResetDisplayParametersEx(_In_ ULONG Columns, _In_ ULONG Rows, _In_ BOOLEAN CalledByInbv)
static PDRIVER_OBJECT DriverObject
#define IoCompleteRequest
KSPIN_LOCK HwResetAdaptersLock
#define IOCTL_VIDEO_QUERY_CURSOR_ATTR
NTSTATUS NTAPI IntInitializeVideoAddressSpace(VOID)
static NTSTATUS VideoPortInitWin32kCallbacks(_In_ PDEVICE_OBJECT DeviceObject, _Inout_ PVIDEO_WIN32K_CALLBACKS Win32kCallbacks, _In_ ULONG BufferLength, _Out_ PULONG_PTR Information)
NTSTATUS NTAPI IntVideoPortDispatchClose(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
static NTSTATUS IntVideoPortInbvInitialize(VOID)
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
#define IOCTL_VIDEO_SET_POWER_MANAGEMENT
#define IOCTL_VIDEO_SET_CURSOR_ATTR
#define IOCTL_VIDEO_UNMAP_VIDEO_MEMORY
BOOLEAN FASTCALL KeTestSpinLock(IN PKSPIN_LOCK SpinLock)
#define IOCTL_VIDEO_ENABLE_CURSOR
#define IRP_MN_QUERY_STOP_DEVICE
#define IOCTL_VIDEO_QUERY_CURSOR_POSITION
#define IOCTL_VIDEO_SWITCH_DUALVIEW
struct _LIST_ENTRY * Flink
ULONG NTAPI PsGetCurrentProcessSessionId(VOID)
#define IRP_MN_SURPRISE_REMOVAL
#define InterlockedExchangePointer(Target, Value)
static HANDLE InbvThreadHandle
#define IRP_MN_STOP_DEVICE
#define _SEH2_YIELD(STMT_)
#define NT_SUCCESS(StatCode)
VOID NTAPI KeReleaseSpinLockFromDpcLevel(IN PKSPIN_LOCK SpinLock)
#define IRP_MN_START_DEVICE
NTSTATUS NTAPI IntVideoPortDispatchSystemControl(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
#define IOCTL_VIDEO_PREPARE_FOR_EARECOVERY
LIST_ENTRY ChildDeviceList
struct _VIDEO_WIN32K_CALLBACKS VIDEO_WIN32K_CALLBACKS
NTSYSAPI VOID NTAPI RtlFreeUnicodeString(PUNICODE_STRING UnicodeString)
ASSERT((InvokeOnSuccess||InvokeOnError||InvokeOnCancel) ?(CompletionRoutine !=NULL) :TRUE)
#define STATUS_UNSUCCESSFUL
static ULONG ResourceCount
VOID NTAPI KeDetachProcess(VOID)
#define IOCTL_VIDEO_SET_DISPLAY_BRIGHTNESS
NTSTATUS NTAPI ObCloseHandle(IN HANDLE Handle, IN KPROCESSOR_MODE AccessMode)
CM_PARTIAL_RESOURCE_DESCRIPTOR PartialDescriptors[1]
#define IOCTL_VIDEO_QUERY_SUPPORTED_BRIGHTNESS
#define InterlockedDecrement
#define IOCTL_VIDEO_LOAD_AND_SET_FONT
NTSTATUS NTAPI IntVideoPortAddDevice(IN PDRIVER_OBJECT DriverObject, IN PDEVICE_OBJECT PhysicalDeviceObject)
_Requires_lock_held_ Interrupt _Releases_lock_ Interrupt _In_ _IRQL_restores_ KIRQL OldIrql
#define IOCTL_VIDEO_DISABLE_VDM
#define ExAllocatePool(type, size)
PVOID NTAPI IoGetDriverObjectExtension(IN PDRIVER_OBJECT DriverObject, IN PVOID ClientIdentificationAddress)
PDEVICE_OBJECT NextDeviceObject
#define IOCTL_VIDEO_QUERY_NUM_AVAIL_MODES
#define IOCTL_VIDEO_QUERY_AVAIL_MODES
#define IOCTL_VIDEO_SHARE_VIDEO_MEMORY
PPCI_DRIVER_EXTENSION DriverExtension
INTERFACE_TYPE InterfaceType
IN PDEVICE_OBJECT DeviceObject
__drv_aliasesMem FORCEINLINE PIO_STACK_LOCATION IoGetCurrentIrpStackLocation(_In_ PIRP Irp)
#define RTL_CONSTANT_OBJECT_ATTRIBUTES(n, a)
static const COLUMN_LIST Columns[]
NTSTATUS NTAPI IntVideoPortForwardIrpAndWait(PDEVICE_OBJECT DeviceObject, PIRP Irp)
#define KeInitializeEvent(pEvt, foo, foo2)
#define IOCTL_VIDEO_VALIDATE_CHILD_STATE_CONFIGURATION
#define InterlockedIncrement
#define STATUS_BUFFER_OVERFLOW
VOID NTAPI PoStartNextPowerIrp(IN PIRP Irp)
ULONG VideoPortDeviceNumber
KPRIORITY NTAPI KeSetPriorityThread(IN PKTHREAD Thread, IN KPRIORITY Priority)
struct _KPROCESS * PKPROCESS
VOID NTAPI KeAttachProcess(IN PKPROCESS Process)
_In_ PIO_STACK_LOCATION IrpSp
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)
NTSTATUS NTAPI IntVideoPortPnPStartDevice(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
PSTATUS_BLOCK StatusBlock
#define FIELD_OFFSET(t, f)
static VOID VideoPortWin32kCallout(_In_ PVIDEO_WIN32K_CALLBACKS_PARAMS CallbackParams)
NTSTATUS NTAPI IoCallDriver(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
#define IRP_MN_QUERY_DEVICE_RELATIONS
#define IoSkipCurrentIrpStackLocation(Irp)
#define CmResourceTypeInterrupt
VIDEO_PORT_COMMON_EXTENSION Common
#define IOCTL_VIDEO_GET_CHILD_STATE
NTSTATUS NTAPI IntVideoPortDispatchPnp(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
#define IOCTL_VIDEO_ENABLE_POINTER
#define IOCTL_VIDEO_QUERY_PUBLIC_ACCESS_RANGES
#define ObReferenceObject
NTSTATUS NTAPI IntVideoPortDispatchOpen(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
#define IOCTL_VIDEO_QUERY_DISPLAY_BRIGHTNESS
NTSTATUS NTAPI IntVideoPortQueryBusRelations(PDEVICE_OBJECT DeviceObject, PIRP Irp)
PDEVICE_OBJECT PhysicalDeviceObject
struct tagContext Context
LIST_ENTRY HwResetAdaptersList
UNICODE_STRING RegistryPath
#define _SEH2_EXCEPT(...)
static NTSTATUS VideoPortForwardDeviceControl(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
NTSTATUS NTAPI IntVideoPortCreateAdapterDeviceObject(IN PDRIVER_OBJECT DriverObject, IN PVIDEO_PORT_DRIVER_EXTENSION DriverExtension, IN PDEVICE_OBJECT PhysicalDeviceObject, OUT PDEVICE_OBJECT *DeviceObject OPTIONAL)
#define IRP_MN_CANCEL_STOP_DEVICE
BOOLEAN NTAPI InbvCheckDisplayOwnership(VOID)
#define KeGetCurrentThread
struct _NAMED_PIPE_CREATE_PARAMETERS * Parameters
#define IOCTL_VIDEO_RESTORE_HARDWARE_STATE
#define IOCTL_VIDEO_USE_DEVICE_IN_SESSION
static PVIDEO_WIN32K_CALLOUT Win32kCallout
#define OBJ_KERNEL_HANDLE
#define ERROR_DEV_NOT_EXIST
base of all file and directory entries
#define IOCTL_VIDEO_SAVE_HARDWARE_STATE
#define IOCTL_VIDEO_SET_OUTPUT_DEVICE_POWER_STATE
#define IOCTL_VIDEO_SET_POINTER_POSITION
#define IOCTL_VIDEO_SET_COLOR_REGISTERS
#define IOCTL_VIDEO_SET_BANK_POSITION
#define IRP_MJ_DEVICE_CONTROL
#define ERROR_INSUFFICIENT_BUFFER
_In_ PSTORAGE_PROPERTY_ID _Outptr_ PSTORAGE_DESCRIPTOR_HEADER * Descriptor