次の方法で共有


ExpertGetFrame 関数

ExpertGetFrame 関数は、読み込まれたキャプチャから要求されたフレームを返します。

構文

DWORD WINAPI ExpertGetFrame(
  _In_  HEXPERTKEY              hExpertKey,
  _In_  DWORD                   Direction,
  _In_  DWORD                   RequestFlags,
  _In_  DWORD                   RequestedFrameNumber,
  _In_  HFILTER                 hFilter,
  _Out_ LPEXPERTFRAMEDESCRIPTOR pEFrameDescriptor
);

パラメーター

hExpertKey [in]

一意のエキスパート識別子。 Network Monitor は、Run 関数を呼び出すときに、hExpertKey 識別子をエキスパートに渡します。

方向 [入力]

ネットワーク モニターがフレームを検索する方法を識別する値。

説明
GET_SPECIFIED_FRAME
要求されたフレームを返します。
GET_FRAME_NEXT_FORWARD
次のフレームを返します。
GET_FRAME_NEXT_BACKWARD
前のフレームを返します。

RequestFlags [in]

ネットワーク モニターが要求を処理する方法を指定するフラグ。 次のフラグの 1 つ以上を指定します。

説明
FLAGS_DEFER_TO_UI_FILTER
hFilter で指定されているエキスパートの表示フィルター パラメーターを適用する前に、エキスパートの起動時にネットワーク モニターが使用している表示フィルターを適用します。
FLAGS_ATTACH_PROPERTIES
このフレームの要求されたセクションですべてのプロトコル パーサーが見つけるプロパティは、フレームにアタッチされます。 フラグが設定されていない場合、EXPERTFRAMEDESCRIPTOR 構造体 (pEFrameDescriptor によって返される) の lpPropertyTable フィールドは NULL に設定されます。

RequestedFrameNumber [in]

要求されたフレームの番号。

hFilter [in]

エキスパートディスプレイフィルターへのハンドル。 エキスパートに表示フィルターがない場合は、 パラメーターを NULL に設定 します

pEFrameDescriptor [out]

返された場合にフレームを記述する EXPERTFRAMEDESCRIPTOR 構造体。 エキスパートは、この構造体で使用されるメモリを割り当てて解放する必要があります。

戻り値

関数が成功した場合、戻り値はNMERR_SUCCESS。

関数が失敗した場合、戻り値はエラーの理由を示します。 戻り値がNMERR_EXPERT_TERMINATE場合、エキスパートはすぐにクリーンして戻る必要があります。ユーザーはエキスパートの実行を中止しました。

解説

FLAGS_ATTACH_PROPERTIESを設定した場合、フラグを設定しない場合よりも多くのリソースが呼び出しに必要になります。 フラグが設定されていない場合、ポインターは生フレームを指し、フレームに関するデータを指します。 このフラグが設定されている場合、ネットワーク モニターは、フレームの一部を要求するすべてのパーサーを呼び出すことによって、フレームにすべてのプロパティをアタッチします。 これは、プロセスが遅くなる可能性があります。

専門家は、パーサーがフレームにアタッチするプロパティを必要としない限り、FLAGS_ATTACH_PROPERTIES フラグを設定しないでください。 可能であれば、エキスパートはフラグなしで ExpertGetFrame 関数を呼び出し、必要なデータをフレームから直接抽出する必要があります。

エキスパートが FLAGS_ATTACH_PROPERTIES フラグなしで ExpertGetFrame を 呼び出し、そのフレームに関連付けられているプロパティ (イベントなど) を必要とする場合、エキスパートは次を除く同じパラメーターを使用して ExpertGetFrame を呼び出します。

Direction = EXPERT_GET_SPECIFIED_FRAME;
RequestFlags &= (~EXPERT_DEFER_TO_UI_FILTER) | EXPERT_ATTACH_PROPERTIES;
RequestedFrameNumber= (The actual frame number you want);
hFilter = NULL;
pEFrameDescriptor = (The same one as last time);

上記のコードを使用すると、エキスパートはフィルター コードを再度呼び出すことなく、必要なフレームを取得できます。

hFilter パラメーターは LPVOID として設定できます。 存在する場合、返されるフレームはこのフィルターを渡します。 エキスパートが関数に渡す表示フィルターがない場合 ( hFilterNULL の場合)、返されるフレームはフィルター処理されません。

ExpertGetFrame 関数は、Run または Configure エクスポート関数を実装するエキスパートのみが呼び出すことができます。

要件

要件
サポートされている最小のクライアント
Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー
Windows 2000 Server [デスクトップ アプリのみ]
ヘッダー
Netmon.h
ライブラリ
Nmapi.lib
[DLL]
Nmapi.dll