Old school Easter eggs.
HomeBlogAbout Me

Windows 10 Fake Monitor Driver



  1. Add Monitor Driver Windows 10
  2. Windows 10 Fake Monitor Drivers

As Thomas pointed out the project lacks of a signed driver, which is especially problematic on certain Windows version (e.g. Windows 7 x64). There are a couple of unofficial com0com versions around that do contain a signed driver. One recent verion (3.0.0.0) can be downloaded e.g. Having an issue with your display, audio, or touchpad? Whether you're working on an Alienware, Inspiron, Latitude, or other Dell product, driver updates keep your device running at top performance. Step 1: Identify your product above. Step 2: Run the detect drivers scan to see available updates. Step 3: Choose which driver updates to install.

-->

This topic summarizes the new features and improvements for Windows Driver Frameworks (WDF) drivers in Windows 10.

Windows 10, version 1903 (March 2019 Update, 19H1) includes Kernel-Mode Driver Framework (KMDF) version 1.29 and User-Mode Driver Framework (UMDF) version 2.29.

You can use these framework versions to build drivers for:

  • Windows 10 (all SKUs)
  • Windows Server, version 1809

For version history, see KMDF Version History and UMDF Version History. Except where noted, UMDF references on this page describe version 2 functionality that is not available in UMDF version 1.

New in WDF for Windows 10, version 2004

See KMDF Version History and UMDF Version History.

New in WDF for Windows 10, version 1903

Windows 10 Fake Monitor Driver

No functionality added or changed.

New in WDF for Windows 10, version 1809

  • Added new API WdfDriverRetrieveDriverDataDirectoryString

New in WDF for Windows 10, version 1803

  • Building a WDF driver for multiple versions of Windows.

New in WDF for Windows 10, version 1709

See KMDF Version History and UMDF Version History.

New in WDF for Windows 10, version 1703

In Windows 10, version 1703, WDF includes the following enhancements:

  • New WDF Verifier settings to detect excessive object creation

    In some cases, framework objects are incorrectly parented and not deleted after use. With this feature, you can specify a maximum number of objects and what should happen when this threshold is exceeded.

    To start monitoring, add the following registry values under:HKEY_LOCAL_MACHINESystemCurrentControlSetServices<driver service>Parameterswdf

    1. Add a DWORD value named ObjectLeakDetectionLimit with the threshold value. This is the maximum number of objects of the types described in the ObjectsForLeakDetection key.

    2. Add a new REG_MULTI_SZ value named ObjectsForLeakDetection that lists each type name to verify. For example, you could specify WDFDMATRANSACTION WDFDEVICE. To specify all handle types, use * as the string.

    3. To control whether exceeding this threshold should cause a debug break or a bugcheck, set the DbgBreakOnError key.

      By default, if the ObjectsForLeakDetection key is not specified, the framework monitors WDFREQUEST, WDFWORKITEM, WDFKEY, WDFSTRING, WDFOBJECT, and WDFDEVICE.

      The limit scales with the number of devices installed, so if the driver creates three WDFDEVICE objects, the WDF Verifier limit is three times the value specified in ObjectLeakDetectionLimit.

      If you specify WDFREQUEST, the verifier only counts WDFREQUEST objects that the driver creates.

      This feature does not currently support tracking the WDFMEMORY object type.

  • SleepStudy tool provides info on KMDF drivers

    The SleepStudy software tool reports the number of power references that a KMDF driver has that are preventing the system from going to sleep. For more info, see Modern standby SleepStudy.

The rest of this page describes functionality that was added in Windows 10, version 1507.

WDF source code is publicly available

  • The WDF source code is now available as open source on GitHub. This is the same source code from which the WDF runtime library that ships in Windows 10 is built. You can debug your driver more effectively when you can follow the interactions between the driver and WDF. Download it from https://github.com/Microsoft/Windows-Driver-Frameworks.

  • The private symbol files for WDF on Windows 10 are now available through the Microsoft Symbol Server.

  • The Windows Driver Kit (WDK) 10 samples are also now published to GitHub. Download them from https://github.com/Microsoft/Windows-Driver-Samples.

Automatic Source Level Debugging of Framework Code

