次の方法で共有


KsCreateFilterFactory 関数 (ks.h)

** KsCreateFilterFactory** 関数は、特定のデバイスにフィルター ファクトリを追加します。

構文

KSDDKAPI NTSTATUS KsCreateFilterFactory(
  [in]            PDEVICE_OBJECT            DeviceObject,
  [in]            const KSFILTER_DESCRIPTOR *Descriptor,
  [in, optional]  PWSTR                     RefString,
  [in, optional]  PSECURITY_DESCRIPTOR      SecurityDescriptor,
  [in]            ULONG                     CreateItemFlags,
  [in, optional]  PFNKSFILTERFACTORYPOWER   SleepCallback,
  [in, optional]  PFNKSFILTERFACTORYPOWER   WakeCallback,
  [out, optional] PKSFILTERFACTORY          *FilterFactory
);

パラメーター

[in] DeviceObject

フィルター ファクトリを追加する DEVICE_OBJECT 構造体へのポインター。

[in] Descriptor

この ファクトリで作成 できる個々のフィルターの特性を記述するKSFILTER_DESCRIPTORへのポインター。

[in, optional] RefString

この引数を指定した場合、この文字列は、このファクトリによって作成されたフィルターの参照文字列として使用されます。 それ以外の場合は、記述子で提供される参照 GUID が使用されます。

[in, optional] SecurityDescriptor

このフィルター ファクトリによるフィルターの作成に使用するセキュリティ記述子。 NULL の場合、記述子は指定されません。

[in] CreateItemFlags

次の表に、ミニドライバー ライターが新しいフィルター ファクトリで作成できるフィルターの特性を指定するために使用するフラグの一覧を示します。 このパラメーターを、以下のフラグのビットごとの OR に設定します。

フラグ 説明
KSCREATE_ITEM_SECURITY_CHANGED このオブジェクト型のセキュリティ記述子が変更され、永続化する必要があることを示します。
KSCREATE_ITEM_WILDCARD この作成アイテムが、他の作成アイテムと一致しない作成要求に使用されるワイルドカードを表していることを示します。 作成項目の一覧でのワイルドカード エントリの順序は関係ありません。 作成項目の一覧で有効なワイルドカード エントリは 1 つだけです。
KSCREATE_ITEM_NOPARAMETERS この作成項目ではパラメーターの渡しが許可されず、見つかった場合は失敗することを示します。 (通常、create パラメーターは作成ハンドラーに渡されます)。このフラグをワイルドカード フラグと共に使用することはできません。
KSCREATE_ITEM_FREEONSTOP PnP マネージャーが IRP_MN_STOP_DEVICEを送信するときに、作成項目を解放する必要があることを示します。 AVStream は、デバイスが PnP 停止を受信したときに (クライアントが PnP 停止通知を受信した ) このような作成項目を自動的に解放します。

[in, optional] SleepCallback

このフィルターに関連付けられているデバイスがスリープ状態になるという通知を受け取るミニドライバーが提供するルーチンへのポインター。 次のようにルーチンをプロトタイプ作成します。

void SleepCallback (IN PKSFILTERFACTORY FilterFactory,
    IN DEVICE_POWER_STATE State);

このパラメーターが NULL の場合、デバイスがスリープ状態になることは、このフィルター ファクトリに通知されません。 「 デバイスの電源状態」を参照してください。

[in, optional] WakeCallback

このフィルターに関連付けられているデバイスがウェイクアップしていることを示す通知を受け取るミニドライバーが提供するルーチンへのポインター。 次のようにルーチンをプロトタイプ作成します。

void WakeCallback (IN PKSFILTERFACTORY FilterFactory,
    IN DEVICE_POWER_STATE State);

このパラメーターが NULL の場合、このフィルター ファクトリには、デバイスがウェイクアップ中であることが通知されません。 「 デバイスの電源状態」を参照してください。

[out, optional] FilterFactory

新しく作成されたフィルター ファクトリ オブジェクトを指すよう AVStream が設定する KSFILTERFACTORY 構造体へのポインター。 この省略可能なパラメーターが指定されていない場合、呼び出し元は結果のフィルター ファクトリ オブジェクトについて通知されません。

戻り値

フィルター ファクトリを作成できる場合は、STATUS_SUCCESSを返します。 それ以外の場合は、適切なエラー コードを返します。

注釈

AVStrMiniDevicePostStart の後に KsCreateFilterFactory を呼び出す場合は、KsFilterFactorySetDeviceClassesState を呼び出してデバイス クラスを有効にする必要があります。 (フィルター ファクトリを無効にするには、 KsFilterFactorySetDeviceClassesState も呼び出します)。

AVStrMiniDevicePostStart 以前のコンテキストで KsCreateFilterFactory を呼び出す場合は、これを行う必要はありません。

この関数を呼び出す前に、ミニドライバーはデバイスミューテックスを取得する必要があります。 これを行う方法の詳細については、「 AVStream のデバイス ミューテックス」を参照してください。

この関数は、 KsInitializeDriver を呼び出さずに自身を初期化するか、新しいフィルターの種類を動的に追加および削除する必要があるミニドライバーで使用する必要があります。

要件

要件
サポートされている最小のクライアント Microsoft Windows XP 以降のオペレーティング システムと DirectX 8.0 以降の DirectX バージョンで使用できます。
対象プラットフォーム ユニバーサル
Header ks.h (Ks.h を含む)
Library Ks.lib
IRQL PASSIVE_LEVEL

こちらもご覧ください

KSFILTER_DESCRIPTOR

KSNODE_DESCRIPTOR

KSPIN_DESCRIPTOR_EX

KsDeleteFilterFactory