NdisMWriteLogData 関数 (ndis.h)
NdisMWriteLogData は、ドライバーから提供された情報をログ ファイルに転送して使用し、ドライバー専用の Win32 アプリケーションで表示します。
構文
NDIS_STATUS NdisMWriteLogData(
[in] NDIS_HANDLE LogHandle,
[in] PVOID LogBuffer,
[in] UINT LogBufferSize
);
パラメーター
[in] LogHandle
NdisMCreateLog によって返されるハンドルを指定します。
[in] LogBuffer
書き込まれる情報を含むドライバーによって割り当てられたバッファーへのポインター。
[in] LogBufferSize
ログ ファイルにコピーするデータのバイト数を指定します。
戻り値
NdisMWriteLogData は、次のいずれかを返すことができます。
リターン コード | 説明 |
---|---|
|
LogBuffer でドライバーが指定したデータがログ ファイルにコピーされました。 |
|
指定 された LogBufferSize が大きすぎます。つまり、ログ ファイル自体よりも大きすぎます。 |
注釈
ドライバー専用アプリケーションにログ ファイル データに対する未処理の要求がある場合、 NdisMWriteLogData は、ドライバーが指定した情報をログ ファイルにコピーするとすぐに、その要求を満たします。
ミニポート ドライバーは、現在 IRQL < DISPATCH_LEVELで実行されている場合は、カーネル スタック上の場所に LogBuffer ポインターを提供できます。 それ以外の場合、 LogBuffer は、ドライバーが非ページ プールから割り当てたバッファーにアクセスする必要があります。
ドライバーは、 NdisMWriteLogData を呼び出す前に、保持しているスピン ロックを解放する必要があります。
NdisMWriteLogData は、ログ レコード間の境界を認識しません。また、Win32 関数 DeviceIoControl を呼び出すこともできません。アプリケーションは、ndis ミニポート ドライバーによって NDIS ログ ファイルに書き込まれたデータを取得するために、IOCTL_NDIS_GET_LOG_DATAで呼び出すことができます。 NdisMWriteLogData は、 LogBuffer でミニポート ドライバーが提供するすべてのデータをバイト ストリームとしてログ ファイルに書き込みます。 DeviceIoControl は 、このようなログからバイト ストリームとしてデータを読み取ります。
そのため、NDIS ログを読み取るアプリケーションは、取得したデータをレコードに収集する必要があります。 可変長レコードの収集でこのようなアプリケーションを支援するために、このようなログに書き込むミニポート ドライバーは、各レコードの先頭にマーカーを挿入できます。 次に、取得したデータを書式設定するアプリケーションでこれらのマーカーを検索して、各レコードの開始を決定できます。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows Vista の NDIS 6.0 および NDIS 5.1 ドライバー (「NdisMWriteLogData (NDIS 5.1)」を参照) でサポートされています。 Windows XP の NDIS 5.1 ドライバー (「NdisMWriteLogData (NDIS 5.1)」を参照) でサポートされています。 |
対象プラットフォーム | ユニバーサル |
Header | ndis.h (Ndis.h を含む) |
Library | Ndis.lib |
IRQL | <= DISPATCH_LEVEL |
DDI コンプライアンス規則 | Irql_Miniport_Driver_Function(ndis) |