다음을 통해 공유


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 Device Mutex를 참조하세요.

이 함수는 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