다음을 통해 공유


KSIDENTIFIER 구조체(ks.h)

KSIDENTIFIER 구조체는 관련 GUID 집합을 고유하게 식별하는 GUID와 해당 집합 내의 특정 멤버를 참조하는 인덱스 값을 지정합니다.

KSDEGRADE, KSEVENT, KSMETHOD, KSPIN_INTERFACE, KSPIN_MEDIUMKSPROPERTY 형식 정의는 KSIDENTIFIER 구조체의 별칭입니다. 따라서 해당 정의는 동일합니다. 사용량에 대한 자세한 내용은 개별 typedef topics 참조하세요.

구문

typedef struct {
  union {
    struct {
      GUID  Set;
      ULONG Id;
      ULONG Flags;
    } _IDENTIFIER;
    struct {
      GUID  Set;
      ULONG Id;
      ULONG Flags;
    };
    LONGLONG Alignment;
  };
} KSIDENTIFIER, *PKSIDENTIFIER;

멤버

_IDENTIFIER

아래 설명 부분을 참조하세요.

_IDENTIFIER.Set

아래 설명 부분을 참조하세요.

_IDENTIFIER.Id

아래 설명 부분을 참조하세요.

_IDENTIFIER.Flags

아래 설명 부분을 참조하세요.

Set

아래 설명 부분을 참조하세요.

Id

아래 설명 부분을 참조하세요.

Flags

아래 설명 부분을 참조하세요.

Alignment

아래 설명 부분을 참조하세요.

설명

KSIDENTIFIER 멤버 설명

Set

커널 스트리밍 속성, 이벤트, 메서드, 통신 버스 집합을 식별하는 GUID를 지정합니다. KSPIN_INTERFACE 구조체는 인터페이스 집합 내의 특정 인터페이스를 설명합니다. KSDEGRADE 구조에는 성능 저하 전략의 세부 사항이 포함되어 있습니다. 자세한 내용은 아래 의 설명 섹션을 참조하세요.

Id

속성, 이벤트, 메서드 집합의 멤버를 지정합니다. KSPIN_MEDIUM 버스에서 고유한 연결을 식별합니다. KSPIN_INTERFACE 경우 는 인터페이스 집합 내에서 이 특정 인터페이스의 ID 번호를 지정합니다. KSDEGRADE의 경우 는 집합 내의 항목에 대한 집합별 식별자를 지정합니다.

Flags

요청 유형을 지정합니다. 스트림 클래스 미니드라이버를 작성하는 경우 클래스별 플래그 정보는 KSPROPERTY_ITEM 참조하세요. 플래그 는 다음 표에 나열된 값 중 하나여야 합니다. 일부 플래그는 비트 OR 연산을 사용하여 결합될 수 있습니다.

사용량에 대한 자세한 내용은 KSDEGRADE, KSEVENT, KSMETHOD, KSPIN_INTERFACE, KSPIN_MEDIUMKSPROPERTY typedef topics 참조하세요.

KSPROPERTY 요청 유형을 지정합니다.

KSPROPERTY 플래그 값 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_SERIALHDR 및 KSPROPERTY_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 역이어야 합니다.

KSEVENT 요청 유형을 지정합니다. 이 플래그는 다음 표에 나열된 값 중 하나여야 합니다.

KSEVENT 플래그 값 Description
KSEVENT_TYPE_ENABLE 이 이벤트 유형에 대한 이벤트 알림을 사용하도록 설정합니다. 드라이버는 클라이언트가 명시적으로 사용하지 않도록 설정할 때까지 이벤트 알림을 계속합니다.
KSEVENT_TYPE_ONESHOT 이 이벤트의 다음 발생에 대해서만 이벤트 알림을 사용하도록 설정합니다. 클라이언트는 이벤트가 발생한 후 이벤트를 사용하지 않도록 설정할 필요가 없으며 사용하지 않도록 설정하지 않아야 합니다.
KSEVENT_TYPE_SETSUPPORT 이벤트 집합 목록에 대한 쿼리 또는 특정 이벤트 집합의 지원을 요청합니다.
KSEVENT_TYPE_BASICSUPPORT 특정 이벤트 형식의 지원을 위한 쿼리입니다.
KSEVENT_TYPE_ENABLEBUFFERED 드라이버는 클라이언트에 알리는 대신 이벤트 알림을 큐에 대기합니다. 그런 다음 클라이언트는 큐에 대기된 이벤트 알림을 수신하기 위해 KSEVENT_TYPE_QUERYBUFFER 두 번째 IOCTL_KS_ENABLE_EVENT 요청을 발급합니다.
KSEVENT_TYPE_TOPOLOGY 전달된 이벤트가 KSE_NODE 형식임을 나타냅니다. 여기서 NodeId 는 토폴로지 노드의 숫자 ID를 나타냅니다. 이 플래그를 자체적으로 설정하지 마세요. 대신 이 목록의 다른 플래그와 함께 또는 입니다.
KSEVENT_TYPE_QUERYBUFFER 버퍼링된 다음 이벤트 알림을 검색합니다.

