IoCsqInitializeEx 함수(wdm.h)
IoCsqInitializeEx 루틴은 취소 안전 IRP 큐에 대한 디스패치 테이블을 초기화합니다.
구문
NTSTATUS IoCsqInitializeEx(
[out] PIO_CSQ Csq,
[in] PIO_CSQ_INSERT_IRP_EX CsqInsertIrp,
[in] PIO_CSQ_REMOVE_IRP CsqRemoveIrp,
[in] PIO_CSQ_PEEK_NEXT_IRP CsqPeekNextIrp,
[in] PIO_CSQ_ACQUIRE_LOCK CsqAcquireLock,
[in] PIO_CSQ_RELEASE_LOCK CsqReleaseLock,
[in] PIO_CSQ_COMPLETE_CANCELED_IRP CsqCompleteCanceledIrp
);
매개 변수
[out] Csq
IoCsqInitializeEx에서 초기화할 IO_CSQ 구조체에 대한 포인터입니다.
[in] CsqInsertIrp
드라이버의 취소 안전 IRP 큐에 대한 드라이버 정의 CsqInsertIrpEx 함수에 대한 포인터입니다.
[in] CsqRemoveIrp
드라이버의 취소 안전 IRP 큐에 대한 드라이버 정의 CsqRemoveIrp 함수에 대한 포인터입니다.
[in] CsqPeekNextIrp
드라이버의 취소 안전 IRP 큐에 대한 드라이버 정의 CsqPeekNextIrp 함수에 대한 포인터입니다.
[in] CsqAcquireLock
드라이버의 취소 안전 IRP 큐에 대한 드라이버 정의 CsqAcquireLock 함수에 대한 포인터입니다.
[in] CsqReleaseLock
드라이버의 취소 안전 IRP 큐에 대한 드라이버 정의 CsqReleaseLock 함수에 대한 포인터입니다.
[in] CsqCompleteCanceledIrp
드라이버의 취소 안전 IRP 큐에 대한 드라이버 정의 CsqCompleteCanceledIrp 함수에 대한 포인터입니다.
반환 값
IoCsqInitializeEx 는 성공 시 STATUS_SUCCESS 반환하거나 실패 시 적절한 오류 코드를 반환합니다.
설명
IoCsqInitialize 및 IoCsqInitializeEx 루틴은 드라이버의 취소 안전 IRP 큐를 설명하는 IO_CSQ 구조를 초기화합니다. IoCsqInitializeEx를 사용하여 IoCsqInitialize에서 지정한 기능 대신 확장된 기능이 있는 IRP 큐를 지정할 수 있습니다.
- 드라이버는 CsqInsertIrp 루틴이 아닌 CsqInsertIrpEx 루틴을 구현합니다. CsqInsertIrpEx 는 InsertContext라는 추가 매개 변수를 사용합니다. 드라이버가 IoCsqInsertIrpEx 를 호출하여 IRP를 삽입할 때 InsertContext로 전달되는 값을 지정합니다.
- IoCsqInsertIrpEx 는 CsqInsertIrpEx의 반환 값을 반환합니다. 드라이버는 반환 값을 사용하여 삽입 작업이 성공했는지 또는 실패했는지 여부를 나타낼 수 있습니다.
IoCsqXxx 루틴은 IRP의 DriverContext[3] 멤버를 사용하여 IRP 컨텍스트 정보를 보유합니다. 이러한 루틴을 사용하여 IRP를 큐에 대기시키는 드라이버는 해당 멤버를 사용하지 않은 상태로 두어야 합니다.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows Server 2003 이상 버전의 Windows 운영 체제에서 사용할 수 있습니다. 루틴은 WDK(Windows 드라이버 키트) 및 Windows Server 2003용 DDK(드라이버 개발 키트)와 함께 제공되는 Csq.lib 라이브러리에서도 사용할 수 있습니다. Windows XP, Windows 2000 및 Windows 98/Me에서도 작동해야 하는 드라이버는 대신 Csq.lib에 연결하여 루틴을 사용할 수 있습니다. |
대상 플랫폼 | 유니버설 |
헤더 | wdm.h(Wdm.h, Ntddk.h, Ntifs.h 포함) |
라이브러리 | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | 모든 수준 |