다음을 통해 공유


KsPropertyHandlerWithAllocator 함수(ks.h)

KsPropertyHandlerWithAllocator는 동일한 제한 사항으로 KsPropertyHandler와 동일한 처리를 수행하지만 선택적 할당자 콜백을 사용하여 매개 변수에 대한 버퍼를 제공할 수 있습니다. 필터를 사용하는 경우 일부 틀에 얽매이지 않는 방식으로 버퍼를 해제해야 할 수 있습니다. IRP_BUFFERED_IO 및 IRP_DEALLOCATE_BUFFER 플래그는 사용자 지정 할당자를 사용할 때 설정되지 않습니다.

구문

KSDDKAPI NTSTATUS KsPropertyHandlerWithAllocator(
  [in]           PIRP                 Irp,
  [in]           ULONG                PropertySetsCount,
  [in]           const KSPROPERTY_SET *PropertySet,
  [in, optional] PFNKSALLOCATOR       Allocator,
  [in, optional] ULONG                PropertyItemSize
);

매개 변수

[in] Irp

처리 중인 속성 요청이 있는 IRP를 지정합니다.

[in] PropertySetsCount

전달되는 속성 집합의 수를 지정합니다.

[in] PropertySet

속성 집합 정보의 배열에 대한 포인터를 지정합니다.

[in, optional] Allocator

필요에 따라 속성 매개 변수를 저장하기 위해 메모리를 할당하는 데 사용되는 할당 함수를 가리킵니다.

[in, optional] PropertyItemSize

필요에 따라 속성의 각 KSPROPERTY_ITEM 구조체의 크기를 포함합니다. 개인 정보를 저장하기 위해 속성 항목을 확장할 수 있습니다. 이 매개 변수가 0이면 구조체 크기는 정상으로 간주됩니다. 속성 항목 구조보다 크거나 같은 경우 KSPROPERTY_ITEM_IRP_STORAGE 매크로를 사용하여 사용자 지정 데이터를 검색할 수 있도록 속성 항목에 대한 포인터를 반환할 수 있습니다. 64비트 플랫폼에서 이 매개 변수는 8의 배수여야 합니다.

반환 값

KsPropertyHandler 함수는 성공하면 STATUS_SUCCESS 반환하거나 실패할 경우 처리되는 속성과 관련된 오류를 반환합니다. 함수는 내부 오류로 인해 Irp-IoStatus.Information> 멤버를 0으로 설정하거나 속성 처리기를 통해 설정합니다. 함수는 lrp-IoStatus.Status> 멤버를 설정하지 않으며 IRP를 완료하지도 않습니다.

64비트 플랫폼에서 PropertyItemSize 매개 변수가 8의 배수가 아닌 경우 STATUS_INVALID_PARAMETER 반환되고 호출이 실패합니다.

설명

KsPropertyHandlerWithAllocatorIRP의 Irp-Tail.Overlay.DriverContext> 매개 변수에서 관련 KSPROPERTY_ITEM 구조에 대한 포인터를 배치합니다. 미니 드라이버는 ks.h에 정의된 KSPROPERTY_ITEM_IRP_STORAGE 매크로를 사용하여 이 포인터에 액세스할 수 있습니다.

요구 사항

요구 사항
대상 플랫폼 유니버설
헤더 ks.h(Ks.h 포함)

추가 정보

KsFastPropertyHandler

KsPropertyHandler