KsEnableEventWithAllocator 함수(ks.h)

KsEnableEventWithAllocator 함수를 사용하면 IOCTL_KS_ENABLE_EVENT 통해 요청된 이벤트를 사용할 수 있지만 선택적 할당자 콜백을 사용하여 매개 변수에 대한 버퍼를 제공할 수도 있습니다. 집합에서 정의한 모든 이벤트 식별자에 응답합니다. 이 함수는 PASSIVE_LEVEL 호출할 수 있습니다.

필터를 사용하는 경우 일부 비전통적인 방식으로 버퍼를 해제해야 할 수 있습니다. 사용자 지정 할당자를 사용할 때는 IRP_BUFFERED_IO 및 IRP_DEALLOCATE_BUFFER 플래그가 설정되지 않습니다.

구문

KSDDKAPI NTSTATUS KsEnableEventWithAllocator(
  [in]           PIRP              Irp,
  [in]           ULONG             EventSetsCount,
  [in]           const KSEVENT_SET *EventSet,
  [in, out]      PLIST_ENTRY       EventsList,
  [in, optional] KSEVENTS_LOCKTYPE EventsFlags,
  [in, optional] PVOID             EventsLock,
  [in, optional] PFNKSALLOCATOR    Allocator,
  [in, optional] ULONG             EventItemSize
);

매개 변수

[in] Irp

사용 요청이 처리되는 IRP를 지정합니다. IRP와 연결된 파일 개체는 이벤트를 사용하지 않도록 설정하면 나중에 비교할 수 있는 이벤트와 함께 저장됩니다.

[in] EventSetsCount

전달되는 이벤트 집합 구조체의 수를 나타냅니다.

[in] EventSet

이벤트 집합 정보 목록에 대한 포인터를 지정합니다.

[in, out] EventsList

사용 이벤트의 KSEVENT_SET. 이벤트 집합에 대한 AddHandler는 NULL이며 이벤트를 추가할 KSEVENT_ENTRY 항목 목록의 헤드를 가리킵니다. 이 함수는 이벤트의 하위 집합에 대해 단일 목록을 가정합니다.

[in, optional] EventsFlags

이벤트 목록에 액세스하는 데 사용할 제외 잠금 유형(있는 경우)을 지정하는 KSEVENTS_LOCKTYPE 플래그를 지정합니다. 플래그가 설정되지 않은 경우 잠금이 수행되지 않습니다. 처리기가 이미 지정된 경우 이 매개 변수는 무시됩니다.

[in, optional] EventsLock

If the KSEVENT_SET. 사용하도록 설정된 이벤트가 포함된 이벤트 집합에 대한 AddHandler는 NULL입니다. 그런 다음 목록에 대한 액세스를 동기화하는 데 사용됩니다. EventsFlags에 플래그가 설정되지 않은 경우 이 값은 NULL일 수 있습니다.

[in, optional] Allocator

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

[in, optional] EventItemSize

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

반환 값

성공하면 STATUS_SUCCESS 반환하는 KsEnableEvent와 동일하거나, 실패할 경우 사용하도록 설정되는 이벤트와 관련된 오류입니다. 함수는 항상 IO_STATUS_BLOCK 설정합니다. PIRP의 정보 필드입니다. IRP 내의 IoStatus 요소를 0으로 설정합니다. IO_STATUS_BLOCK 설정하지 않습니다. 상태 필드도 IRP를 완료하지 않습니다.

설명

선택적 할당자 콜백을 사용하는 경우 필터는 일부 비전통적인 방식으로 버퍼를 해제해야 할 수 있습니다. 사용자 지정 할당자를 사용할 때는 IRP_BUFFERED_IO 및 IRP_DEALLOCATE_BUFFER 플래그가 설정되지 않습니다.

요구 사항

요구 사항
대상 플랫폼 유니버설
헤더 ks.h(Ks.h 포함)
라이브러리 Ks.lib