問題タブ [wdk]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
windows - Windows デバイス ドライバーの開発時にソース コードを共有する方法
TARGETNAME=OneOfMyDrivers
TARGETTYPE=DRIVER
INCLUDES=..\inc; ..\..\Common\Crypto
TARGETLIBS=$(SDK_LIB_PATH)\wdmsec.lib
SOURCES=OneOfMyDrivers.c\
OneOfMyDrivers.rc\
..\..\Common \Crypto\aes_modes.c \
..\..\Common \Crypto\aescrypt.c \
..\..\Common \Crypto\aeskey.c \
..\..\Common \Crypto\aestab.c
スタティック ライブラリ (この場合は Crypto モジュール) を作成せずに、
この makefile をこの方法でビルドできますか。なぜうまくいかないのかわかりません。
Crypto モジュールのソース コードを他のドライバー (およびアプリ) と共有したい
出来ますか?
静的ライブラリを作成する唯一の方法ですか?
c++ - ZwQueryInformationProcessを使用してカーネルドライバーでProcessImageFileNameを取得するにはどうすればよいですか?
私は自分のアプリケーション用の単純なカーネルドライバーを書いています(非常に単純なマルウェア対策アプリケーションを考えてみてください)。
私はフックして、発信者プロセスへのハンドルを取得するためにZwOpenFile()使用しました。PsGetCurrentProcess()
PEPROCESS構造体を返します。
私はとをZwQueryInformationProcess()取得するために使用していPIDますImageFileName:
この方法でプロセスを取得しようとしていますFullPath(ただし、BSODを取得します):

ご覧のとおり、str.Buffer空であるかゴミでいっぱいです。おそらく、strビアの充填中にバッファオーバーフローがZwQueryInformationProcess()発生すると、BSODがトリガーされます。

