다음을 통해 공유


KsMoveIrpsOnCancelableQueue 함수(ks.h)

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

통사론

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를 SourceListDestinationList이동할지 또는 열거형을 종료해야 하는지 여부를 나타내기 위해 호출할 미니 드라이버 정의 KStrIrpListCallback 함수를 지정합니다.

[in] Context

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

반환 값

목록이 완전히 열거된 경우 STATUS_SUCCESS 반환합니다. 그렇지 않으면 미니 드라이버 정의 KStrIrpListCallback 열거형이 중단된 콜백 함수에서 반환된 경고 또는 오류를 반환합니다.

발언

IRP는 KStrIrpListCallback 함수가 현재 획득되었는지 여부에 관계없이 이동해야 임을 나타내는 경우 이동됩니다. 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