IO_DRIVER_CREATE_CONTEXT 구조체(ntddk.h)
IO_DRIVER_CREATE_CONTEXT 구조체는 IoCreateFileEx 및 FltCreateFileEx2 루틴에 추가 매개 변수를 전달하는 데 사용됩니다. 이 구조는 선택 사항입니다.
IoCreateFileEx 루틴은 레거시 필터 드라이버에서 사용되며 FltCreateFileEx2 루틴은 미니 필터 드라이버에서 사용됩니다.
통사론
typedef struct _IO_DRIVER_CREATE_CONTEXT {
CSHORT Size;
struct _ECP_LIST *ExtraCreateParameter;
PVOID DeviceObjectHint;
PTXN_PARAMETER_BLOCK TxnParameters;
PESILO SiloContext;
} IO_DRIVER_CREATE_CONTEXT, *PIO_DRIVER_CREATE_CONTEXT;
회원
Size
IoInitializeDriverCreateContext 루틴에 의해 초기화된 읽기 전용 멤버입니다.
ExtraCreateParameter
ECP(추가 만들기 매개 변수) 항목 목록을 포함하는 ECP_LIST 구조체에 대한 포인터입니다. 중요한 정보는 다음 설명 섹션을 참조하세요.
DeviceObjectHint
IO_DRIVER_CREATE_CONTEXT 사용하여
IO_DRIVER_CREATE_CONTEXT 사용하여 IoCreateFileEx 루틴에 추가 만들기 매개 변수를 전달하는 경우 이 멤버는 만들기 요청을 보낼 디바이스 개체에 대한 포인터입니다. 디바이스 개체는 파일 또는 디렉터리가 있는 볼륨에 대한 파일 시스템 드라이버 스택의 레거시 필터 또는 파일 시스템 디바이스 개체여야 합니다.
TxnParameters
만들기 작업과 연결하려는 트랜잭션에 대한 포인터입니다. 이 멤버의 값이 트랜잭션에 대한 유효한 포인터인 경우 만들기 작업은 트랜잭션의 일부가 됩니다. 이 멤버의 값이 NULL
SiloContext
파일이 있는 컨테이너입니다. 이 멤버는 Windows 10 버전 1607에서 도입되었습니다.
발언
IO_DRIVER_CREATE_CONTEXT 구조체는 페이징된 풀 또는 비페이지 풀에서 할당할 수 있습니다. IoInitializeDriverCreateContext 루틴은 구조를 사용하려면 먼저 IO_DRIVER_CREATE_CONTEXT 구조를 초기화해야 합니다.
IO_DRIVER_CREATE_CONTEXT 구조체의 멤버(Size 멤버 제외)는 IoCreateFileEx 및 FltCreateFileEx2 루틴에 대한 추가 매개 변수로 작동합니다. IoCreateFileEx 및 FltCreateFileEx2 루틴의 인터페이스에 비해 다음 정보가 유용할 수 있습니다.
ECP_LIST 구조체에는 ECP(추가 만들기 매개 변수) 항목 목록이 포함됩니다. ECP 목록(ECP_LIST 구조)의 각 ECP 항목(ECP 컨텍스트 구조)은 IoCreateFileEx
fltCreateFileEx2 추가 만들기 매개 변수로 작동합니다. ECP를 만들기 작업의 일부로 지정하려면 올바른 루틴으로 IO_DRIVER_CREATE_CONTEXT 구조체의 ExtraCreateParameter 멤버를 초기화합니다.
레거시 필터 드라이버의 경우 FsRtlAllocateExtraCreateParameterList 루틴을 사용하여 ECP_LIST 구조에 대한 메모리 풀을 할당해야 합니다. 운영 체제는 ECP_LIST 구조를 자동으로 해제하지 않습니다. 대신 ECP_LIST 구조체가 할당되면 결국 FsRtlFreeExtraCreateParameterList 루틴을 사용하여 해제해야 합니다.
미니 필터 드라이버의 경우 FltAllocateExtraCreateParameterList 루틴을 사용하여 ECP_LIST 구조에 대한 메모리 풀을 할당해야 합니다. 운영 체제는 ECP_LIST 구조를 자동으로 해제하지 않습니다. 대신 ECP_LIST 구조체가 할당되면 FltFreeExtraCreateParameterList 루틴을 사용하여 결국 해제해야 합니다.
ECP를 사용하는 경우 적절한 루틴을 사용하여 생성, 조작 및 해제해야 합니다. 예를 들어 미니 필터 드라이버는 FltInsertExtraCreateParameter 루틴을 사용하여 ECP 목록에 ECP 항목을 삽입합니다. 다음 참고 섹션에는 이러한 많은 필수 루틴이 나와 있습니다.
IoCreateFileEx 또는 fltCreateFileEx2호출에서 돌아오면 ECP 목록이 변경되지 않으며 추가 IoCreateFileEx 또는FltCreateFileEx2 새 만들기 작업에 대한 호출로 전달될 수 있습니다.트랜잭션 컨텍스트에서 파일을 만들거나 열려면 IO_DRIVER_CREATE_CONTEXT 구조체의 TxnParameters 멤버를 IoGetTransactionParameterBlock 루틴에서 반환된 값으로 설정합니다.
요구 사항
요구 | 값 |
---|---|
헤더 | ntddk.h(Ntddk.h, Ntifs.h, Fltkernel.h 포함) |
참고 항목
FltAllocateExtraCreateParameterFromLookasideList
FltAllocateExtraCreateParameterList
FltFreeExtraCreateParameterList
FsRtlAllocateExtraCreateParameterList
FsRtlFreeExtraCreateParameterList
IoCreateFileSpecifyDeviceObjectHint