構成環境 - 開発・ドライブの下にVS2012 + wdk7600

私の環境: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 
免責事項:この記事ブロガーのオリジナルの記事、複製など、ボーエンのリンクを添付してください!

おすすめ

転載: blog.csdn.net/mao0514/article/details/90639661