다음을 통해 공유


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 반환하거나 실패 시 적절한 오류 코드를 반환합니다.

설명

IoCsqInitializeIoCsqInitializeEx 루틴은 드라이버의 취소 안전 IRP 큐를 설명하는 IO_CSQ 구조를 초기화합니다. IoCsqInitializeEx를 사용하여 IoCsqInitialize에서 지정한 기능 대신 확장된 기능이 있는 IRP 큐를 지정할 수 있습니다.

  • 드라이버는 CsqInsertIrp 루틴이 아닌 CsqInsertIrpEx 루틴을 구현합니다. CsqInsertIrpExInsertContext라는 추가 매개 변수를 사용합니다. 드라이버가 IoCsqInsertIrpEx 를 호출하여 IRP를 삽입할 때 InsertContext로 전달되는 값을 지정합니다.
  • IoCsqInsertIrpExCsqInsertIrpEx의 반환 값을 반환합니다. 드라이버는 반환 값을 사용하여 삽입 작업이 성공했는지 또는 실패했는지 여부를 나타낼 수 있습니다.
그렇지 않으면 IoCsqInitializeEx 의 효과는 IoCsqInitialize의 효과와 동일합니다. 자세한 내용은 Cancel-Safe IRP 큐를 참조하세요.

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 모든 수준

추가 정보

CsqAcquireLock

CsqCompleteCanceledIrp

CsqInsertIrp

CsqInsertIrpEx

CsqPeekNextIrp

CsqReleaseLock

CsqRemoveIrp

IO_CSQ

IO_CSQ_IRP_CONTEXT

IoCsqInitializeEx

IoCsqInsertIrp

IoCsqInsertIrpEx

IoCsqRemoveIrp

IoCsqRemoveNextIrp