When you use WinDbg to debug a WDF driver on Windows 10, WinDbg automatically retrieves the framework source code from Microsoft's public GitHub repository. You can use this feature to step through the WDF source code while debugging, and to learn about framework internals without downloading the source code to a local machine. For more information, see New support for source-level debugging of WDF code in Windows 10, Debugging with WDF Source, and Video: Debugging your driver with WDF source code.

Universal Driver Compliance

All WDF driver samples and Visual Studio driver templates are Universal Windows driver compliant.

All KMDF and UMDF 2 functionality is Universal Windows driver compliant.

Note that UMDF 1 drivers run only on Windows 10 for desktop editions and earlier versions of desktop Windows. Want to benefit from the universal capabilities of UMDF 2? To learn how to port your old UMDF 1 driver, see Porting a Driver from UMDF 1 to UMDF 2.

Debugging and Diagnosability

  • All KMDF and UMDF 2 drivers can use an always on, always available Inflight Trace Recorder (IFR). When a driver provides a custom trace, the driver IFR log contains the trace messages. Note that the new driver IFR log is separate from the framework IFR log that WDF creates for each driver.

    It's easy to turn on the IFR. See Inflight Trace Recorder (IFR) for logging traces and Using Inflight Trace Recorder in KMDF and UMDF Drivers.

  • Bonanza free slots. The IFR maintains a circular buffer of WPP traces in non-pageable memory. If a driver crashes, the logs are frequently included in the crash dump file.

  • If you turn on the IFR in your driver binary, the IFR is present and running during the lifetime of your driver. You don't need to start an explicit trace collection session.

    • Better touch tool for mac 10.6.8. IFR logs are included in minidump files except when the responsible driver is undetermined or if the crash was a host timeout.

    • If you have a debugger connected, you can access both the driver and framework IFR logs by issuing !wdfkd.wdflogdump.

    • If you do not have a debugger connected, you can still access both logs. To learn how, see Video: Accessing driver IFR logs without a debugger.

    • When debugging a UMDF driver, you can merge framework logs with driver logs by issuing: !wdfkd.wdflogdump<drivername.dll>-m

  • UMDF logs (WudfTrace.etl) and dumps are now located in %ProgramData%MicrosoftWDF instead of %systemDrive%LogFilesWudf.

  • New debugger command: !wdfkd.wdfumtriage provides a kernel-centric view of all UMDF devices on the system.

  • You can run !analyze to investigate UMDF verifier failures or UMDF unhandled exceptions. This works for live kernel debugging as well as debugging user crash dump files from %ProgramData%MicrosoftWDF.

  • In KMDF and UMDF 2, you can monitor power reference usage in the debugger. For info, see Debugging Power Reference Leaks in WDF.

  • You can use !wdfkd.wdfcrashdump to display error information about UMDF 2 drivers. For more information, see !wdfkd.wdfcrashdump.

Performance Tracing tool for WDF drivers

You can use the Windows Performance Toolkit (WPT) to view performance data for a given KMDF or UMDF 2 driver. When tracing is enabled, the framework generates ETW events for I/O, PnP, and Power callback paths. You can then view graphs in the Windows Performance Analyzer (WPA) that show I/O throughput rates, CPU utilization, and callback performance. The WPT is included in the Windows Assessment and Deployment Kit (ADK).

For more information, see New Performance Tools for WDF Drivers in Windows 10 and Using the Windows Performance Toolkit (WPT) with WDF.

Additional support for HID drivers in UMDF

  • UMDF now fully supports HID filters (enumerated by HIDClass) and minidrivers. Simply port your existing KMDF driver or write a new UMDF 2 filter; the functionality is automatically enabled.

  • UMDF HID minidrivers that are enumerated by ACPI can perform selective suspend. For more information, see Creating WDF HID Minidrivers.

  • UMDF drivers can now be installed in the HID stack for low latency input devices such as touch and mouse. A driver for an input device should specify the UmdfHostPriority INF directive. For information, see Specifying WDF Directives in INF Files.

Support for interrupts for GPIO-backed devices

  • UMDF 2 supports interrupts for GPIO-backed devices like hardware push-buttons. KMDF supports these devices natively, without the workaround described in Handling Active-Both Interrupts. For more information, see Creating an Interrupt Object.

UMDF no longer requires WinUSB

New support has been added for USB drivers in UMDF. A UMDF 2 USB driver no longer uses WinUSB. To use the new functionality, the driver sets the UmdfDispatcher directive to NativeUSB, instead of WinUSB. See Specifying WDF Directives in INF Files.

