VirtualDisplayDriver.Api 1.0.0

dotnet add package VirtualDisplayDriver.Api --version 1.0.0
                    
NuGet\Install-Package VirtualDisplayDriver.Api -Version 1.0.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="VirtualDisplayDriver.Api" Version="1.0.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="VirtualDisplayDriver.Api" Version="1.0.0" />
                    
Directory.Packages.props
<PackageReference Include="VirtualDisplayDriver.Api" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add VirtualDisplayDriver.Api --version 1.0.0
                    
#r "nuget: VirtualDisplayDriver.Api, 1.0.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package VirtualDisplayDriver.Api@1.0.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=VirtualDisplayDriver.Api&version=1.0.0
                    
Install as a Cake Addin
#tool nuget:?package=VirtualDisplayDriver.Api&version=1.0.0
                    
Install as a Cake Tool

Virtual Display Driver API

A C#/.NET 8 wrapper library for the Virtual Display Driver (VDD) — a Windows Indirect Display Driver that creates virtual monitors without physical hardware.

This library provides a safe, typed API over the VDD named-pipe protocol, handling connection lifecycle, command serialization, reload spacing, and response parsing.

Prerequisites

Quick Start

Standalone usage

using VirtualDisplayDriver;
using VirtualDisplayDriver.Pipe;

var options = new VirtualDisplayOptions();
var client = new VddPipeClient(options);
await using var manager = new VirtualDisplayManager(client, options);

// Check if the driver is running
if (await manager.PingAsync())
{
    // Add 2 virtual monitors
    await manager.SetDisplayCountAsync(2);

    // Query GPU info
    var gpus = await manager.GetAllGpusAsync();
    foreach (var gpu in gpus)
        Console.WriteLine($"GPU: {gpu}");

    // Remove all monitors
    await manager.RemoveAllDisplaysAsync();
}

With dependency injection

using VirtualDisplayDriver.DependencyInjection;

services.AddVirtualDisplayDriver(opts =>
{
    opts.ConnectTimeout = TimeSpan.FromSeconds(5);
    opts.ReloadSpacing = TimeSpan.FromSeconds(30);
});

Then inject IVirtualDisplayManager:

public class MyService(IVirtualDisplayManager displayManager)
{
    public async Task SetupDisplaysAsync()
    {
        await displayManager.SetDisplayCountAsync(2);
    }
}

Architecture

The library has two layers:

  • IVirtualDisplayManager — High-level managed API with command serialization, automatic reload spacing, display count tracking, and response parsing. This is what most consumers should use.
  • IVddPipeClient — Low-level pipe client that sends raw commands and returns raw strings. No safety guardrails. Available as an escape hatch via manager.PipeClient.

Documentation

Product Compatible and additional computed target framework versions.
.NET net8.0-windows7.0 is compatible.  net9.0-windows was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.0 102 3/23/2026