どんな助けでもいただければ幸いです。
windows - Windows DDK ヘッダーを含める
ユーザー空間の Win32 アプリケーションを作成しています。ただし、このアプリケーションの一部としてDeviceIo、Windows 1394 スタックを呼び出す必要があります。これらのDeviceIo呼び出しのプロトタイプを含むヘッダー ファイルは、次の Windows DDK の一部として含まれています。
(ヘッダーは「カーネル モードのみ」であると主張していますが、プロトタイプはユーザー空間 IOCTL 用です。) このファイルをアプリケーションに含める最良の方法は何か疑問に思っています。
直接それを行う#includeのはお勧めできません (パスはとりわけ DDK のバージョンによって異なります)。さらに、DDK をインストールする必要はありません。非常にヘッダーファイル。
したがって、最善の行動方針は何ですか?アプリケーションのソースに単純化されたバージョンを直接含めることを検討していましたが、よくわかりません。
windows - Windows :(仮想)ビデオカードドライバを作成することは*可能*ですか?
仮想モニターを作成したい。これが機能する方法は、仮想モニターがデスクトップのウィンドウに表示されることです。Windowsが知る限り、それは単なる別のモニターです。
実際問題として、ビデオカードドライバとして実行する必要があると思います(つまり、ビデオがLCDパネルにワイヤで送信されるのではなく、デスクトップの別のウィンドウに移動します)。
私が説明している音は、技術的には可能ですか?(DDKの観点から)
注:必要に応じて十分に高い解像度を持つ仮想PCがないため、仮想PCを使用できません。また、それは私が求めていたものではないからです。
注:私の理由は重要ではありませんが、私はいくつかを補うことができます:
- 高dpi設定(288dpi)でアプリケーションをテストしたい
- iPadがVNCできるモニターを作成したい
- ファミリーTVはメインモニターで動作します
- ハイジャック犯はバスを監視しており、乗客を降ろしている疑いがある場合はバスを爆破します
- 私はすべての人類のために、人間の知識と理解の限界を広げようとしています
winapi - PCIアダプターの物理的な場所を特定する
複数のPCIアダプターを使用できるWindowsアプリケーションがあります。これらのアダプタはすべて、他のハードウェアまたはケーブルへの外部物理接続を備えています。当社のソフトウェアは、各カードの物理的な接続が何に接続されているかを認識するように構成されています。複数のサウンド入力と出力をサポートするオーディオソフトウェアを想像してみてください。オーディオソフトウェアは、アダプター1のマイクがリードシンガーであり、アダプター2のマイクがギターであることを認識するように構成されています。
たまたま、このソフトウェアは、ExpressCardやPCカードアダプタを搭載したラップトップで実行されることがよくあります。そのため、ユーザーは定期的にアダプターを取り外すことができます。さらに、お客様は1台のラップトップに収まるよりもはるかに多くのアダプターを持っている可能性があります。したがって、誰かがアダプタA(PCカード)とB(ExpressCard)をラップトップにインストールし、ソフトウェアを構成していると想像できます。彼らは現在、歌手のマイクがPCカードアダプターに接続され、ギターのマイクがExpressCardアダプターに接続されていることを期待しています。その後、オフィスに戻り、アダプターを取り出して、他のすべてのアダプターと一緒に山に置きます。翌日、ソフトウェアを使用するときに、アダプターC(PCカード)とD(ExpressCard)を入手します。彼らがこれらのカードをシステムに接続すると、
この機能がないと、ユーザーはカードを変更するたびにソフトウェアを再構成する必要がありますが、これは特にユーザーフレンドリーではありません。
WindowsのハードウェアアダプタのPCIチェーン内の場所を特定する方法はありますか?この目標を達成する他の方法はありますか?
これをWindowsXP以降で動作させたいのですが。ハードウェアドライバを制御するため、必要に応じてそこで変更を加えることができます。
device-driver - カーネル モードで NTQueryKey にリンクする方法
私の人生では、デバイスドライバーで宣言された NTQueryKey 値を解決する方法がわかりません。デバイス ドライバーのフォーラムを探しましたが、見つかりませんでした。
誰かが私を正しい場所に向けることができますか? OSR は、NTQueryKey にリンクする方法などの愚かな質問にはあまり反応しません。
これが私のプロトタイプです:
正常にコンパイルされますが、リンカーはそれを好みません。
ありがとう
visual-c++ - MS Visual C++ 2008 で WDK をロードする正しい方法は?
デバイス ドライバーを含むプロジェクトがあり、開発者はそれをコンパイルできます。MS Visual C++ 2008 をインストールしましたが、最初のエラーは「致命的なエラー C1083: インクルード ファイルを開けません: 'ntddk.h': そのようなファイルまたはディレクトリはありません」でした。Microsoft の Web サイトから WDK をダウンロードしてインストールし、[スタート] -> [すべてのプログラム] -> [Windows Driver Kits] -> [WDK 7600.16385.1] -> [Build Environments] -> [Windows XP ] および「x86 Checked Build Environment」および「x86 Free Build」も実行しました。環境"。
問題が解決しないため、手動でパスを追加する必要があることに気付きました。何を追加すればよいかわからないため、次のことを試しました。
MS Visual C++ 2008 -> ツール -> オプション -> プロジェクトとソリューション -> VC++ ディレクトリ -> インクルード ファイルと追加C:\WinDDK\7600.16385.1\inc\ddk したところ、次のようになりました。
ntdef.h下で見つけC:\WinDDK\7600.16385.1\inc\apiて追加しましたが、今では多くのエラーと警告が表示されます。このプロジェクトは開発者ワークステーションで正常にコンパイルされるため、構成に問題があると思います。
デバイス ドライバーをコンパイルするために MSVC++ 2008 に追加する正しいパスは何ですか?
c++ - DDK「ハローワールド」
Windows 用のドライバーの作成を開始するにはどうすればよいですか? ある種の公式の DDK "Hello World" の例はありますか?
最初は頭がいっぱいになると思いますが、最終的には、MIDIメッセージが物理デバイスではなくユーザーアプリケーションから来るMaple Virtual MIDI Cableのような単純なMIDIドライバーを作成したいと思います。
(市販の MIDI ループバック ドライバを使用する際の問題は、入力側と出力側の存在がユーザーを混乱させることが多いことです。私のアプリケーションは、他のプログラムの MIDI 入力に送信される MIDI 出力を生成します。ハードウェアではなく私のプログラムに接続する偽のドライバーを作成できれば、この混乱は解消されます。)
お時間をいただきありがとうございます。
windows - ディスク上のドライバーとメモリにマップされたドライバーの違いの原因は何ですか?
ねえ、今日、NDIS.sys のバイナリ diff を実行しようとしましたが、奇妙なことに気付きました。私は関数を取り、それを比較し始めました。最初の 30 バイトは、ディスク (IDA を使用) とメモリ (WinDbg を使用) で同じでした。すると、何かが変わった。「 jmp_imp_XXXXX 」のようなものを見ました。JMP バイトは同じでしたが、アドレスが異なっていました。
私の質問は - 何が違いを生むのですか? 引っ越しの関係もあると思います。ジャンプは同じモジュール内でアドレス指定することですが、これは長いジャンプであるため、モジュールのベース アドレスに相対的になります。再配置が発生した場合、このアドレスも再配置する必要がありますが、同じモジュール上にあります。
私は正しいですか、それとも完全に間違っていますか? :-) ありがとう。
windows - WDMコンパイラのインクルードパスを取得するにはどうすればよいですか?
Windows XP用のデバイスドライバーのソースコードを読んでいますが、WDMコンパイラの正確なインクルードパスを知りたいです。私はこれらが含まれるべきであることを知っています:
しかし、WDMビルドが使用する他のパスがいくつかあるはずです。たとえば、'__int32'getがどこで定義されているのかわかりません。
ちなみに、同様に、WDMリンカーが必要とするライブラリパスを取得する方法も知りたいです。