다음을 통해 공유


KsMoveIrpsOnCancelableQueue 함수(ks.h)

KsMoveIrpsOnCancelableQueue 함수는 미니드라이버 정의 KStrIrpListCallback 함수에서 반환된 값에 따라 SourceList 매개 변수에서 DestinationList 매개 변수로 지정된 IRP를 이동합니다.

구문

KSDDKAPI NTSTATUS KsMoveIrpsOnCancelableQueue(
  [in, out]      PLIST_ENTRY           SourceList,
  [in]           PKSPIN_LOCK           SourceLock,
  [in, out]      PLIST_ENTRY           DestinationList,
  [in, optional] PKSPIN_LOCK           DestinationLock,
  [in]           KSLIST_ENTRY_LOCATION ListLocation,
  [in]           PFNKSIRPLISTCALLBACK  ListCallback,
  [in]           PVOID                 Context
);

매개 변수

[in, out] SourceList

IRP를 제거할 큐의 헤드를 지정합니다.

[in] SourceLock

원본 큐 액세스를 위한 드라이버의 스핀 잠금에 대한 포인터입니다.

[in, out] DestinationList

IRP를 추가할 큐의 헤드를 지정합니다.

[in, optional] DestinationLock

필요에 따라 대상 큐 액세스를 위한 드라이버의 스핀 잠금에 대한 포인터를 포함합니다. 이 매개 변수가 제공되지 않으면 SourceLock 매개 변수가 두 큐를 모두 제어하는 것으로 간주됩니다. 제공된 경우 이 잠금은 항상 SourceLock 매개 변수 다음에 획득됩니다. 대상 목록에 별도의 스핀 잠금이 있는 경우 IRP를 이동하고 KSQUEUE_SPINLOCK_IRP_STORAGE() 스핀 잠금을 업데이트할 수 있도록 시스템 전체의 스핀 잠금 취소를 먼저 획득합니다.

[in] ListLocation

원본 큐의 머리 또는 꼬리에서 IRP를 열거해야 하는지 여부를 나타냅니다. 이동된 모든 IRP는 주문이 유지되도록 대상 큐의 반대쪽 끝에 배치됩니다.

[in] ListCallback

특정 IRP를 SourceList에서 DestinationList로 이동해야 하는지 또는 열거형을 종료해야 하는지 여부를 나타내기 위해 호출할 미니드라이버 정의 KStrIrpListCallback 함수를 지정합니다.

[in] Context

ListCallback에 전달된 컨텍스트입니다.

반환 값

목록이 완전히 열거된 경우 STATUS_SUCCESS 반환합니다. 그렇지 않으면 는 열거를 중단한 minidriver-defined KStrIrpListCallback 콜백 함수에서 반환된 경고 또는 오류를 반환합니다.

설명

KStrIrpListCallback 함수가 현재 획득되었는지 여부에 관계없이 이동해야 한다고 나타내는 경우 IRP가 이동됩니다. KStrIrpListCallback이 STATUS_SUCCESS 반환하면 IRP가 이동됩니다. STATUS_NO_MATCH 반환하는 경우 IRP는 이동되지 않습니다. 다른 반환 경고 또는 오류 값은 열거형을 종료하고 함수에 의해 반환됩니다. STATUS_NO_MATCH 값은 KStrIrpListCallback에서 오류로 반환되어서는 안 됩니다. KStrIrpListCallback 은 DISPATCH_LEVEL 호출됩니다. KStrIrpListCallback 은 항상 NULL IRP 값으로 마지막에 한 번 이상 호출되어 목록 열거를 완료합니다.

KsMoveIrpsOnCancelableQueue 는 콜백 함수가 검색을 종료하거나 목록의 끝에 도달할 때까지 목록을 계속 진행합니다. KsMoveIrpsOnCancelableQueue 는 제공된 스핀 잠금을 사용하여 가능한 경우 액세스를 동기화하여 시스템 전체의 스핀 잠금 취소 사용을 최소화합니다. KsMoveIrpsOnCancelableQueue 는 IRP를 이동하는 동안 취소 루틴을 수정할 수 없습니다.

함수는 DISPATCH_LEVEL 이하에서 호출할 수 있습니다.

요구 사항

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

추가 정보

KStrIrpListCallback