// Copyright (c) Microsoft Corporation
#ifndef THIRD_PARTY_WIN_VIRTUAL_DISPLAY_CONTROLLER_DISPLAY_DRIVER_CONTROLLER_H_
#define THIRD_PARTY_WIN_VIRTUAL_DISPLAY_CONTROLLER_DISPLAY_DRIVER_CONTROLLER_H_
#include "third_party/win_virtual_display/driver/public/properties.h"
#include <swdevice.h>
namespace display::test {
// Low level controls for communicating with the virtual display driver.
class DisplayDriverController {
public:
~DisplayDriverController();
// Returns true if the driver is detected to be installed on the host machine.
static bool IsDriverInstalled();
// Sets the configuration of the virtual display driver. Overwrites any
// previously set configuration. Returns true on success, or false on failure.
bool SetDisplayConfig(DriverProperties config);
// Resets the virtual display configuration back to default. Removes all
// configured virtual displays.
void Reset();
private:
// Open the software device with the specified initial configuration.
bool Initialize(DriverProperties config);
// Current handle for software device, or nullptr if none is opened.
HSWDEVICE device_handle_ = nullptr;
};
} // namespace display::test
#endif // THIRD_PARTY_WIN_VIRTUAL_DISPLAY_CONTROLLER_DISPLAY_DRIVER_CONTROLLER_H_