iT邦幫忙

2023 iThome 鐵人賽

DAY 4
0

微軟有提供一系列的驅動程式範例,目前最新的驅動程式範例連結為microsoft/Windows-driver-samples,可直接下載或使用git clone/fork來取得驅動程式範例。

git clone https://github.com/microsoft/Windows-driver-samples.git

在範例中包含了許多常見裝置的驅動程式,例如藍芽、音訊、HID、網路、儲存裝置、WMI等。而如果要參考KMDF的範例,下面列出了幾個含有KMDF實作的例子。

在這當中以Non-PnP Driver Sample適合當作參考的範例,因為這個Non-PnP驅動程式提供了應用程式部分核心層級的服務,而且可以在應用程式運行時加載,並於退出應用程式時卸載,而且在例子中也有提供windows console app用於安裝及測試Non-PnP驅動程式是否正確運行。

下面是Non-PnP Driver Sample的檔案結構,分為exesys兩個部分,分別為測試和安裝驅動程式的windows console app及驅動程式本身,而ioctl.sln則是Visual Studio的解決方案檔。

    Windows-driver-samples
          |------general
          |       |---ioctl
          |       |    |--kmdf
          |       |        |------exe
          |       |        |       |------install.c
          |       |        |       |------nonpnp.inf
          |       |        |       |------nonpnpapp.vcxproj
          |       |        |       |------nonpnpapp.vcxproj.Filters
          |       |        |       |------testapp.c
          |       |        |------sys
          |       |        |       |------localwpp.ini
          |       |        |       |------nonpnp.c
          |       |        |       |------nonpnp.h
          |       |        |       |------nonpnp.rc
          |       |        |       |------nonpnp.vcxproj
          |       |        |       |------nonpnp.vcxproj.Filters
          |       |        |       |------public.h
          |       |        |       |------trace.h
          |       |        |------ioctl.sln

各檔案的詳細說明如下:

  • exe
    • install.c: 安裝Non-PnP驅動程式所需的函式。
    • nonpnp.inf: 安裝Non-PnP驅動程式所需的inf檔案。
    • testapp.c: 測試及安裝Non-PnP驅動程式的windows console app本體。
  • sys
    • nonpnp.c: Non-PnP驅動程式所需的所有函式。
    • nonpnp.h: Non-PnP驅動程式所需的標頭檔。
    • public.h: Non-PnP驅動程式及windows console app的共用標頭檔。
    • trace.h: 使用WPP軟體追蹤必要的標頭檔。

以上就是Windows驅動程式範例如何下載及Non-PnP Driver Sample的檔案架構。

參考內容

Windows 驅動程式範例 - Windows drivers | Microsoft Learn


上一篇
Day03 Windows Driver Framework 編譯環境建置
下一篇
Day05 非隨插即用(Non-PnP)驅動程式-1
系列文
Windows Driver + Electron 學習筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言