Присоединение ECP'ов к операциям IRP_MJ_CREATE, созданным драйвером в режиме ядра.

Необходимо выполнить следующие действия, чтобы настроить ECP и подключить ECP к операции IRP_MJ_CREATE в файле:

  1. Вызовите FltAllocateExtraCreateParameterList или FsRtlAllocateExtraCreateParameterList, чтобы выделить память для структуры ECP_LIST. Операционная система не освобождает автоматически ECP_LIST структуры. Вместо этого драйвер минифильтра должен в конечном итоге вызвать FltFreeExtraCreateParameterList или FsRtlFreeExtraCreateParameterList , чтобы освободить память, выделенную для ECP_LIST.

  2. Вызовите FltAllocateExtraCreateParameter или FsRtlAllocateExtraCreateParameter, чтобы выделить пул памяти страниц для структуры контекста ECP и создать указатель на нее.

  3. Вызовите FltInsertExtraCreateParameter или FsRtlInsertExtraCreateParameter , чтобы вставить структуры контекста ECP в структуру ECP_LIST .

  4. Вызовите IoInitializeDriverCreateContext , чтобы инициализировать структуру IO_DRIVER_CREATE_CONTEXT .

  5. Определите структуру IO_DRIVER_CREATE_CONTEXT . В этом определении направьте элемент ExtraCreateParameter из IO_DRIVER_CREATE_CONTEXT на структуру ECP_LIST.

  6. Вызовите FltCreateFileEx2 или IoCreateFileEx , чтобы подключить ECPs к операции IRP_MJ_CREATE файла. В этом вызове передайте указатель на структуру IO_DRIVER_CREATE_CONTEXT параметру DriverContext .

  7. Вызовите FltFreeExtraCreateParameterList или FsRtlFreeExtraCreateParameterList, чтобы освободить структуру ECP_LIST. Эти функции также автоматически освобождают все остальные элементы списка ECP.