2016-08-04 21 views
0

Windowsドライバのファイルに特定の構造のダンプを作成する必要があります。したがって、ファイルポインタの場合、私はvoidポインタを使用し、fprintfのファイルポインタの代わりに使用しました。Windowsカーネルデバイスドライバでfprintfを使用する

ソースもコンパイルエラーなしで正常にビルドされます。しかし、ドライバをロードすると、そのポインタに格納されている値は印刷されません。

どのようにWindowsドライバでfprintfを使用する必要がありますか?

+2

で説明するように、フィルタリングを調整したいです代わりにAPI。 CRTの標準機能には、ロックやその他の事態が起こって、ドライバを混乱させたりロックしたり、クラッシュさせたりすることがあります。 –

+0

@JoachimPileborg:また、モニカは一般的にユーザモードのコンポーネントを参照するので、ドライバ内のWindows APIを避けたいでしょう。これは、ユーザーモードコードからのみ使用できます。 NT DDK(または最近呼び出されるWDK)で定義されているカーネルモードのAPIのみを使用する必要があります。 – EFraim

答えて

4

デバイスドライバ内でDbgPrintExを使用しているはずです。

printfはカーネルモードでは動作しません。

DbgPrintExは、カーネルのDbgPrintバッファに印刷します.DbgPrintExは、WinDbgやKdのようなカーネルデバッガで見ることができます。ローカルシステムで見る場合はDebugViewです。

あなたはこのバッファに印刷するメッセージのほとんどは、デフォルトでは除外されているので、Windowsを使用する、デバイスドライバにCI/O機能を使用しないでくださいMSDN

+0

副作用として、カーネルデバッガ(Windbg; Kd)またはsysinternals 'DebugView'のようなツールが必要です(' DbgPrint [Ex] '関数の呼び出し結果の出力を参照してください)。 – Neitsa

+0

@Neitsa:ありがとう、答えに追加します – EFraim

関連する問題