IPinCount::P inCount メソッド (portcls.h)
メソッドは PinCount
、ミニポート ドライバーのピン数を照会します。
構文
void PinCount(
[in] ULONG PinId,
[in, out] PULONG FilterNecessary,
[in, out] PULONG FilterCurrent,
[in, out] PULONG FilterPossible,
[in, out] PULONG GlobalCurrent,
[in, out] PULONG GlobalPossible
);
パラメーター
[in] PinId
ピン ID を指定します。 フィルターに n 個のピン ファクトリが含まれている場合、有効なピン ID の範囲は 0 から n-1 です。
[in, out] FilterNecessary
フィルターが I/O 操作を実行する前に、ピン ファクトリがインスタンス化する必要があるピンの最小数を指定します。
[in, out] FilterCurrent
ピン インスタンスの現在の数を指定します。 この数は、ピン ファクトリがフィルターで既にインスタンス化したピンをカウントします。
[in, out] FilterPossible
ピン ファクトリがフィルターでインスタンス化できるピンの最大数を指定します。 最大値がない場合は、KSINSTANCE_INDETERMINATEに設定します。
[in, out] GlobalCurrent
ドライバーでピン ファクトリがインスタンス化したピンの現在の数を指定します。
[in, out] GlobalPossible
ドライバーでピン ファクトリがインスタンス化できるピンの最大数を指定します。 最大値がない場合は、KSINSTANCE_INDETERMINATEに設定します。
戻り値
なし
解説
呼び出しには PinCount
、次の 2 つの目的があります。
- ミニポート ドライバーに現在のピン数を知らせるために。
- ミニポート ドライバーに現在のピン数を変更する機会を与える。
FilterCurrent と FilterPossible は、 PinId で指定されたピン ファクトリのフィルターごとの値を指定します。
GlobalCurrent と GlobalPossible は、フィルターのすべてのインスタンスに対するピン ファクトリの合計値を指定します。
ミニポート ドライバーは通常 、FilterNecessary パラメーターを変更する必要はありませんが、完全性のために含まれています。
IPort::Init 呼び出し中、ポート ドライバーはミニポート ドライバーの IMiniport::GetDescription メソッドを呼び出して、ミニポート ドライバーの pin 記述子配列を含むフィルター記述子へのポインターを取得します (「PCPIN_DESCRIPTOR」を参照)。 その後、ポート ドライバーは、pin プロパティのクエリに応答するピン記述子にアクセスします。
ミニポート ドライバーが IPinCount インターフェイスをサポートしている場合、ポート ドライバーは を呼び出 PinCount
して、ミニポート ドライバーに pin プロパティ要求に応答する前にピン数を更新する機会を与えます。 ミニポート ドライバーが IPinCount をサポートしていない場合、ポート ドライバーは、単に pin 記述子配列の静的なピン数の制限を使用します。
ポート ドライバーは、 PinCount
次の KS プロパティ要求のいずれかを受信すると、 メソッドを呼び出します。
KSPROPERTY_PIN_GLOBALCINSTANCES
KSPROPERTY_PIN_NECESSARYINSTANCES
PortCls では、新しいストリームが PinCount
作成されるたびに メソッドも呼び出されます。
ミニポート ドライバーは、 メソッド内からストリームを作成または破棄することを明示的に PinCount
発生させてはいけません。 ミニポート ドライバーは、この呼び出し中に何ができるかに制限されません。
メソッドは PinCount
IRQL PASSIVE_LEVELで呼び出されます。 このメソッドのコードは、ページ メモリ内に存在する必要があります。
要件
要件 | 値 |
---|---|
対象プラットフォーム | ユニバーサル |
Header | portcls.h (Portcls.h を含む) |
IRQL | PASSIVE_LEVEL |
こちらもご覧ください
KSPROPERTY_PIN_GLOBALCINSTANCES