問題タブ [wdm]
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.
c++ - このドライバーをインストールするにはどうすればよいですか?
MSDN から IOCTL サンプル ドライバーをダウンロードしました。この例では、実行可能ファイルを実行して SYS ファイルからドライバーをロードしようとしていますが、StartService を呼び出すと次のエラーが発生します。
エラー コード ドキュメントによると、577は次のことを意味します。
Visual Studioでドライバーのプロジェクト設定に移動し、これらを設定したため、起動しない理由がわかりません。
署名モード -> 「テスト署名」
テスト証明書 -> [テスト証明書の作成] オプションを使用してテスト証明書を作成し、選択しました。
では、今何が問題なのですか?このドライバーをインストールするにはどうすればよいですか?
c++ - WDM カーネル モード ドライバーから最大 CPU 周波数を計算するにはどうすればよいですか?
問題は次のとおりです。IOCTL サンプル スケルトンに基づいて、カーネル モードの WDM ドライバー内で CPU 周波数を計算しようとしていますが、QueryPerformanceFrequency または QueryPerformanceCounter を使用しようとするとコンパイルされません。おそらく、カーネルモードドライバーであるため、これらのメソッドを含む Windows.h を含めることができないため、代わりに Ntddk.h を使用する必要があるように感じます。
通常、Win32 コンソール アプリケーションでこの関数を使用してこの情報を計算しますが、Intel CPU のターボ ブーストを考慮していないため、不正確です。
Intel チップの CPU 周波数の実際の式は、最大周波数にチップ自体の 2 つの CPU レジスタ (APERF と MPERF) から取得できる比率を掛けたものです。
これは次のコードに変換されます。
QueryPerformanceFrequency から maximumFrequency を取得できることを望んでいましたが、それを含めることができないため、どうすれば最大周波数を取得できますか?
windows - エラー C1083: インクルード ファイルを開けません: '\inc\wxp\warning.h': そのようなファイルまたはディレクトリはありません
背景: そこで、Windows ドライバー モデルのプログラミングを取り上げ、Visual Studio 2013 Ultimate を使用して最初のサンプルをビルドしようとしました。この本は非常に評判が良いようですが、サンプル コードの更新はありません。
現在の msbuild / Visual Studio の代わりに古い「ビルド」を使用する兆候がいくつか見られました。しかし、それは必要な場合を除き、私が行う準備ができていない別の学習です (特に、nmake またはビルドが十分に迅速に見つからず、使用する必要のない古いビルドプロセスを学習するため)。
問題: エラー C1083: インクルード ファイルを開けません: '\inc\wxp\warning.h': そのようなファイルまたはディレクトリはありません stddcls.cpp
サンプルをビルドすると、このエラーが発生します。インクルード パスに wdm.h と warning.h のフォルダーを含めました。Wdm.h は解決されましたが、warning.h は引き続きエラーをスローします。また、warning.h が含まれている/参照されている場所もわかりません。
必要に応じて、コード全体を投稿できます。
はい、ドライバー開発は初めてです。
この本が古すぎて使えない場合は、Windows ドライバー dev の "新しい" チュートリアルへのポインターを歓迎します。
device-driver - UNICODE_STRING * を UNICODE_STRING に変換しようとするとエラーが発生します
Steve Townsend Answer
に基づいてプロセスが実行されたときにイメージのフルパスを取得するための単純なドライバーを作成しようとしています。ドライバーからの呼び出しのコードを以下に記述します。ProcessCallback
PsSetCreateProcessNotifyRoutine
DriverEntry
しかし、コードをビルドしようとすると、以下のエラーが発生します str =(UNICODE_STRING*)&strBuffer;
:
エラーで UNICODE_STRING を変換できません * UNICODE_STRING に
どうしたの??
windows - ProcessID をプロセス ハンドルに変換する
私はモニタープロセスの基本的なドライバーを書き、プロセスパスを取得しようとしています。を使用してプロセス情報を
作成および取得します
が、関数で を使用して現在のプロセスを取得しようとすると、別のプロセスを実行する現在のプロセスが得られます。 PsSetCreateProcessNotifyRoutine
ZwQueryInformationProcess
ProcessCallback
HANDLE
NtCurrentProcess
例えば:
myProgram.exe を c:\ で実行しようとすると、Windows エクスプローラーを使用して C:\ に移動し、myProgram.exe を実行すると、myProgram.exe が explorer.exe 内で実行されるため、ドライバーが explorer.exe パスを提供します。
ProcessCallback ヘッダーに processID があります
プロセスハンドルに変換できますか?
windows - Windows カーネル ドライバーからファイルに永続的に書き込む
こんにちは、カーネルレベルのプログラミングは初めてで、単純なログ書き込みドライバーを構築しようとしています。私が達成しようとしているのは、永続的なドライバーが、定義済みの間隔ごとに参照テキストをシステムパスのファイルに書き込むようにすることです。(私はまだ IRQ フックに慣れていません)
タイミングのために次のグローバルがあります
DriverEntryで次のコードを呼び出します(ただし、次のコードの問題は、コンピューターの再起動時に書き込み機能が失敗することです)誰かが修正を提案できますか?IRQ Major call で呼び出す必要がありますか?
windows - Windows Server のデバッグ: WDM カーネル モード ドライバー ブレークポイントでのユーザー モード スタックの表示
Windows Server 2012 R2 を実行している Hyper-V VM へのパイプ シリアル接続を介して、Visual Studio カーネル モード デバッガーを使用して WDM カーネル ドライバー IOCTL をデバッグしています。Driver IOControl 内でブレークポイントに到達すると、ユーザー モードのコール スタックを表示できますか?
現時点では、カーネル スタックしか表示されません。たとえば、次のようになります。
dll - .sys ファイルを明示的にリンクする方法
Windows で .sys ファイルに明示的にリンクするにはどうすればよいですか? MSDN によると、LoadLibrary() および GetProcAddress() 関数を使用して、基本的に明示的にリンクし、dll のメンバーにアクセスできます。これを使用して、少なくとも関連する dll のハンドルを取得できますが、.lib または .sys で試してみると、機能しないか、null が返されます。おそらく.libでは機能しないことは理解できますが(名前にライブラリと表示されていても)、.sysファイルは通常dllであると読みました。
これはコンパイルされますが、返されるアドレスは.sysファイルに対してゼロになります。より一般的なWindows dllを使用すると、ゼロは返されません。エクスポートされた関数にアクセスできるように .sys ファイルをリンクするにはどうすればよいですか?
assembly - asm を使用して、キーボード (PS/2) スキャン コード セットを取得します。
キーボードの現在のスキャン コード セットを取得したいと考えています。私が使用しているコードは、多かれ少なかれ次のようになります。
現在のコントロール セット番号を取得する代わりに、キーボードから 0xFA を受け取ります (確認)。どんな提案にもとても感謝しています。
(私は Windows ドライバーからこのコードを実行しました)