All Projects → LinJiabang → Virtual Display

LinJiabang / Virtual Display

Licence: gpl-2.0
USB/Ethernet Display driver sample for Windows

Programming Languages

c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to Virtual Display

stm32 tiny monitor
A tiny external monitor for PC using STM32 and ST7789. Connects to PC over USB and displays the captured screen on ST7789 (240x240) display.
Stars: ✭ 61 (-14.08%)
Mutual labels:  usb, display
Secure If
Android USB Control app
Stars: ✭ 68 (-4.23%)
Mutual labels:  usb
Usb Esp
How to make a tiny USB powered ESP-12S
Stars: ✭ 39 (-45.07%)
Mutual labels:  usb
Libraryepd
Library Arduino for 4.3 inch e-Paper by Waveshare
Stars: ✭ 50 (-29.58%)
Mutual labels:  display
X Cube Usb Pd
USB-C Power Delivery Firmware for STM32 microcontroller (ARM Cortex M0 & M4)
Stars: ✭ 41 (-42.25%)
Mutual labels:  usb
Otterscreenadapter
DisplayPort to Ipad 3/4 panel adapter
Stars: ✭ 54 (-23.94%)
Mutual labels:  display
Um34c
A small NodeJS tool to read out and control the UM34C (or UM24C / UM25C) USB analyzer via Bluetooth
Stars: ✭ 36 (-49.3%)
Mutual labels:  usb
Autogadgetfs
USB testing made easy
Stars: ✭ 71 (+0%)
Mutual labels:  usb
Adafruit circuitpython hid
USB Human Interface Device drivers.
Stars: ✭ 65 (-8.45%)
Mutual labels:  usb
Multibootusb
Create multiboot live Linux on a USB disk...
Stars: ✭ 1,042 (+1367.61%)
Mutual labels:  usb
Usb4java Javax
javax.usb extension for usb4java
Stars: ✭ 47 (-33.8%)
Mutual labels:  usb
Usb Keystroke Injector
☠️ An Arduino-based USB keyboard simulator which injects keystrokes via Bluetooth protocol or predefined payloads in a SD card.
Stars: ✭ 42 (-40.85%)
Mutual labels:  usb
Apple Family
A simple framework that brings Apple devices together - like a family
Stars: ✭ 59 (-16.9%)
Mutual labels:  usb
Stm32f103 Usb Cdc Cmsis
STM32F103 USB CDC CMSIS
Stars: ✭ 40 (-43.66%)
Mutual labels:  usb
Lightbulb
Reduces eye strain by adjusting gamma based on the current time
Stars: ✭ 1,153 (+1523.94%)
Mutual labels:  display
Stream Deck Api
API to interact with the Elgato Stream Deck controller
Stars: ✭ 36 (-49.3%)
Mutual labels:  usb
Uhubctl
uhubctl - USB hub per-port power control
Stars: ✭ 1,036 (+1359.15%)
Mutual labels:  usb
Node Hid
Access USB & Bluetooth HID devices through Node.js
Stars: ✭ 1,064 (+1398.59%)
Mutual labels:  usb
Caffeine Ng
☕ Tray bar application able to temporarily inhibits the screensaver and sleep mode.
Stars: ✭ 72 (+1.41%)
Mutual labels:  display
Scorehud
An event driven, highly customizable plugin to add Scoreboards on your Minecraft Bedrock Server.
Stars: ✭ 69 (-2.82%)
Mutual labels:  display

