IoCsqRemoveIrp 함수(wdm.h)
IoCsqRemoveIrp 루틴은 큐에서 특정 IRP를 제거합니다.
구문
PIRP IoCsqRemoveIrp(
[in, out] PIO_CSQ Csq,
[in, out] PIO_CSQ_IRP_CONTEXT Context
);
매개 변수
[in, out] Csq
드라이버의 취소 안전 IRP 큐에 대한 IO_CSQ 구조체에 대한 포인터입니다. 이 구조체는 IoCsqInitialize 또는 IoCsqInitializeEx에 의해 초기화되어야 합니다.
[in, out] Context
제거할 IRP 를 식별하는 IO_CSQ_IRP_CONTEXT 구조체에 대한 포인터입니다. IO_CSQ_IRP_CONTEXT 구조는 IRP가 큐에 처음 삽입될 때 IoCsqInsertIrp 또는 IoCsqInsertIrpEx에 의해 초기화됩니다.
반환 값
이 루틴은 큐에서 제거된 IRP에 대한 포인터를 반환하거나 해당 IRP가 취소된 경우 NULL 을 반환합니다.
설명
IoCsqRemoveIrp 은 큐의 디스패치 루틴을 사용하여 IRP를 제거합니다. IoCsqRemoveIrp 루틴:
- 큐의 CsqAcquireLock 루틴을 호출하여 큐를 잠급니다.
- IrpContext 매개 변수를 사용하여 제거할 IRP를 확인하고 큐의 CsqRemoveIrp 루틴을 호출하여 해당 IRP를 제거합니다.
- 큐의 CsqReleaseLock 루틴을 호출하여 큐의 잠금을 해제합니다.
IoCsqXxx 루틴은 IRP의 DriverContext[3] 멤버를 사용하여 IRP 컨텍스트 정보를 보유합니다. 이러한 루틴을 사용하여 IRP를 큐에 대기시키는 드라이버는 해당 멤버를 사용하지 않은 상태로 두어야 합니다.
IoCsqRemoveIrp의 호출자는 IRQL <= DISPATCH_LEVEL 실행 중이어야 합니다. 드라이버의 콜백 루틴은 해당 IRQL에서 올바르게 작동해야 합니다.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows XP 이상 버전의 Windows에서 사용할 수 있습니다. Windows 2000 및 Windows 98/Me에서도 작동해야 하는 드라이버는 대신 Csq.lib에 연결하여 루틴을 사용할 수 있습니다. |
대상 플랫폼 | 유니버설 |
헤더 | wdm.h(Wdm.h, Ntddk.h, Ntifs.h 포함) |
라이브러리 | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= DISPATCH_LEVEL(설명 섹션 참조) |