少しずつ書き進めてます。
チュートリアルドキュメント。
HelloWorld のソースコードまでできたので、
次はビルド方法です。
その他雑多なファイルを用意する
デバイスドライバの本体となるコードは実装し終わりましたが、ビルドするためにはいくつか細かいファイルを用意する必要があります。
簡単な説明とともに例を挙げていきます。
リソーススクリプト(.rcファイル)
DLLの説明やファイル名などを#defineしてからcommon.verをインクルードすると、その中で適宜設定してくれます。
#include <windows.h> #include <ntverp.h> #define VER_FILETYPE VFT_DLL #define VER_FILESUBTYPE VFT_UNKNOWN #define VER_FILEDESCRIPTION_STR "UMDF Sample DeviceDriver" #define VER_INTERNALNAME_STR "UmdfHello" #define VER_ORIGINALFILENAME_STR "UmdfHello.dll" #include "common.ver"
Exports.def ファイル
DLLファイルとして外部に公開しなければならない関数はDllGetClassObjectだけですのでEXPORTSしておきます。
ライブラリ名は先ほどリソーススクリプトで書いたものと統一します。
LIBRARY UmdfHello.dll EXPORTS DllGetClassObject PRIVATE
Sources
このファイルは先ほど!INCLUDEしたmakefile.defからさらに!INCLUDEされるファイルです。
標準で設定されない変数やリンクファイルなどの設定を行います。
ファイル名などは適宜設定します。
UMDF_VERSION=1 UMDF_MINOR_VERSION=5 TARGETTYPE=DYNLINK USE_MSVCRT=1 C_DEFINES=$(C_DEFINES) /D_UNICODE /DUNICODE TARGETLIBS=\ $(SDK_LIB_PATH)\strsafe.lib \ $(SDK_LIB_PATH)\kernel32.lib \ $(SDK_LIB_PATH)\advapi32.lib TARGETNAME=UmdfHello DLLDEF=Exports.def SOURCES=Hello.cpp Hello.rc
ビルドする
細かいファイルも全部揃ったらビルドします。
まずは
[Windows Driver Kits] -> [Build Environments] -> [Windows XP] -> [Windows XP x86 Checked Build Environment]
ここから環境設定済みのプロンプトを起動します。
Checked Buildはいわゆるデバッグバージョン、Free Buildはいわゆるリリースバージョンです。
次に、cdコマンドで先ほどのファイル一式がそろったフォルダへ移動し、buildと叩きます。
しばらくして
3 files compiled - 104 LPS 1 library built 1 executable built
このように完了メッセージがでてプロンプトに戻ってこればビルド完了です。objchk_wxp_x86\i386\UmdfHello.dllが生成されていれば成功です。