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



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

司徒目前使用Debian做為開發測試環境,Assembler使用UASM Linux版本,Linker則是使用lld-link,測試的作業系統目前使用Windows XP,模擬器使用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
$ mkdir box86/build
$ cd box86/build
$ cmake ..
$ make
$ sudo make install

使用司徒預先做好的Windows XP、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/wdm/wine_env.tar.gz

$ 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 box86 wine "$@"

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

$ tar xvf wine_env.tar.gz

$ myx86 --version
    wine-10.0 (Debian 10.0~repack-6)

Clone wadk

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

假如在Windows WSL環境測試,記得設定wslconfig

C:\> vim ~/.wslconfig
    [wsl2]
    guiApplications=true
    nestedVirtualization=true