다음을 통해 공유


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

추가 정보

KsReleaseIrpOnCancelableQueue

KsRemoveSpecificIrpFromCancelableQueue