問題タブ [windows-kernel]
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 - デバイスドライバー開発者になる方法
私は C++/MFC/Qt/Win32 開発者です。デバイスドライバープログラミングに移行したかったのです。最近、Ronald D. Reeves の Windows 7 Device Driver を購入しました。そして、アマゾンのレビューを見て、がっかりしました。デバイス ドライバーのプログラミングに向けてどのように進めればよいか教えていただけますか。
よろしく
windows - カーネル ドライバーからのフック プロセス ソケット呼び出し
プロセス ソケット呼び出し (送信、受信など) をフックし、自分の関数でそれを傍受できるカーネル ドライバーの例を誰か教えてもらえますか?
ありがとう!
c - FsRtlIsNameInExpressionは何にも一致しません
ボイヤームーアアルゴリズムを使用してカーネルドライバーで文字列照合を行いますが、基本的なワイルドカードサポートも実装する必要があります。SOに関するこの回答は、私のニーズにぴったりの関数FsRtlIsNameInExpression
について言及しています。Unicode文字列の大文字と小文字を区別しないようにさえ見えます。
しかし、単純な文字列をそれ自体と一致させることさえできません。
私はいくつかのことを試しましたが、FsRtlIsNameInExpressionは何にも一致しません。これが私がテストするために使用したいくつかのコードです(私は私のルーチンMyTest
の最後に呼び出しを置きました)。DriverEntry
記録のために :
- 私はWDKバージョン7600.16385.1を使用しており、ビルドをチェックしています(Windowsではなく私のコード)
- ドライバーは、Windows 7Ultimate64ビット上のWindows7Pro64ビットでホストされている仮想ボックスで実行されます
- ドライバーはテスト証明書によって署名されています
- カーネルデバッガーでコードをトレースします
- コードはクラッシュしませんが、ユーザーモードで呼び出すことはできません
私が行方不明になっていることは明らかですか?
windows - Windowsカーネルのシステムコールトレースでは、これらの謎のアドレスは何ですか?
Windows Server 2008 R2でsyscallのカーネルトレースを実行するために、Event Tracing for Windows(ETW)を使用しています。
私は走っています:
結果のカーネルトレースでは、SysCallAddress属性を調べており、期待するものがたくさんあります。たとえば、nt!NtWriteFileである0xFFFFF80001999EE0です。
問題は、0xFFFFF960の範囲に多くのアドレス(たとえば0xFFFFF9600004421C)が表示されており、これらのアドレスに何があるのかわからないことです。カーネルデバッガーのlnコマンドは、これらのアドレスのいずれについても情報を返しません。カーネルトレーサーがシステムコールと見なすこれらのアドレスに何が存在するかを誰かが知っていますか?
debugging - Windowsカーネルのデバッグ-スレッドのメッセージキューのアドレスを取得しますか?
アプリケーションのメインスレッドのメッセージキューの内容を監視したいのですが、そのアドレスを取得する方法がわかりません(WinDbg、カーネルデバッグ)。誰かが私にヒントを持っていますか?重要なのは、メインスレッドがWaitForSingleObjectに長期間留まると、後でPostMessageを呼び出すときに「クォータが足りません...」というメッセージが表示されることがあります。メッセージキューがオーバーフローしていることは明らかですが、その間に誰がメインスレッドにこれほど多くのメッセージを投稿しているかを(Spy ++で)見つけることができません。
いいえ、現時点ではひどいデザインを変更することはできません:)イベントを長く待つためにメインスレッドを使用してはいけないことはわかっていますが、私が言ったように、今後数か月で変更することはできません。
どのメッセージがキューをオーバーフローするかを知りたいのですが、2番目のアイデア(最初はSpy ++)は、メインスレッドのメッセージキューを監視することです。
おそらく他に良いアイデアがありますか?
よろしく、Maciej
windows - カーネルモジュールntおよびwin32kのアドレスを取得するにはどうすればよいですか?
ntとwin32kがロードされているベースアドレスを知る必要があります。この情報は、カーネルデバッグを有効にしてシステムを起動し、カーネルデバッグセッションを開始し、コマンドlm
を実行してロードされたモジュールのリストを取得することで確認できます。
私がやりたいのは、デバッグモードで起動したり、カーネルデバッガーを使用したりせずに、これら2つのモジュールがロードされる場所をプログラムで決定することです。Windowsログファイルのイベントトレースでシステムコールを解決するためのベースアドレスが必要です。
私が取り組んでいるシステムは、Windows Server2008R2を実行しています。
kernel - ユーザーからカーネルへの遷移と XMM レジスタの状態
カーネルコードでAES-NIを使用しています。AES の新しい命令は XMM レジスタを使用するため、ユーザー モードからカーネル モードへの移行とユーザー モードへの移行で XMM レジスタの状態が保持されるようにしたいと考えています。
MSDN リンクには次のように書かれています。
Windows の 64 ビット バージョンでは、オペレーティング システムは、スレッド (およびプロセス) スイッチ間で SSE レジスタを保持します。その結果、64 ビット ドライバー コードは、任意の IRQL で浮動小数点演算を安全に使用できます。
カーネル コードが呼び出されたときにレジスタの状態を保存する必要がないことを確認できますか?
c - アプリをカーネルモードの実行コードに変える方法は?
ラップトップの電源がオン/オフになるタイミングを決定するCアプリケーションがあります。この.exeファイルを開いたときにのみ機能します
カーネルモードで動作させる方法はありますか?つまり、.exeを実行したくないのですが、ラップトップの電源を入れて、電力が少ないときに電力に関するメッセージを受信するだけです。
これが私の.exeです:
c - Microsoftの「stmedit」WFPサンプルはWindows8で動作しますか?
Microsoftは、 Windowsフィルタリングプラットフォーム(WFP)テクノロジstmedit
を示すために呼び出されるサンプルを提供しています。ここでサンプルを見ることができます。
このサンプルはWindows7DDKでも配布されており、うまく機能しました。ただし、このサンプルをWindows 8リリースプレビュー(32ビットと64ビットの両方)で実行しようとすると、機能しません。
コードはVisualStudio2012で正常にビルドされ、ドライバーとしてインストールすることもできます。実際、それはうまく起動することさえありますnet start stmedit
。ただし、ネットワークトラフィックで発生した「rainy」を「sunny」に置き換えることになっていますが、ネットワークトラフィックは変更されません(文書化されたレジストリ設定で構成しました)。
誰かがこのサンプルをWindows8で動作させることができましたか?
windows - Windows カーネル モード ドライバーのインストールにはネットワーク アクセスが必要ですか?
私は自分で証明書を取得しようとしています.200ドルを支払って取得します. 購入する前に、カーネル モード ドライバー (コードに署名する必要があります) のインストールにネットワーク アクセスが必要かどうか、信頼性をどのように検証するかを知っている人はいますか? 等。