Share via


PCEVENT_REQUEST 構造体 (portcls.h)

PCEVENT_REQUEST構造体は、イベント要求を指定します。

構文

typedef struct _PCEVENT_REQUEST {
  PUNKNOWN           MajorTarget;
  PUNKNOWN           MinorTarget;
  ULONG              Node;
  const PCEVENT_ITEM *EventItem;
  PKSEVENT_ENTRY     EventEntry;
  ULONG              Verb;
  PIRP               Irp;
} PCEVENT_REQUEST, *PPCEVENT_REQUEST;

メンバー

MajorTarget

メインミニポート オブジェクトへの IUnknown ポインター。 このメンバーには、アダプター ドライバーが以前に IPort::Init メソッドに渡した UnknownMiniport ポインターが含まれています。

MinorTarget

MajorTarget ミニポート オブジェクトに関連付けられているストリーム オブジェクトへの IUnknown ポインター。 このメンバーには、ポート ドライバーが以前に IMiniportXxx::NewStream メソッド (たとえば、IMiniportWaveCyclic::NewStream メソッドの Stream パラメーター) から取得したストリーム オブジェクト ポインターが含まれています。

Node

ノード ID を指定します。 このメンバーは、要求のターゲット ノードを識別します。 ターゲットがノードでない場合、このメンバーは ULONG(-1) に設定されます。

EventItem

この要求の PCEVENT_ITEM 構造体へのポインター

EventEntry

この要求の KSEVENT_ENTRY 構造体へのポインター

Verb

イベント要求の種類を指定します。 このメンバーは、次の表のいずれかの値に設定する必要があります。

意味
PCEVENT_VERB_ADD クライアントが指定したイベントを有効にすることを示します。 イベントとターゲットの情報を検証した後、 EventHandler ルーチンは IPortEvents::AddEventToEventList メソッドを呼び出してイベントを追加します。
PCEVENT_VERB_REMOVE イベントが無効になっており、リストから削除されていることを EventHandler に通知します。
PCEVENT_VERB_SUPPORT この要求は、サポートのためのクエリです。 ミニポート ドライバーは、要求で識別されたターゲットのイベントをサポートする場合は、このクエリに成功する必要があります。 それ以外の場合は、クエリが失敗します。
PCEVENT_VERB_NONE 対処は必要ありません。

Irp

イベント要求を含む IRP へのポインター

注釈

これは、ポート ドライバーがミニポート ドライバーの EventHandler ルーチンに渡す構造です。 PCEVENT_ITEM構造体には、PCEVENT_REQUEST ポインターを唯一の呼び出しパラメーターとして受け取るイベント ハンドラーへの関数ポインターが含まれています。 ポート ドライバーは 、PCEVENT_REQUEST 構造体を割り当て、元のイベント要求 ( Irp メンバーが指す) から関連情報を抽出し、ハンドラーを呼び出す前に、この構造体に情報を読み込みます。

WDM オーディオでは、イベント要求のターゲットをピン インスタンスにすることはできますが、フィルター インスタンスにすることはできません。 ターゲットには、ノード ID を含めることもできます。

MajorTarget メンバーと MinorTarget メンバーは、それぞれ、メイン ミニポート オブジェクトと関連付けられたストリーム オブジェクトへの IUnknown ポインターです。 イベント ハンドラーは、これらのオブジェクトのミニポート インターフェイスとストリーム インターフェイスに対してクエリを実行できます。

たとえば、イベント要求のターゲットが WaveCyclic フィルターのピン インスタンスである場合は、次のようになります。

要件

要件
Header portcls.h (Portcls.h を含む)

こちらもご覧ください

EventHandler

IPortEvents::AddEventToEventList

KSEVENT_ENTRY

PCEVENT_ITEM

PCFILTER_NODE