virtual-display

  1. What is this? 用途解釋

    This sample code demonstrates how to make a USB or Ethernet display product by implementing a kernel driver that talks to LCI Proxy WDDM driver.

    LCI Proxy WDDM driver is a filter driver that talks to inbox display WDDM driver, and creates a virtual monitor on behalf of inbox display driver.

    The USB part of the driver receives the surface create/destroy/update messages from LCI Proxy WDDM driver. This sample code demonstrates the interaction between the source (LCI Proxy WDDM driver) and the target (eg. USB/Ethernet kernel driver) so that driver developers can make a USB/Ethernet display product easily.

    此範例是教導如何製作一個內核(kernel)驅動來實現 USB 或 Ethernet 顯示器產品。 此範例須利用 LCI Proxy WDDM 驅動來協助完成。 LCI Proxy WDDM 驅動是一個 filter 驅動,用於凌駕原始顯示驅動,使得 Windows 系統能列舉生成一個虛擬顯示器。LCI Proxy WDDM 驅動在這裡僅當作教學用途,不能當作商業使用。** 任何商業使用 LCI Proxy WDDM 驅動需經合法授權。非法使用 LCI Proxy WDDM 驅動者,後果自負。**

    在這裡 USB/Ethernet 驅動所扮演的腳色是用來接收從 LCI Proxy WDDM 來的屏幕生成/消失訊息。此範例解釋 LCI Proxy WDDM 驅動與 USB/Ethernet 驅動之間的溝通關係,以利方便實現 USB/Ethernet 顯示器產品。

  2. Target audience 讀者區分

    The sample code is targeted to USB/Ethernet display kernel driver developers. The sample code illustrates the internal driver communication between LCI Proxy WDDM driver and a target USB/Ethernet ethernet driver.

    The lci_display_internal_ioctl.h defines the internal IOCTL codes so that the target driver could get the virtual screen content efficiently.

    The ljb_vmon_ioctl.h is used by user mode sample app so that you can see the content of the virtual screen.

    The USB/Ethernet display developers can implement a real kernel device driver by leveraging the source code.

    The "notify" folder is derived from Microsoft toaster sample code, and is used merely fro demo purpose only. The user mode app is not intended to be used for real product scenario.

    此範例是給 USB/Ethernet 顯示器產品開發者所設:

    lci_display_internal_ioctl.h 定義內核溝通代碼(internal IOCTL code),是產生虛擬屏幕的必要條件。 ljb_vmon_ioctl.h 適用於 user mode 程式,用於顯示屏幕內容。

    開發者可利用此範例程式碼來實作內核驅動。

    notify 項目是從 Microsoft toaster 範例所衍生,僅用於教學用途,不適用於實際產品。

  3. How to compile code.

    You need to install WDK10 as well WDK7. The user mode sample app is compiled with WDK7, while the kernel driver is compiled by WDK10.

    Use buildall_wdk10.cmd to build all components. An output folder is created as the result.

    There is also a precompiled driver binary under precompiled folder.

  4. How to run the demo

    4.1 First, you need to install LCI Proxy WDDM driver. The LCI Proxy WDDM driver can be found in Fresco Logic FL2000 driver package. Goto https://support.frescologic.com/portal/home , and find the FL2000-2.1.xxxx.0 on the right hand side.

    4.2 Install the FL2000 driver even if you don't have FL2000 USB dongle. After installation, navigate to C:\Program Files\Fresco Logic\Fresco Logic USB Display Driver folder. Note that there is a devcon and lci_proxykmd folder. Copy out those 2 folders as you will need them later.

    4.3 Uninstall the FL2000 driver after step 4.2.

    4.4 Install lci_proxykmd by invoking cmd.exe with administrator privilege. Use the following command to install lci_proxykmd driver: "devcon\x64\devcon.exe install lci_proxykmd\lci_proxykmd.inf root\lci_proxykmd"

    You will see a "Fresco Logic Proxy Display Adapter" device node in the device manager view. You can also use "devcon\x64\devcon.exe status root\lci_proxykmd" to verify that it is correctly installed. Then you need to do "devcon\x64\devcon.exe restart =display" to restart display driver (such as Intel Graphics).

    4.5 Goto the output folder generated in step 3. In the cmd.exe window, navigate to the folder where "vmon_func.inf" exists. Use "devcon.exe install vmon_func.inf root\ljb_vmon" to create a ljb_vmon device node.

    4.6 Invoke vmon.exe. You will see an extra monitor is created in device manager view. Also the vmon.exe displays the content on the virtual monitor just created.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].