docs/VDD_LIBRARY_USAGE.md
This document describes how to use the Parsec Virtual Display Driver (VDD) C/C++ API, as defined in core/parsec-vdd.h. For full project details, see the README and PARSEC_VDD_SPECS.md. For code example, see core/vdd-demo.cc.
Parsec VDD enables creation and management of virtual displays on Windows 10+ systems. The C/C++ API allows direct control over the driver, including querying status, adding/removing displays, and updating device state.
Check out the README to install the driver.
With C++ include, you should add using namespace parsec_vdd.
enum DeviceStatus {
DEVICE_OK = 0, // Ready to use
DEVICE_INACCESSIBLE, // Inaccessible
DEVICE_UNKNOWN, // Unknown status
DEVICE_UNKNOWN_PROBLEM, // Unknown problem
DEVICE_DISABLED, // Device is disabled
DEVICE_DRIVER_ERROR, // Device encountered error
DEVICE_RESTART_REQUIRED, // Must restart PC to use (could ignore but would have issue)
DEVICE_DISABLED_SERVICE, // Service is disabled
DEVICE_NOT_INSTALLED // Driver is not installed
};
DeviceStatus QueryDeviceStatus(const GUID *classGuid, const char *deviceId);
DeviceStatus value.HANDLE OpenDeviceHandle(const GUID *interfaceGuid);
INVALID_HANDLE_VALUE or a valid handle.void CloseDeviceHandle(HANDLE handle);
| Constant | Value | Description |
|---|---|---|
VDD_DISPLAY_ID | "PSCCDD0" | Display device ID |
VDD_DISPLAY_NAME | "ParsecVDA" | Display name |
VDD_ADAPTER_GUID | {00b41627-04c4-429e-a26e-0265cf50c8fa} | Adapter GUID |
VDD_CLASS_GUID | {4d36e968-e325-11ce-bfc1-08002be10318} | Device class GUID |
VDD_HARDWARE_ID | "Root\\Parsec\\VDA" | Hardware ID |
VDD_MAX_DISPLAYS | 8 | Maximum virtual displays |
enum VddCtlCode {
VDD_IOCTL_ADD = 0x0022e004,
VDD_IOCTL_REMOVE = 0x0022a008,
VDD_IOCTL_UPDATE = 0x0022a00c,
VDD_IOCTL_VERSION = 0x0022e010,
VDD_IOCTL_UNKONWN = 0x0022a00c,
};
DWORD VddIoControl(HANDLE vdd, VddCtlCode code, const void *data, size_t size);
int VddVersion(HANDLE vdd);
void VddUpdate(HANDLE vdd);
int VddAddDisplay(HANDLE vdd);
void VddRemoveDisplay(HANDLE vdd, int index);
Check out core/vdd-demo.cc.
See PARSEC_VDD_SPECS.md for supported resolutions and refresh rates.