次の方法で共有


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 は、次のいずれかを返すことができます。

リターン コード 説明
NDIS_STATUS_SUCCESS
LogBuffer でドライバーが指定したデータがログ ファイルにコピーされました。
NDIS_STATUS_BUFFER_OVERFLOW
指定 された 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)

こちらもご覧ください

NdisAllocateFromNPagedLookasideList NdisAllocateMemoryWithTagPriority

NdisMCloseLog

NdisMCreateLog

NdisMFlushLog

NdisReleaseSpinLock