KS 속성
속성은 필터 또는 핀과 같은 커널 스트리밍 개체에 속하는 기능 또는 컨트롤 상태 설정을 나타냅니다. 커널 스트리밍 미니드라이버의 클라이언트는 가져오기 및 설정 속성 요청(KSPROPERTY_TYPE_GET 및 KSPROPERTY_TYPE_SET)을 미니드라이버가 인스턴스화한 필터 및 핀으로 보낼 수 있습니다. 관련 속성 그룹을 속성 집합이라고 합니다.
개별 속성을 얻거나 설정하기 위해 사용자 모드 클라이언트는 dwIoControlCode 매개 변수가 IOCTL_KS_PROPERTY 설정된 Win32 함수 DeviceIoControl을 호출합니다. DeviceIoControl은 Microsoft Windows SDK 설명서에 설명되어 있습니다. 커널 모드 클라이언트는 KsSynchronousDeviceControl을 호출해야 합니다.
입력 버퍼는 KSPROPERTY 구조 또는 KSPROPERTY 구조 및 요청과 관련된 기타 정보를 포함하는 래퍼입니다. 이 호출에 대한 응답으로 운영 체제는 클래스 드라이버에 IRP를 디스패치합니다.
클래스 드라이버가 결과 IRP를 받으면 KsPropertyHandler를 호출합니다. 클래스 드라이버는 속성 요청의 세부 정보를 식별하는 KSPROPERTY 구조체의 주소를 호출 매개 변수로 포함합니다. 속성 요청은 클래스 드라이버 수준에서 또는 미니 드라이버 제공 처리기에 의해 자동으로 처리됩니다. 클래스 드라이버에서 처리하는 속성 집합과 미니드라이버 제공 처리기가 필요한 속성 집합을 비롯한 참조 정보는 커널 스트리밍 속성 집합을 참조하세요. 미니 드라이버는 기본적으로 클래스 드라이버에서 처리하는 속성에 대한 콜백을 제공하여 클래스 드라이버 처리기를 재정의하거나 보강할 수 있습니다.
미니드라이버에서 이 속성에 대한 처리기를 제공한 경우 KsPropertyHandler 는 적절한 미니드라이버 제공 콜백에 요청을 전달합니다.
미니 드라이버는 KSPROPERTY_ITEM 형식의 구조에서 속성 지원 콜백에 대한 포인터를 제공합니다. 미니 드라이버는 KSPROPERTY_SET 구조체 에서 관련 KSPROPERTY_ITEM 구조체의 배열을 그룹화합니다. 클래스 드라이버 모델에는 미니드라이버가 클래스 드라이버에서 속성 집합 데이터를 사용할 수 있도록 하는 방법이 약간 다릅니다. 커널 스트리밍의 링크를 따라 클래스 드라이버 관련 정보를 찾을 수 있습니다.
또한 미니 드라이버는 KSPROPERTY_ITEM 구조체의 KSPROPERTY_VALUES 구조체에 대한 포인터를 제공합니다. KSPROPERTY_VALUES 구조체에는 KSPROPERTY_MEMBERSLIST 구조체의 배열이 포함됩니다. 미니 드라이버가 속성에 허용되는 값의 크기와 형식을 지정하는 위치입니다. 각 KSPROPERTY_MEMBERSLIST 구조에는 헤더 멤버가 포함되어 있습니다. 미니드라이버에서 지원하는 속성의 법적 범위 또는 값을 지정하는 방법에 대한 자세한 내용은 KSPROPERTY_MEMBERSHEADER 참조하세요. Microsoft WDK(Windows 드라이버 키트)의 Testcap 샘플에서 이 메커니즘의 구현을 찾을 수도 있습니다.
속성에 허용되는 값의 크기와 형식을 보고하기 위해 클래스 드라이버는 클라이언트의 KSPROPERTY_TYPE_BASICSUPPORT 요청에 대한 응답으로 KSPROPERTY_DESCRIPTION 구조를 반환합니다.
클래스 드라이버는 KSPROPERTY_DESCRIPTION 구조체에 KSPROPERTY_MEMBERSHEADER 구조 목록을 추가할 수 있습니다.