VirtualBox

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

Last change on this file since 69498 was 69498, checked in by vboxsync, 7 years ago

backed out r118835 as it incorrectly updated the 'This file is based on' file headers.

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