Steward
分享是一種喜悅、更是一種幸福
驅動程式 - 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