다음을 통해 공유


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