커널 모드 드라이버가 시작된 IRP_MJ_CREATE 작업에 ECP 연결
ECP를 설정하고 파일의 IRP_MJ_CREATE 작업에 ECP를 연결하려면 다음 단계를 수행해야 합니다.
FltAllocateExtraCreateParameterList 또는 FsRtlAllocateExtraCreateParameterList를 호출하여 ECP_LIST 구조체에 대한 메모리를 할당합니다. 운영 체제는 ECP_LIST 구조를 자동으로 해제하지 않습니다. 대신 미니필터 드라이버는 결국 FltFreeExtraCreateParameterList 또는 FsRtlFreeExtraCreateParameterList 를 호출하여 ECP_LIST 할당된 메모리의 할당을 취소해야 합니다.
FltAllocateExtraCreateParameter 또는 FsRtlAllocateExtraCreateParameter를 호출하여 ECP 컨텍스트 구조에 대해 페이징된 메모리 풀을 할당하고 해당 구조체에 대한 포인터를 생성합니다.
FltInsertExtraCreateParameter 또는 FsRtlInsertExtraCreateParameter를 호출하여 ECP 컨텍스트 구조를 ECP_LIST 구조체에 삽입합니다.
IoInitializeDriverCreateContext를 호출하여 IO_DRIVER_CREATE_CONTEXT 구조를 초기화합니다.
IO_DRIVER_CREATE_CONTEXT 구조를 정의합니다. 이 정의에서 IO_DRIVER_CREATE_CONTEXTExtraCreateParameter 멤버를 ECP_LIST 구조체로 가리킵니다.
FltCreateFileEx2 또는 IoCreateFileEx를 호출하여 파일의 IRP_MJ_CREATE 작업에 ECP를 연결합니다. 이 호출에서 IO_DRIVER_CREATE_CONTEXT 구조체에 대한 포인터를 DriverContext 매개 변수에 전달합니다.
FltFreeExtraCreateParameterList 또는 FsRtlFreeExtraCreateParameterList를 호출하여 ECP_LIST 구조를 해제합니다. 또한 이러한 함수는 나머지 ECP 목록 요소를 자동으로 해제합니다.