私の環境:win7x64 + wdk7.6 + vs2012エクスプレス
インストールプロセスは:vs2012またはその他のMicrosoftのIDEをインストールし、コンテンツwdk7.6のすべてをインストール
WDKをインストールした後、最初の簡単なテストが適切にインストールされています。
まず、任意のコンパイラは、例えば、私はWindows XPのディレクトリの下のx86無料のコンパイラをオープンしましたWDK開きます
良い参照は、イベントは、次のいずれかのディレクトリに\ WDMのget \インスタンスは、例えば、私はCDのsrc \の一般を入力ディレクトリに移動し、インスタンスを選択し、ソースコードの例のインストールディレクトリのフォルダロットのsrcファイルがWDK。コンパイラのコマンドのビルドを入力します。-c
コンパイラが適切に設置された表示する必要がある場合、コンパイラのコマンドを実行します。
そして、選択したディレクトリに、ドライブが生成されます
インストールWDKの整合性を確認した後、書き込みソースコードの後、コンパイルがWDKのドライバを使用することができ、コンパイラの3つの方法がありますが、
1:手動でコンパイルします。
手動で手書きの2つのプロファイルをコンパイルするには
それぞれのmakefileファイル
#このファイルは通常、一行だけで、先頭のスペースを持つことはできません変更する必要はありませんが
!$(NTMAKEENV)\のMakefile.def INCLUDE
ファイルのソース、より多くの特定のフォーマット、参考例のソースコードファイルのソースを
このライン以下に指定位DDK_HelloWorld.sysドライブ名生成
TARGETNAME = DDK_HelloWorld
この線より下型駆動#指定されたファイル生成した駆動を指す
TARGETTYPE = DRIVERの
ドライバ\ SYS \ DDK_HelloWorld.sysは、TARGETPATHを指定されていない場合、パスをこの行の下に生成された#を指定します、それはデフォルト値である
TARGETPATH = SYSの
この行の下に#が関連するヘッダファイルのディレクトリパスを指定します
。\; = $(BASEDIR)\ INC \ DDK INCLUDES
$(BASEDIR)\ INC \ CRT;。。\ $(BASEDIR)\ INC \ APIを。 \
##一番上の行を空にし、同等のディレクトリ$(BASEDIR)WDK
指定駆動源.C以下#ラインを* .CPPまたは*
ソースmyddk.cpp = \
非標準の例:
#include「ntddk.h」
//これはC ++ソースコードである場合、「C」修飾関数宣言のextern、またはIDEコンパイルされた関数は、従来のSTDCALLを呼び出しているときに、特定すべき
//関数の呼び出し規約内にまたは手動で指定したソースコンパイル時_stdcall
のextern "C" NTSTATUS DriverEntry(PDRIVER_OBJECT DriverObject、RegistryPathをPUNICODE_STRING)は{
STATUS_UNSUCCESSFULと返します。
}
そして、あなたは、コンパイラに位置するソースファイルとメイクファイルへのパスを入力して、インストールだけでなく、WDKかどうかをテストすることができ、コンパイル
2:手動で設定IDE、IDE自動コンパイル
空のWin32コンソールプログラムを作成します。
CまたはC ++ソースファイルを追加します。
ソースコード
#include「ntddk.h」
呼び出し規約//これはC ++ソースコードである場合、にextern「C」修飾された関数宣言、または指定された関数であるべきであるSTDCALL IDEがコンパイル時である
か、手動でソース規則の指定された機能がSTDCALLある内呼び出すときコンパイル
extern "C" NTSTATUS(RegistryPathをPUNICODE_STRING PDRIVER_OBJECT DriverObject)DriverEntryは{
STATUS_UNSUCCESSFULと返す。
}
溶液を作成
属性を設定します。
従来の
ターゲットファイルの拡張子:.SYS //必須
VC ++ディレクトリ
の実行ディレクトリ:D:\ WinDDK \ 7600.16385.1 \ビン\ x86の。
ディレクトリ含む:D:\ WinDDK \ 7600.16385.1 \ INC \ DDK; D:\ WinDDK \ 7600.16385.1 \ INC \ CRT; D:\ WinDDK \ 7600.16385.1 \ INC \ API。
ライブラリディレクトリ:D:\ WinDDK \ 7600.16385.1 \ libに\ win7の\ I386。
C / C ++ |全般
デバッグ情報の形式()/ Z7(C7互換//オプション
(レベル(/ W2)2 //任意の警告レベル
エラーとして警告(/ WX(ある)//オプション
C / C ++ |最適化
最適化(無効/ OD)//オプション
C / C ++ |プリプロセッサ
プリプロセッサの定義:WIN32 = 100; _X86_ = 1; WINVER = 0x501; DBG = 1 //必須
C / C ++ |コード生成
簡易リビルドの有効化:いいえ//オプション
基本的なランタイム・チェック://オプションのデフォルト値
ランタイム:マルチスレッドデバッグ(/ MTdに)またはマルチスレッド(/ MT)//提案選挙<マルチスレッドデバッグ(/ MTdに)の私の選択です>
セキュリティチェック:いいえ//オプション(LINKを回避するためには、表示されます。エラーLNK2001:未解決の外部シンボル__security_cookie)
C / C ++ |ハイ
呼び出し規約__stdcall(/ Gzの)//必要
リンカ|全般
インクリメンタルリンクを有効にする:NO(/ INCREMENTAL:NO)//提案選挙について
インポートライブラリを無視://は省略可能(この値に設定し、追加のライブラリディレクトリを追加する必要があります:D:\ WinDDK \ 7600.16385.1 \ libに\ win7の\ I386セットプロジェクトは、IDE環境に依存することないように)されます
いいえ(この値に設定した場合、関連する設置環境IDEに依存しません)
リンカ|入力
追加の依存:ntoskrnl.lib; Hal.lib; wdm.lib; wdmsec.lib; wmilib.lib; ndis.lib; MSVCRT.LIB; // LIBCMT.LIB必要
// NTドライブntoskrnl.lib WDMドライブwdm.lib
(HalXXX関数Hal.lib、WmiXXX機能wmilib.lib、NdisXXX機能ndis.lib)
()Microsoftの標準ライブラリMSVCRT.LIB MSVCRTD.LIB(デバッグライブラリを増やす必要がありLIBCMT.LIB IBCMTD.LIB(デバッグライブラリ)必要に応じて)
(あなたがソースコード内のソースファイルがある場合は、プロジェクトに必要なファイルリストのフィールドのライブラリをTARGETLIBS)
すべての既定のライブラリを無視:はい(/ NODEFAULTLIB)//必要
リンカ|マニフェストファイル:
生成されたリスト:いいえ//必要
;使用しない「/ MANIFEST」リンク「/ MANIFEST」と「/ DRIVER」の規範互換性がない:それ以外の場合>エラーLNK1295があるだろう
ありません//必須:有効なユーザーアカウント制御(UAC)
致命的なエラーLNK1295:それ以外の場合> LINKがあるだろう "/ MANIFESTUAC" と互換性がない "/ DRIVER" 規範; "/ MANIFESTUAC" リンクを使用していません
リンカ|デバッグ:
デバッグ情報(/ DEBUG)を生成//オプション
(/ MAP)//オプション:画像ファイルを生成
画像ファイル名:$(TARGETDIR)$(TargetNameは).MAP //オプション
リンカ|システム(システム)
サブシステム:コンソール(/ SUBSYSTEM:CONSOLE)//必要
スタック予約サイズ:4194304 //オプション
コミットスタックサイズ:4096 //オプション
ドライバ:ドライバ(/ DRIVER)//必要
リンカ|詳細:
エントリポイント:DriverEntry //必須
設定と効果:れる(/ RELEASE)//オプション
ランダムベースアドレス://クリアボックスデータを削除。(ないそうもありません、それはテキストボックスをきれいにすることです)//必要
それ以外の場合は電子が存在します:\ xxx.sysという:致命的なエラーLNK1295:「/ DYNAMICBASE」と「/ DRIVER」規範互換性がない;「/ DYNAMICBASE」リンクを使用していません
データ実行防止(DEP)://クリアボックスデータを削除。(はいもありませんが、クリーンテキストボックスでないことがある)//必要
それ以外の場合は電子が存在します:\ xxx.sysという:致命的なエラーLNK1295:「/ NXCOMPAT:NO」と「/ DRIVER」互換性のない規範、リンクを使用していない「/ NXCOMPAT:NO」
ベースアドレス:0x10000番地//提案選挙について
これまでのところ、それが設定されています。
有料版のvs2012は、テンプレート駆動型の開発を統合し、残念ながら私は2012の無料版を持っていると言われています。
vs2012 + XPのシステムドライブのWDK 8.0開発に関するいくつかの方法をコピーします。
私たちは、古い1.9(またはそれ以前)に、VS2012やVS2013で使用KMDFのバージョンにする必要があります。
プロジェクトのプロパティプロジェクト設定では、設定項目ドライブフレームタイプドライバモデルを設定します。ドライバ選択のタイプはKMDFであるべきで、他の2つのオプションが利用可能なWDMおよびエクスポートドライバ(WDM)されています。もちろん、KMDFアイテムはここで説明します。次の二つのキーの元KMDFのバージョンでは、ここで変更することができます。VS2012駆動プロジェクトから切り出し、以下の図、メジャーバージョン1、マイナーバージョン11を使用するがデフォルト。限り時間はバージョン9を変更して、再コンパイルを保存し、ドライバによってコンパイルKMDF 1.9バージョンですので、あなたは、システム上で実行されているXPをインストールすることができます。
---------------------
著者:lxqq0000
出典:CSDN
オリジナルます。https://blog.csdn.net/lxqq0000/article/details/30220289
免責事項:この記事ブロガーのオリジナルの記事、複製など、ボーエンのリンクを添付してください!