Improved Performance

  • UMDF system components consume less disk space. Best slot machines to play at pechanga.

  • KMDF and UMDF drivers use less non-paged memory.

  • Improved framework version checking reduces header/library mismatches.

  • UMDF provides improved buffer mapping for HID transfers.

-->

With an INF file you can override the Extended Display Identification Data (EDID) of any monitor. A sample INF file, Monsamp.inf, that shows how to do this was provided with the Windows Driver Kit (WDK) through Windows 7 (WDK version 7600). Monsamp.inf is reproduced here.

For info on how to use and modify Monsamp.inf, see Monitor INF File Sections.

Approaches to correcting EDIDs

All monitors, analog or digital, must support EDID, which contains info such as the monitor identifier, manufacturer data, hardware identifier, timing info, and so on. This data is stored in the monitor’s EEPROM in a format that is specified by the Video Electronics Standards Association (VESA).

Monitors provide the EDID to Microsoft Windows components, display drivers, and some user-mode applications. For example, during initialization the monitor driver queries the Windows Display Driver Model (WDDM) driver for its brightness query interface and device driver interface (DDI) support, which is in the EDID. Incorrect or invalid EDID info on the monitor’s EEPROM can therefore lead to problems such as setting incorrect display modes.

There are two approaches to correcting EDIDs:

  • The standard solution is to have the customer send the monitor back to the manufacturer, who reflashes the EEPROM with the correct EDID and returns the monitor to the customer.
  • A better solution, described here, is for the manufacturer to implement an INF file that contains the correct EDID info, and have the customer download it to the computer that's connected to the monitor. Windows extracts the updated EDID info from the INF and provides it to components instead of the info from the EEPROM EDID, effectively overriding the EEPROM EDID.

In addition to replacing the EDID info as described here, a vendor can provide an override for the monitor name and the preferred display resolution. Such an override is frequently made available to customers through Windows Update or digital media in the shipping box. Such an override receives higher precedence than the EDID override mentioned here. Guidelines for achieving this can be found in Monitor INF File Sections.

EDID format

EDID data is formatted as one or more 128-byte blocks:

  • EDID version 1.0 through 1.2 consists of a single block of data, per the VESA specification.
  • With EDID version 1.3 or enhanced EDID (E-EDID), manufacturers can specify one or more extension blocks in addition to the primary block.

Each block is numbered, starting with 0 for the initial block. To update EDID info, the manufacturer’s INF specifies the number of the block to be updated and provides 128 bytes of EDID data to replace the original block. The monitor driver obtains the updated data for the corrected blocks from the registry and uses the EEPROM data for the remaining blocks.

Updating an EDID

To update an EDID by using an INF:

  1. The monitor manufacturer implements an INF that contains the updated EDID info and downloads the file to the user’s computer. This can be done through Windows Update or by shipping a CD with the monitor.

  2. The monitor class installer extracts the updated EDID info from the INF and stores the info as values under this registry key:

    Each EDID override is stored under a separate key. For example:

  3. The monitor driver checks the registry during initialization and uses any EDID info that's stored there instead of the corresponding info on EEPROM. EDID info that has been added to the registry always takes precedence over EEPROM EDID info.

  4. Windows components and user-mode apps use the updated EDID info.

Overriding an EDID with an INF

To override an EDID, include an AddReg directive in the INF for each block that you want to override, in the following format:

The block number is a zero-indexed value of the EDID block to override. The data bytes should be formatted as 128 hexadecimal integers that contain the binary EDID data. The '0x1' value after the block number is a flag indicating that this registry value contains binary data (FLG_ADDREG_BINVALUETYPE).

Add Monitor Driver Windows 10

Manufacturers must update only those EDID blocks that are incorrect. The system obtains the remaining blocks from EEPROM. The following example shows the relevant sections of an INF that updates EDID blocks 0, 4, and 5. The monitor driver obtains blocks 1 - 3 and any extension blocks that follow block 5 from EEPROM:

Windows 10 Fake Monitor Drivers

For more info on INFs in general, and AddReg and DDInstall in particular, see Creating an INF File.





Windows 10 Fake Monitor Driver
Back to posts
This post has no comments - be the first one!

UNDER MAINTENANCE