次の方法で共有


IMiniport::D ataRangeIntersection メソッド (portcls.h)

DataRangeIntersection メソッドは、2 つのデータ範囲の最高品質の交差部分を決定します。

構文

NTSTATUS DataRangeIntersection(
  ULONG        PinId,
  PKSDATARANGE DataRange,
  PKSDATARANGE MatchingDataRange,
  ULONG        OutputBufferLength,
  PVOID        ResultantFormat,
  PULONG       ResultantFormatLength
);

パラメーター

PinId

ピン ID を指定します。 このパラメーターは、データ交差が決定されるピン ファクトリを識別します。 フィルターに n 個のピン ファクトリが含まれている場合、有効なピン ID の範囲は 0 から n-1 です。

DataRange

クライアントがデータ範囲交差プロパティ要求で送信したデータ範囲を含む KSDATARANGE 構造体へのポインター。

MatchingDataRange

クライアントのデータ範囲と比較されるミニポート ドライバーのデータ範囲を含む KSDATARANGE 構造体へのポインター。

OutputBufferLength

ResultantFormat パラメーターが指すバッファーのサイズをバイト単位で指定します。 呼び出し元は、OutputBufferLength を 0 として指定して、必要なバッファー サイズを照会できます。 詳細については、「解説」を参照してください。

ResultantFormat

メソッドが結果の形式を書き込むバッファーへのポインター。 このパラメーターが NULL の場合、OutputBufferLength パラメーターは 0 である必要があります。 NULL 以外の場合、このパラメーターは OutputBufferLength で指定されたバイト数を格納するのに十分な大きさのバッファーを指す必要があります。

ResultantFormatLength

結果形式の長さの出力ポインター。 このパラメーターは、メソッドが結果の形式の長さを書き込む呼び出し元によって割り当てられた ULONG 変数を指します。 これは、ResultantFormat が指すバッファーに書き込まれる結果形式のサイズ (バイト単位) です。 このサイズは OutputBufferLength 以下である必要があります (OutputBufferLength が 0 でない限り、次の「備考」セクションを参照してください)。

戻り値

このメソッドは、呼び出しが成功した場合にSTATUS_SUCCESSを含む NTSTATUS を返します。 OutputBufferLength パラメーターが 0 として指定された場合、メソッドは STATUS_BUFFER_OVERFLOWを返します。 それ以外の場合、メソッドは適切なエラー コードを返します。 次の表は、可能な戻り状態コードの一部を示しています。

リターン コード 説明
STATUS_NO_MATCH 交差はありません。
STATUS_NOT_IMPLEMENTED データ交差処理をポート ドライバーの既定のデータ交差ハンドラーに遅延します。
STATUS_BUFFER_TOO_SMALL OutputBufferLength で指定されたバッファー長は 0 以外でしたが、結果の形式を保持するには小さすぎます。

注釈

DataRangeIntersection メソッドは、ミニポート ドライバーのデータ交差ハンドラーです。 ポート ドライバーは、データ範囲の交差プロパティ要求 (KSPROPERTY_PIN_DATAINTERSECTIONを参照) を受け取り、要求のターゲットがミニポート ドライバーが実装するフィルター インスタンスのピン ファクトリである場合に、このメソッドを呼び出します。

ResultantFormat パラメーターは、KSDATAFORMAT_WAVEFORMATEX構造体で始まるバッファーを指します。 この構造体の WaveFormatEx メンバーは、追加の形式情報 (チャネル構成マスクなど) を含むように拡張できることに注意してください。 詳細については、「 WAVEFORMATEXTENSIBLE」を参照してください。

ResultantFormat パラメーターは省略可能で、NULL として指定できます。この場合、OutputBufferLength は 0 として指定する必要があります。 呼び出し元は、OutputBufferLength 値が 0 の DataRangeIntersection を最初に呼び出すことで、必要なバッファー長を照会できます。 メソッドは、ResultantFormatLength が指す場所に必要なバッファー長を書き込み、状態コードSTATUS_BUFFER_OVERFLOW返すことで応答します。 その後、呼び出し元は必要なサイズのバッファーを割り当て、DataRangeIntersection の 2 回目の呼び出しでこのバッファーを指定できます。

ドライバーがKSPROPERTY_AUDIOSIGNALPROCESSING_MODESをサポートしている場合、このメソッドは、形式がオーディオ信号処理モードでサポートされている場合、 ResultantFormat を返す必要があります。

要件

要件
Header portcls.h
IRQL PASSIVE_LEVEL

こちらもご覧ください

IMiniPort