PCPROPERTY_REQUEST 構造体 (portcls.h)
PCPROPERTY_REQUEST構造体は、プロパティ要求を指定します。
構文
typedef struct _PCPROPERTY_REQUEST {
PUNKNOWN MajorTarget;
PUNKNOWN MinorTarget;
ULONG Node;
const PCPROPERTY_ITEM *PropertyItem;
ULONG Verb;
ULONG InstanceSize;
PVOID Instance;
ULONG ValueSize;
PVOID Value;
PIRP Irp;
} PCPROPERTY_REQUEST, *PPCPROPERTY_REQUEST;
メンバー
MajorTarget
メインミニポート オブジェクトへの IUnknown ポインター。 このメンバーには、アダプター ドライバーが以前に IPort::Init メソッドに渡した UnknownMiniport パラメーター値が含まれています。
MinorTarget
MajorTarget ミニポート オブジェクトに関連付けられているストリーム オブジェクトへの IUnknown ポインター。 プロパティ要求のターゲットがピン インスタンスの場合、このメンバーには、IMiniport Xxx::NewStream メソッドが以前にポート ドライバーに出力したストリーム オブジェクト ポインターが含まれます (たとえば、IMiniportWaveCyclic::NewStream メソッドの Stream パラメーター)。 それ以外の場合 (プロパティ要求のターゲットがフィルター インスタンスの場合)、このメンバーは NULL です。
Node
ノード ID を指定します。 このメンバーは、要求のターゲット ノードを識別します。 ターゲットがノードでない場合、このメンバーは ULONG(-1) に設定されます。
PropertyItem
PCPROPERTY_ITEM 型の構造体であるプロパティ項目へのポインター。
Verb
プロパティ要求の種類を指定します。 Verb は、ヘッダー ファイル ks.h から次のフラグ ビットの 1 つ以上のビットごとの OR に設定されます。
- KSPROPERTY_TYPE_GET
- KSPROPERTY_TYPE_SET
- KSPROPERTY_TYPE_SETSUPPORT
- KSPROPERTY_TYPE_BASICSUPPORT
- KSPROPERTY_TYPE_RELATIONS
- KSPROPERTY_TYPE_SERIALIZESET
- KSPROPERTY_TYPE_UNSERIALIZESET
- KSPROPERTY_TYPE_SERIALIZERAW
- KSPROPERTY_TYPE_UNSERIALIZERAW
- KSPROPERTY_TYPE_SERIALIZESIZE
- KSPROPERTY_TYPE_DEFAULTVALUES
- KSPROPERTY_TYPE_TOPOLOGY
InstanceSize
プロパティ インスタンス バッファーのサイズをバイト単位で指定します。
Instance
プロパティ インスタンス バッファーへのポインター
ValueSize
プロパティ値バッファーのサイズをバイト単位で指定します。
Value
プロパティ値バッファーへのポインター
Irp
クライアントの元のプロパティ要求を含む IRP へのポインター
注釈
これは、ポート ドライバーがミニポート ドライバーのプロパティ ハンドラー ルーチンに渡す構造です。 PCPROPERTY_ITEM構造体には、PCPROPERTY_REQUEST ポインターを唯一の呼び出しパラメーターとして受け取るプロパティ ハンドラーへの関数ポインターが含まれています。 ポート ドライバーは 、PCPROPERTY_REQUEST 構造体を割り当て、元のプロパティ要求 ( Irp メンバーが指す) から関連情報を抽出し、ハンドラーを呼び出す前に、この構造体に情報を読み込みます。
WDM オーディオでは、プロパティ要求のターゲットには、フィルター インスタンスまたはピン インスタンスのいずれかを指定できます。 ターゲットには、ノード ID を含めることもできます。
クライアントの元のプロパティ要求では、プロパティ インスタンス データは常に KSPROPERTY または KSNODEPROPERTY 構造体で始まりますが、追加情報を含めることができます。 ポート ドライバーは、 この 追加情報 (存在する場合) を指すPCPROPERTY_REQUEST構造体の インスタンス メンバーを調整します。 詳細については、「 オーディオ プロパティ ハンドラー」を参照してください。
MajorTarget メンバーと MinorTarget メンバーは、それぞれ、メイン ミニポート オブジェクトと関連付けられたストリーム オブジェクトへの IUnknown ポインターです。 プロパティ ハンドラーは、これらのオブジェクトのミニポート インターフェイスとストリーム インターフェイスに対してクエリを実行できます。 プロパティ要求のターゲットがフィルター インスタンスの場合、 MajorTarget はそのフィルター インスタンスのミニポート オブジェクトを指し、 MinorTarget は NULL です。 ターゲットがピン インスタンスの場合、 MinorTarget はそのピンのストリーム オブジェクトを指し、 MajorTarget はピンがアタッチされているフィルターのミニポート オブジェクトを指します。
たとえば、プロパティ要求のターゲットが WaveCyclic フィルターのピン インスタンスである場合は、次のようになります。
- ハンドラーは、MajorTarget オブジェクトの IUnknown インターフェイスで QueryInterface を呼び出して、オブジェクトの IMiniportWaveCyclic インターフェイスへの参照を取得できます。
- ハンドラーは、MinorTarget オブジェクトの IUnknown インターフェイスで QueryInterface を呼び出して、オブジェクトの IMiniportWaveCyclicStream インターフェイスへの参照を取得できます。
要件
要件 | 値 |
---|---|
Header | portcls.h (Portcls.h を含む) |