KSMETHOD 요청 유형을 지정합니다. 또한 KSMETHOD_ITEM 대한 KSMETHOD_TYPE_Xxx 플래그를 참조하세요. 요청에는 다음 표에 나열된 값의 조합이 포함될 수 있습니다.

KSMETHOD 플래그 값 Description
KSMETHOD_TYPE_BASICSUPPORT 미니드라이버를 쿼리하여 메서드 집합의 지정된 메서드를 지원하는지 여부를 확인하도록 나타냅니다.
KSMETHOD_TYPE_SEND 미니드라이버가 지정된 메서드를 실행해야 했음을 나타냅니다. 지정된 매개 변수에 대한 메서드의 효과는 클라이언트에 알려야 합니다. 즉, 매개 변수를 읽거나, 쓰거나, 둘 다 또는 둘 다 읽지 않는지 여부를 클라이언트에 알려야 합니다. 미니 드라이버는 KSMETHOD_ITEM 구조를 사용하여 매개 변수에 대한 메서드의 효과를 지정합니다.
KSMETHOD_TYPE_SETSUPPORT 미니 드라이버를 쿼리하여 지정된 메서드 집합을 지원하는지 여부를 확인하도록 나타냅니다.
KSMETHOD_TYPE_TOPOLOGY 지정한 메서드가 KSM_NODE 형식임을 나타냅니다. 여기서 NodeId 멤버는 토폴로지 노드의 식별자입니다. 이 플래그를 자체적으로 설정하지 마세요. 대신 이 목록의 다른 플래그와 함께 또는 입니다.

KSDEGRADE의 경우 현재 성능 저하 백분율을 천 단위로 표시하거나(값 1000이 저하를 나타내지 않음) 인터페이스에서 지정한 네이티브 단위의 시간을 지정합니다.

Alignment

사용되지 않습니다. 명명되지 않은 구조체에 적절한 맞춤을 강제 적용하는 데 사용되는 명명되지 않은 공용 구조체의 멤버입니다.

참고

사용량에 대한 자세한 내용은 KSDEGRADE, KSEVENT, KSMETHOD, KSPIN_INTERFACE, KSPIN_MEDIUMKSPROPERTY typedef topics 참조하세요.

집합 내에서 ID를 사용하면 집합 식별자에 대해 하나의 큰 비교를 수행한 다음 더 작은 빠른 비교를 수행할 수 있습니다(예: 집합 내 식별자에 switch 문을 사용). 예를 들어 속성 집합 은 고유한 GUID 식별자에 의해 참조되고 해당 집합 내의 속성은 짧은 ID로 참조됩니다.

메서드, 이벤트, 인터페이스중간 집합은 집합 의 "클래스"로 간주할 수 있습니다.

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

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

KSPROPERTY_TYPE_SERIALIZESET 및 KSPROPERTY_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 속성, 이벤트 및 메서드를 참조하세요.

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

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

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

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

클라이언트는 KSMETHOD 구조와 함께 IOCTL_KS_METHOD 요청을 사용하여 미니드라이버가 처리하는 커널 스트리밍 개체에서 메서드를 실행할 수 있습니다. 자세한 내용은 KS 메서드를 참조하세요.

KSPIN_MEDIUM 구조는 버스별 방식으로 생성되는 고유한 중간 GUID 및 instance 식별자를 사용하여 매체를 식별합니다. 버스 인스턴스가 문제가 되지 않을 때 사용되는 예약 식별자 값 KSMEDIUM_TYPE_ANYINSTANCE 있습니다. 예를 들어 KSMEDIUMSETID_Standard 시스템 버스를 참조하며, 그 중 하나만 있어야 합니다. 따라서 이 instance 식별자는 항상 편의를 위해 사용됩니다.

핀은 해당 매체에서 여러 매체 및 인터페이스를 지원할 수 있습니다. 핀이 설명되는 방식은 인터페이스 목록이 핀에 대해 열거된 모든 매체에서 지원됨을 의미합니다. true가 아닌 경우 다른 핀을 사용하여 특정 매체에 대한 인터페이스의 각 하위 집합을 설명할 수 있습니다.

또한 이 매체는 커널 스트리밍을 통해 캐시되어 가능한 연결 검색 속도를 향상합니다.

이 구조체의 사용 예는 튜너 샘플에서 찾을 수 있습니다. 이 샘플에서는 KSPIN_MEDIUM 튜너, 크로스바 및 기타 튜너 구성 요소 간의 고유한 연결을 나타냅니다.

Flags 멤버는 클라이언트가 사용하는 신호 성능 저하 유형에 따라 다른 값을 포함할 수 있습니다. 품질 관리를 참조하세요. 신호 품질을 줄여 품질 관리 문제를 해결하기 위한 다양한 전략에 대한 자세한 내용을 확인하세요.

Flags에는 ULONG 값이 포함되어 있으므로 품질 관리 문제를 해결하기 위해 여러 Skip 요청이 필요할 수 있습니다.

요구 사항

요구 사항
헤더 ks.h(Ks.h 포함)

추가 정보

KSDEGRADE

KSEVENT

KSMETHOD

KSPIN_INTERFACE

KSPIN_MEDIUM

KSPROPERTY