驅動程式 - Windows Driver Model (WDM) - 使用範例 - Assembly (ObjAsm) - 開發環境



參考資訊:
https://github.com/steward-fu/wadk
https://github.com/steward-fu/website/releases/download/wdm
https://github.com/steward-fu/website/releases/download/xt897

司徒目前使用Debian做為開發測試環境,Compiler使用UASM Linux版本,Linker則是使用lld-link,測試的作業系統目前使用WinXP,執行的模擬器則是QEMU(qemu-system-i386),由於QEMU支援Snapshot功能,因此只要做好Snapshot的環境,就可以相當方便測試WDM驅動程式

UASM

$ cd
$ git clone https://github.com/Terraspace/UASM -b v2.57r
$ cd UASM
$ vim H/globals.h +36
    #define inline

$ vim Makefile_Linux.mak
    22: c_flags =-w -std=c99 -Wno-int-conversion -Wno-incompatible-function-pointer-types -D __UNIX__ $(extra_c_flags)
    24: CC = clang

$ make -f Makefile_Linux.mak
$ sudo cp GccUnixR/uasm /usr/local/bin/

lld-link、wine、box86

$ sudo apt-get install gcc-arm* lld wine wine32-tools wine-development libwine fonts-wine -y

$ cd
$ git clone https://github.com/ptitSeb/box86 -b v0.2.0
$ mkdir box86/build
$ cd box86/build
$ cmake ..
$ make
$ sudo make install
$ box86 --version
    Box86 v0.2.0 b2d5587e

使用司徒預先做好的WinXP、Wine環境

$ cd
$ wget https://github.com/steward-fu/website/releases/download/wdm/winxp.gz
$ wget https://github.com/steward-fu/website/releases/download/wdm/winxp.qcow2
$ wget https://github.com/steward-fu/website/releases/download/wdm/myqemu
$ wget https://github.com/steward-fu/website/releases/download/xt897/wine_x86_env.tar.gz
$ wget https://github.com/steward-fu/website/releases/download/xt897/wine-6.2-x86.tar.xz

$ tar xvf wine-6.2-x86.tar.xz
$ mv wine-6.2-x86 ~/Wine
$ sudo ln -s ~/Wine/bin/wine /usr/local/bin/wine
$ sudo ln -s ~/Wine/bin/winecfg /usr/local/bin/winecfg
$ sudo ln -s ~/Wine/bin/wineboot /usr/local/bin/wineboot
$ sudo ln -s ~/Wine/bin/wineserver /usr/local/bin/wineserver

$ sudo mkdir /opt/qemu
$ sudo mv winxp.qcow2 winxp.gz /opt/qemu
$ sudo mv myqemu /usr/local/bin
$ sudo chmod a+x /usr/local/bin/myqemu

$ sudo vim /usr/local/bin/myx86
    #!/bin/bash
    WINEPREFIX=~/.wine_x86 box wine "$@"

$ sudo chmod a+x /usr/local/bin/myx86

$ tar xvf wine_x86_env.tar.gz

$ myx86 --version
    Box86 v0.2.0 b2d5587e built on May  4 2026 21:14:47
    wine-6.2

Clone wadk

$ cd
$ git clone https://github.com/steward-fu/wadk
$ sudo mv wadk /opt