KsAddIrpToCancelableQueue 함수(ks.h)
KsAddIrpToCancelableQueue 함수는 취소 가능한 IRP 큐에 IRP를 추가하여 IRP를 취소할 수 있도록 합니다. IRP가 이전에 취소된 상태로 설정된 경우 KsAddIrpToCancelableQueue 함수는 해당 IRP의 취소를 완료합니다.
구문
KSDDKAPI VOID KsAddIrpToCancelableQueue(
[in, out] PLIST_ENTRY QueueHead,
[in] PKSPIN_LOCK SpinLock,
[in] PIRP Irp,
[in] KSLIST_ENTRY_LOCATION ListLocation,
[in, optional] PDRIVER_CANCEL DriverCancel
);
매개 변수
[in, out] QueueHead
IRP를 추가할 큐의 헤드에 대해 드라이버 할당 스토리지를 지정합니다.
[in] SpinLock
QueueHead에 지정된 큐에 대한 큐 액세스에 대한 드라이버의 스핀 잠금을 가리킵니다. 이 포인터의 복사본은 필요한 경우 취소 루틴에서 사용하기 위해 IRP의 KSQUEUE_SPINLOCK_IRP_STORAGE(Irp)에 보관됩니다.
[in] Irp
QueueHead에 지정된 큐에 추가할 IRP를 지정합니다.
[in] ListLocation
이 IRP를 큐의 시작 또는 끝에 배치해야 하는지 여부를 나타냅니다. 이 값은 KsListEntryTail 또는 KsListEntryHead여야 합니다.
[in, optional] DriverCancel
사용할 드라이버 제공 취소 루틴을 지정하는 선택적 매개 변수입니다. NULL인 경우 표준 KsCancelRoutine이 사용됩니다.
반환 값
없음
설명
이 루틴이 호출될 때 IRP가 취소 상태로 전환된 경우 KsAddIrpToCancelableQueue 는 DriverCancel에 지정된 취소 루틴을 즉시 호출하거나 DriverCancel 에 루틴이 지정되지 않은 경우 기본 스트리밍 취소 루틴이 호출됩니다.
KsAddIrpToCancelableQueue 함수를 사용하면 취소 목록에 배치되기 전이나 목록에서 다른 목록으로 이동할 때에도 IRP를 취소할 수 있습니다. 드라이버 할당 큐와 큐의 모든 항목이 시스템 상주 또는 상주 스토리지에서 할당되지 않는 한 IRQ 수준 DISPATCH_LEVEL 이하에서 이 함수를 호출할 수 있습니다.
함수는 취소 스핀 잠금을 사용하여 목록에 항목을 추가하지 않습니다. 목록에 대한 액세스는 제공된 스핀 잠금을 사용하여 동기화되며 Irp-CancelRoutine>에서 원자성 작업에 의존합니다.
요구 사항
요구 사항 | 값 |
---|---|
대상 플랫폼 | 유니버설 |
헤더 | ks.h(Ks.h 포함) |
라이브러리 | Ks.lib |