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 |