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 |