VirtualBox

source: vbox/trunk/src/VBox/Additions/WINNT/Graphics/Video/common/xpdm/VBoxVideoIOCTL.h@ 82968

Last change on this file since 82968 was 82968, checked in by vboxsync, 5 years ago

Copyright year updates by scm.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 5.5 KB
Line 
1/* $Id: VBoxVideoIOCTL.h 82968 2020-02-04 10:35:17Z vboxsync $ */
2/** @file
3 * VBox Miniport IOCTL related header
4 */
5
6/*
7 * Copyright (C) 2011-2020 Oracle Corporation
8 *
9 * This file is part of VirtualBox Open Source Edition (OSE), as
10 * available from http://www.virtualbox.org. This file is free software;
11 * you can redistribute it and/or modify it under the terms of the GNU
12 * General Public License (GPL) as published by the Free Software
13 * Foundation, in version 2 as it comes in the "COPYING" file of the
14 * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
15 * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
16 */
17
18#ifndef GA_INCLUDED_SRC_WINNT_Graphics_Video_common_xpdm_VBoxVideoIOCTL_h
19#define GA_INCLUDED_SRC_WINNT_Graphics_Video_common_xpdm_VBoxVideoIOCTL_h
20#ifndef RT_WITHOUT_PRAGMA_ONCE
21# pragma once
22#endif
23
24#include <VBox/VMMDev.h> /* VBVAMEMORY */
25#include <HGSMI.h>
26
27/* ==================== VirtualBox specific VRP's ==================== */
28
29/* Called by the display driver when it is ready to
30 * switch to VBVA operation mode.
31 * Successful return means that VBVA can be used and
32 * output buffer contains VBVAENABLERESULT data.
33 * An error means that VBVA can not be used
34 * (disabled or not supported by the host).
35 */
36#define IOCTL_VIDEO_VBVA_ENABLE \
37 CTL_CODE(FILE_DEVICE_VIDEO, 0x400, METHOD_BUFFERED, FILE_ANY_ACCESS)
38
39/* Called to get video port api function pointers */
40#define IOCTL_VIDEO_HGSMI_QUERY_PORTPROCS \
41 CTL_CODE(FILE_DEVICE_VIDEO, 0x434, METHOD_BUFFERED, FILE_ANY_ACCESS)
42
43/* Called to get HGSMI related callbacks */
44#define IOCTL_VIDEO_HGSMI_QUERY_CALLBACKS \
45 CTL_CODE(FILE_DEVICE_VIDEO, 0x431, METHOD_BUFFERED, FILE_ANY_ACCESS)
46
47/* Called to get adapter's HGSMI information */
48#define IOCTL_VIDEO_QUERY_HGSMI_INFO \
49 CTL_CODE(FILE_DEVICE_VIDEO, 0x430, METHOD_BUFFERED, FILE_ANY_ACCESS)
50
51/* Called to enable HGSMI miniport channel */
52#define IOCTL_VIDEO_HGSMI_HANDLER_ENABLE \
53 CTL_CODE(FILE_DEVICE_VIDEO, 0x432, METHOD_BUFFERED, FILE_ANY_ACCESS)
54
55/* Called to disable HGSMI miniport channel */
56#define IOCTL_VIDEO_HGSMI_HANDLER_DISABLE \
57 CTL_CODE(FILE_DEVICE_VIDEO, 0x433, METHOD_BUFFERED, FILE_ANY_ACCESS)
58
59/* Called to get framebuffer offset */
60#define IOCTL_VIDEO_VHWA_QUERY_INFO \
61 CTL_CODE(FILE_DEVICE_VIDEO, 0x435, METHOD_BUFFERED, FILE_ANY_ACCESS)
62
63/* Called to get adapter's generic information */
64#define IOCTL_VIDEO_QUERY_VBOXVIDEO_INFO \
65 CTL_CODE(FILE_DEVICE_VIDEO, 0x436, METHOD_BUFFERED, FILE_ANY_ACCESS)
66
67/* ==================== Data structures used by VirtualBox VRPS's ==================== */
68typedef void* HVBOXVIDEOHGSMI;
69
70/** Complete host commands addressed to the display */
71typedef DECLCALLBACK(void) FNVBOXVIDEOHGSMICOMPLETION(HVBOXVIDEOHGSMI hHGSMI, struct VBVAHOSTCMD RT_UNTRUSTED_VOLATILE_HOST * pCmd);
72typedef FNVBOXVIDEOHGSMICOMPLETION *PFNVBOXVIDEOHGSMICOMPLETION;
73
74/** request the host commands addressed to the display */
75typedef DECLCALLBACK(int) FNVBOXVIDEOHGSMICOMMANDS(HVBOXVIDEOHGSMI hHGSMI, uint8_t u8Channel, uint32_t iDevice,
76 struct VBVAHOSTCMD RT_UNTRUSTED_VOLATILE_HOST ** ppCmd);
77typedef FNVBOXVIDEOHGSMICOMMANDS *PFNVBOXVIDEOHGSMICOMMANDS;
78
79/** post guest command (offset) to the host */
80typedef DECLCALLBACK(void) FNVBOXVIDEOHGSMIPOSTCOMMAND(HVBOXVIDEOHGSMI hHGSMI, HGSMIOFFSET offCmd);
81typedef FNVBOXVIDEOHGSMIPOSTCOMMAND *PFNVBOXVIDEOHGSMIPOSTCOMMAND;
82
83#pragma pack(1)
84/* Data returned by IOCTL_VIDEO_VBVA_ENABLE. */
85typedef struct _VBVAENABLERESULT
86{
87 /* Pointer to VBVAMemory part of VMMDev memory region. */
88 VBVAMEMORY *pVbvaMemory;
89
90 /* Called to force the host to process VBVA memory,
91 * when there is no more free space in VBVA memory.
92 * Normally this never happens.
93 *
94 * The other purpose is to perform a synchronous command.
95 * But the goal is to have no such commands at all.
96 */
97 DECLR0CALLBACKMEMBER(void, pfnFlush, (void *pvFlush));
98
99 /* Pointer required by the pfnFlush callback. */
100 void *pvFlush;
101
102} VBVAENABLERESULT;
103
104/* Data returned by IOCTL_VIDEO_HGSMI_QUERY_PORTPROCS. */
105typedef struct _HGSMIQUERYCPORTPROCS
106{
107 PVOID pContext;
108 VBOXVIDEOPORTPROCS VideoPortProcs;
109} HGSMIQUERYCPORTPROCS;
110
111/** Data returned by IOCTL_VIDEO_HGSMI_QUERY_CALLBACKS. */
112typedef struct _HGSMIQUERYCALLBACKS
113{
114 HVBOXVIDEOHGSMI hContext;
115 PFNVBOXVIDEOHGSMICOMPLETION pfnCompletionHandler;
116 PFNVBOXVIDEOHGSMICOMMANDS pfnRequestCommandsHandler;
117} HGSMIQUERYCALLBACKS;
118
119/* Data returned by IOCTL_VIDEO_QUERY_HGSMI_INFO. */
120typedef struct _QUERYHGSMIRESULT
121{
122 /* Device index (0 for primary) */
123 ULONG iDevice;
124
125 /* Flags. Currently none are defined and the field must be initialized to 0. */
126 ULONG ulFlags;
127
128 /* Describes VRAM chunk for this display device. */
129 HGSMIAREA areaDisplay;
130
131 /* Size of the display information area. */
132 uint32_t u32DisplayInfoSize;
133
134 /* Minimum size of the VBVA buffer. */
135 uint32_t u32MinVBVABufferSize;
136
137 /* IO port to submit guest HGSMI commands. */
138 RTIOPORT IOPortGuestCommand;
139} QUERYHGSMIRESULT;
140
141/* Data passed to IOCTL_VIDEO_HGSMI_HANDLER_ENABLE. */
142typedef struct _HGSMIHANDLERENABLE
143{
144 uint8_t u8Channel;
145} HGSMIHANDLERENABLE;
146
147#ifdef VBOX_WITH_VIDEOHWACCEL
148/* Data returned by IOCTL_VIDEO_VHWA_QUERY_INFO. */
149typedef struct _VHWAQUERYINFO
150{
151 ULONG_PTR offVramBase;
152} VHWAQUERYINFO;
153#endif
154#pragma pack()
155
156/* IOCTL_VIDEO_QUERY_INFO */
157#define VBOXVIDEO_INFO_LEVEL_REGISTRY_FLAGS 1
158
159#define VBOXVIDEO_REGISTRY_FLAGS_DISABLE_BITMAP_CACHE 0x00000001
160
161#endif /* !GA_INCLUDED_SRC_WINNT_Graphics_Video_common_xpdm_VBoxVideoIOCTL_h */
Note: See TracBrowser for help on using the repository browser.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette