diff --git a/README.md b/README.md index 1c30613..4268459 100644 --- a/README.md +++ b/README.md @@ -49,7 +49,8 @@ and WPF. It can show the number of virtual displays added, allows adding multiple virtual displays and removing a specific selected one. Also allows to change resolution and take screenshot, and more.. -👉 Check out [Releases](https://github.com/nomi-san/parsec-vdd/releases) to download it. +👉 Check out [Releases](https://github.com/nomi-san/parsec-vdd/releases) to +download it.
@@ -59,20 +60,47 @@ Full source code of this application is located in the [app](./app) folder.
## 🚀 Using Core API
-### Using the source
+### Design notes
-- The core API is designed as single C/C++ header that can be added to any project, 👉 [core/parsec-vdd.h](./core/parsec-vdd.h)
+Parsec VDD is designed to work with Parsec client-connection session. When user
+connects to the host, the app will start controlling the driver, it sends IO
+control codes and gets result. When adding a virtual display, you will get its
+index to be used for unplugging, the maximum number of displays could be added
+up to 16 per adapter. You have to ping to the driver periodically to keep added
+displays alive, otherwise all of them will be unplugged after a second. There's
+no direct way to manipulate added displays, you should call Win32 Display API to
+change their display mode (see the ParsecVDisplay source).
+
+```mermaid
+flowchart LR
+ A(app)
+ B(vdd)
+
+ A <--->|ioctl| B
+ A ..->|ping| B
+
+ B --- X(display1)
+ B --- Y(display2)
+ B --- Z(display3)
+
+ winapi -->|manipulate| X
+```
+
+### Using the code
+
+- The core API is designed as single C/C++ header that can be added to any
+ project, 👉 [core/parsec-vdd.h](./core/parsec-vdd.h)
- There is also a simple demo program, 👉 [core/vdd-demo.cc](./core/vdd-demo.cc)
### Picking a driver
You have to install the driver to make them work.
-| Version | Minimum OS | IddCx | Notes
-| :---------------- | :-------------- | :----: | :------
-| [parsec-vdd-0.38] | Windows 10 1607 | 1.0 | Obsolete, may crash randomly.
-| [parsec-vdd-0.41] | Windows 10 19H2 | 1.4 | Stable.
-| [parsec-vdd-0.45] | Windows 10 21H2 | 1.5 | Better streaming color, but may not work on some Windows.
+| Version | Minimum OS | IddCx | Notes |
+| :---------------- | :-------------- | :---: | :-------------------------------------------------------- |
+| [parsec-vdd-0.38] | Windows 10 1607 | 1.0 | Obsolete, may crash randomly. |
+| [parsec-vdd-0.41] | Windows 10 19H2 | 1.4 | Stable. |
+| [parsec-vdd-0.45] | Windows 10 21H2 | 1.5 | Better streaming color, but may not work on some Windows. |
[parsec-vdd-0.38]: https://builds.parsec.app/vdd/parsec-vdd-0.38.0.0.exe
[parsec-vdd-0.41]: https://builds.parsec.app/vdd/parsec-vdd-0.41.0.0.exe
@@ -80,8 +108,8 @@ You have to install the driver to make them work.
> All of them also work on Windows Server 2019 or higher.
-You can unzip (using 7z) the driver setup above to obtain the driver files and `nefconw`
-CLI.
+You can unzip (using 7z) the driver setup above to obtain the driver files and
+`nefconw` CLI.
```
vdd-0.45/
@@ -100,7 +128,8 @@ start /wait .\nefconw.exe --create-device-node --class-name Display --class-guid
start /wait .\nefconw.exe --install-driver --inf-path ".\driver\mm.inf"
```
-In additional, you can run the driver setup in silent mode to install it quickly.
+In additional, you can run the driver setup in silent mode to install it
+quickly.
```
.\parsec-vdd-0.45.0.0.exe /S