IO_DRIVER_CREATE_CONTEXT 구조체(ntddk.h)
IO_DRIVER_CREATE_CONTEXT 구조체는 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 사용하여 추가 만들기 매개 변수를 FltCreateFileEx2 루틴에 전달하는 경우 이 멤버는 NULL이어야 합니다.
IO_DRIVER_CREATE_CONTEXT 사용하여 추가 만들기 매개 변수를 IoCreateFileEx 루틴에 전달하는 경우 이 멤버는 만들기 요청을 보낼 디바이스 개체에 대한 포인터입니다. 디바이스 개체는 파일 또는 디렉터리가 있는 볼륨에 대한 파일 시스템 드라이버 스택의 레거시 필터 또는 파일 시스템 디바이스 개체여야 합니다. IoCreateFileEx의 경우 이 매개 변수는 선택 사항이며 NULL일 수 있습니다. 이 매개 변수가 NULL이면 요청이 드라이버 스택의 맨 위에 있는 디바이스 개체로 전송됩니다.
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 루틴을 사용하여 해제해야 합니다.
IoCreateFileEx 또는 FltCreateFileEx2 호출에서 반환되면 ECP 목록은 변경되지 않으며 새 만들기 작업에 대한 추가 IoCreateFileEx 또는 FltCreateFileEx2 호출에 전달될 수 있습니다.
- 트랜잭션 컨텍스트에서 파일을 만들거나 열려면 IO_DRIVER_CREATE_CONTEXT 구조체의 TxnParameters 멤버를 IoGetTransactionParameterBlock 루틴에서 반환된 값으로 설정합니다. 트랜잭션에 대한 자세한 내용은 TxF(트랜잭션 관리)를 참조하세요.
요구 사항
| 지원되는 최소 클라이언트 | 이 구조는 Windows Vista부터 사용할 수 있습니다. |
| 헤더 | ntddk.h(Ntddk.h, Ntifs.h, Fltkernel.h 포함) |
참고 항목
FltAllocateExtraCreateParameterFromLookasideList
FltAllocateExtraCreateParameterList
FltFreeExtraCreateParameterList
FsRtlAllocateExtraCreateParameterList
FsRtlFreeExtraCreateParameterList
IoCreateFileSpecifyDeviceObjectHint
피드백
다음에 대한 사용자 의견 제출 및 보기