KSPROPERTY 구조체

KSPROPERTY 구조체는 속성 집합 내의 단일 커널 스트리밍 속성을 지정합니다.

KSEVENT, KSMETHODKSPROPERTY 구조체는 KSIDENTIFIER 구조체의 별칭입니다. 따라서 해당 정의는 동일합니다.

구문

struct KSPROPERTY {
  GUID Set;
  ULONG Id;
  ULONG Flags;
};

멤버

Set

커널 스트리밍 속성 집합을 식별하는 GUID를 지정합니다. 속성 집합 GUID에 대한 자세한 내용은 아래 설명 섹션을 참조하세요.

Id

속성 집합의 멤버를 지정합니다.

Flags

요청 유형을 지정합니다. 스트림 클래스 미니드라이버를 작성하는 경우 클래스별 플래그 정보는 KSPROPERTY_ITEM 참조하세요.

플래그 는 다음 표에 나열된 값 중 하나여야 합니다. 일부 플래그는 비트 OR 연산을 사용하여 결합될 수 있습니다.

Description
KSPROPERTY_TYPE_GET 지정된 속성 항목의 값을 검색합니다.
KSPROPERTY_TYPE_SET 지정된 속성 항목의 값을 설정합니다.
KSPROPERTY_TYPE_SETSUPPORT 드라이버가 이 속성 집합을 지원하는지 쿼리합니다.
KSPROPERTY_TYPE_BASICSUPPORT 드라이버가 이 속성 항목에 대해 처리하는 요청 형식을 쿼리합니다. KSPROPERTY_TYPE_GET 또는 KSPROPERTY_TYPE_SET 또는 둘 다를 반환합니다. 모든 속성 집합은 이 플래그를 지원해야 합니다.
KSPROPERTY_TYPE_DEFAULTVALUES 지정된 속성 항목의 기본값을 쿼리합니다. 형식 KSPROPERTY_VALUES 구조를 반환합니다.
KSPROPERTY_TYPE_RELATIONS 이 속성의 현재 설정에 대한 종속성을 사용하여 모든 속성을 쿼리합니다. 반환 버퍼가 ULONG 크기인 경우 속성 관계 목록을 반환하거나 이러한 목록에 필요한 버퍼룸의 크기를 지정합니다. 각 요소는 FILE_QUAD_ALIGNMENT 앞에 KSMULTIPLE_ITEM 구조체가 있습니다. 일반적으로 설정된 속성의 지원을 쿼리할 때는 유효하지 않습니다. 모든 속성 집합은 이 플래그를 지원해야 합니다.
KSPROPERTY_TYPE_SERIALIZESET 표준 KSPROPERTY_SERIALHDRKSPROPERTY_SERIAL 구조를 사용하여 속성 집합을 직렬화합니다.
KSPROPERTY_TYPE_UNSERIALIZESET 표준 KSPROPERTY_SERIALHDR KSPROPERTY_SERIAL 구조를 사용하여 속성 집합의 초기화를 해제합니다.
KSPROPERTY_TYPE_SERIALIZESIZE KSPROPERTY_TYPE_SERIALIZESET 요청의 일부로 serialize될 때 속성 데이터의 크기를 지정하는 ULONG을 반환합니다. 크기가 0이면 속성을 serialize할 필요가 없음을 나타냅니다.
KSPROPERTY_TYPE_SERIALIZERAW 이 집합의 속성이 있는 경우 속성 집합 지원 처리기에 의해 serialize되도록 지정합니다. 그렇지 않으면 호출이 실패합니다. serialization 형식은 private입니다. 이 작업은 KSPROPERTY_TYPE_UNSERIALIZERAW 역이어야 합니다.
KSPROPERTY_TYPE_TOPOLOGY 전달된 속성은 KSP_NODE 형식입니다. 여기서 NodeId는 토폴로지 노드의 숫자 ID를 나타냅니다. 이 플래그를 자체적으로 설정하지 마세요. 대신 이 테이블의 다른 플래그와 함께 또는 입니다.
KSPROPERTY_TYPE_UNSERIALIZERAW 제공된 버퍼에 속성 집합 지원 처리기(있는 경우)에 의해 비직렬화되어야 하는 이 집합에 속하는 속성 그룹이 포함되도록 지정합니다. 그렇지 않으면 호출이 실패합니다. serialization 형식은 private입니다. 이 작업은 KSPROPERTY_TYPE_SERIALIZERAW 역이어야 합니다.

설명

