KsRemoveIrpFromCancelableQueue 함수(ks.h)
KsRemoveIrpFromCancelableQueue 함수는 취소할 수 있는 지정된 큐에서 다음으로 비행복 IRP를 팝하고 취소 상태를 제거합니다. 이 함수는 취소 루틴이 있는 IRP가 발견되거나 목록의 끝에 도달할 때까지 목록을 검색합니다. 이 함수는 제공된 스핀 잠금을 사용하여 대부분의 경우 액세스를 동기화하여 취소 스핀 잠금의 사용을 최소화합니다. 이 함수는 IRQ 수준 DISPATCH_LEVEL 이하에서 호출될 수 있습니다.
통사론
KSDDKAPI PIRP KsRemoveIrpFromCancelableQueue(
[in, out] PLIST_ENTRY QueueHead,
[in] PKSPIN_LOCK SpinLock,
[in] KSLIST_ENTRY_LOCATION ListLocation,
[in] KSIRP_REMOVAL_OPERATION RemovalOperation
);
매개 변수
[in, out] QueueHead
IRP를 제거할 큐의 헤드를 가리킵니다.
[in] SpinLock
큐 액세스를 위한 드라이버의 스핀 잠금을 가리킵니다.
[in] ListLocation
이 IRP가 큐의 시작 또는 끝에서 올지 여부를 나타냅니다.
[in] RemovalOperation
취소 함수를 NULL설정하여 IRP를 목록에서 제거할지 또는 방금 가져올지 여부를 지정합니다. IRP는 나중에 KsReleaseIrpOnCancelableQueue 함께 릴리스되거나 KsRemoveSpecificIrpFromCancelableQueue사용하여 완전히 제거되어야 합니다.
반환 값
KsRemoveIrpFromCancelableQueue 함수는 목록에 있는 다음 비방향 IRP를 반환하거나, 찾을 수 없거나 아직 획득하지 않은 IRP를 찾을 수 없는 경우 NULL 반환합니다.
발언
이러한 열거형은 이전 매개 변수에서 IRP가 제거되는 위치와 방법을 제어하는 데 사용됩니다.
typedef enum {
KsListEntryTail,
KsListEntryHead
} KSLIST_ENTRY_LOCATION;
typedef enum {
KsAcquireOnly,
KsAcquireAndRemove
} KSIRP_REMOVAL_OPERATION;
요구 사항
요구 | 값 |
---|---|
대상 플랫폼 | 보편적 |
헤더 | ks.h(Ks.h 포함) |
라이브러리 | Ks.lib |