Technical Document #10

Technical Document #10        [Product Version: 7.0.0 and above]
Does WinDriver support development in C#?

Yes. Beginning with version 7.0.0 WinDriver provides specific support for development of .NET drivers, including development in C#.
For information on WinDriver's general support for the .NET framework, refer to Technical Document #128.

The WinDriver .NET API DLLwdapi<version>_dotnet.dll (e.g., wdapi800_dotnet.dll in WinDriver v8.0.0) provides a .NET version of the high-level WinDriver APIs, implemented using managed extensions for C++. This DLL can be used to develop a driver in any .NET language, including C#. The DLL file is found under the WinDriver\lib\<CPU>\<.NET version> directory (e.g., WinDriver\lib\x86\v1.1.4322) and its source code is found under the relevant WinDriver\src\ directory.

v7.0.x Note: In v8.0.0 of WinDriver we added both versioning and 64-bit support to the DLL, which resulted in a different DLL name and new locations for the related files. In versions 7.0.1 and 7.0.2 of WinDriver the name of the DLL was wdapi_dotnet and in v7.0.0 its name was wdnetlib.dll. In all 7.0.x versions the DLL could be found both under the WinDriver\lib and WinDriver\redist directories and its source code was found under the WinDriver\ directory.

Beginning with v8.0.0 of WinDriver you can use WinDriver's DriverWizard utility to generate C# driver code for both USB and PCI devices.

WinDriver also includes the following .NET C# samples, which utilize the WinDriver .NET API DLL:

  • USB:
    • The WinDriver\\usb_sample directory contains a C# USB library (usb_lib_dotnet.dll) and a sample C# USB diagnostics application (csharp_usb_sample.exe).

  • PCI:
    • The WinDriver\\pci_sample directory contains a C# PCI library (pci_lib.dll) and a sample C# PCI diagnostics application (pci_sample.exe).

    • The WinDriver\plx\dotnet directory contains a C# library (plx_lib_dotnet.dll) and a sample C# diagnostics application (PLX_Sample.exe), designed specifically for handling PLX devices.

To develop a C# driver with WinDriver, either use DriverWizard to generate a diagnostics C# driver application for your device, or use the WinDriver C# sample that most matches your design, and then modify the generated/sample code in accordance with your hardware specification and desired driver functionality. Alternatively, you can use the generated/sample code as a reference for writing your own WinDriver C# driver.