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 이 만들기 항목은 다른 만들기 항목과 일치하지 않는 만들기 요청에 사용되는 와일드카드를 나타냅니다. 만들기 항목 목록에서 와일드카드 항목의 순서는 관련이 없습니다. 단일 와일드카드 항목만 만들기 항목 목록에서 유효합니다.
KSCREATE_ITEM_NOPARAMETERS 이 만들기 항목은 매개 변수 전달을 허용하지 않으며 매개 변수가 있는 경우 실패했음을 나타냅니다. 일반적으로 만들기 매개 변수는 만들기 처리기에 전달됩니다. 이 플래그는 와일드카드 플래그와 함께 사용할 수 없습니다.
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 버전에서 사용할 수 있습니다.
대상 플랫폼 유니버설
헤더 ks.h(Ks.h 포함)
라이브러리 Ks.lib
IRQL PASSIVE_LEVEL

추가 정보

KSFILTER_DESCRIPTOR

KSNODE_DESCRIPTOR

KSPIN_DESCRIPTOR_EX

KsDeleteFilterFactory