전달된 출력 버퍼의 크기는 KSPROPERTY_TYPE_BASICSUPPORT 요청에서 반환되는 데이터를 결정합니다. 출력 버퍼가 ULONG의 크기인 경우 액세스 플래그만 반환됩니다. 출력 버퍼가 KSPROPERTY_DESCRIPTION 구조체의 크기인 경우 구조체는 액세스 플래그, 전체 값 정보의 포괄 크기, 속성 값 형식 정보 및 구조체에 해당하는 멤버 목록 수로 채워집니다.

KSPROPERTY_TYPE_RELATIONS 요청의 경우 반환되는 데이터도 출력 버퍼의 크기에 따라 달라집니다. 출력 버퍼 크기가 0이면 관련 속성을 반환하는 데 필요한 크기가 STATUS_BUFFER_OVERFLOW 경고 상태 BytesReturned으로 반환됩니다. 버퍼가 KSMULTIPLE_ITEM 구조체의 크기인 경우 바이트 크기와 관계 수가 모두 반환됩니다. 그렇지 않으면 버퍼는 KSIDENTIFIER 구조 목록으로 반환되는 KSMULTIPLE_ITEM 구조체 및 모든 관련 속성 식별자를 반환할 만큼 충분히 길어야 합니다.

KSPROPERTY_TYPE_SERIALIZESETKSPROPERTY_TYPE_UNSERIALIZESET 요청은 클라이언트에서 단일 호출을 사용하여 여러 속성과의 상호 작용을 허용합니다. 커널 스트리밍 처리기를 사용하여 속성 요청을 처리하는 경우 KsPropertyHandler 함수를 통해 여러 호출로 나뉩니다. 이 처리기를 사용할 때 속성 집합 정의는 serialize할 속성을 제어합니다.

serialization 요청의 경우 관련 KSPROPERTY_ITEM 구조체의 SerializedSize 멤버가 속성의 크기(바이트)를 나타내는 0이 아닌 값을 확인합니다. SerializedSize 멤버의 값이 1이면 알 수 없으며 쿼리해야 합니다(알 수 없는 모든 속성은 개별적으로 쿼리할 수 있는 KSMULTIPLE_ITEM 구조로 시작). serialization에 걸리는 총 크기를 쿼리하기 위해 클라이언트는 DeviceIoControl 호출에서 길이가 0인 버퍼를 전달합니다. 그런 다음 BytesReturned은 버퍼가 집합을 직렬화해야 하는 크기(바이트)와 STATUS_BUFFER_OVERFLOW 경고 상태 반환합니다. 그런 다음, 해당 크기가 할당된 버퍼를 직렬화된 데이터로 채울 수 있습니다.

serialization 버퍼의 형식은 KSPROPERTY_SERIALHDR 다음에 직렬화된 속성입니다. 뒤에 있는 각 속성에는 헤더(KSPROPERTY_SERIAL) 뒤에 속성 데이터가 포함되며, FILE_LONG_ALIGNMENT 각 속성이 시작됩니다. 직렬 헤더 구조는 FILE_LONG_ALIGNMENT 있도록 정의됩니다.

속성 항목 처리기가 있는 경우 KSPROPERTY_TYPE_SERIALIZERAW 및 KSPROPERTY_TYPE_UNSERIALIZERAW 지원됩니다. KsPropertyHandler 함수는 미니드라이버에서 제공하는 처리기를 호출합니다. 직렬화에 필요한 버퍼 크기는 길이가 0인 버퍼를 serialize 원시 요청에 전달하여 쿼리할 수도 있습니다. 처리기는 속성 집합이 아닌 속성 항목에 연결되므로 속성 집합 내의 특정 항목을 Property 매개 변수에 지정해야 합니다. 이 처리기는 집합 내의 여러 속성을 처리할 수 있습니다.

Microsoft는 여러 시스템 정의 속성 집합 GUID를 제공합니다. 미니드라이버에서는 Set 멤버에서 이러한 GUID 중 하나를 지정합니다. 커널 스트리밍 속성 집합은 일반적으로 KSPROPSETID 또는 PROPSETID 접두사로 시작합니다. 커널 스트리밍 속성 집합은 ks.h, ksmedia.h, bdamedia.h 및 기타 헤더 파일로 정의됩니다.

커널 스트리밍 이벤트에 대한 자세한 내용은 KS 속성, 이벤트 및 메서드를 참조하세요.

요구 사항

헤더: ks.h(Ks.h 포함)

추가 정보

KSEVENT

KSMETHOD

KSIDENTIFIER

KSMETHOD_ITEM

KSE_NODE

KSPROPERTY_DESCRIPTION

KSPROPERTY_ITEM

KSMULTIPLE_ITEM

KsPropertyHandler

KSPROPERTY_SERIALHDR

KSPROPERTY_SERIAL