Freigeben über


Anfügen von ECPs an IRP_MJ_CREATE Vorgänge, von denen ein Kernelmodustreiber stammt

Führen Sie die folgenden Schritte aus, um ECPs einzurichten und die ECPs an einen IRP_MJ_CREATE-Vorgang für eine Datei anzufügen:

  1. Rufen Sie FltAllocateExtraCreateParameterList oder FsRtlAllocateExtraCreateParameterList auf, um Arbeitsspeicher für eine ECP_LIST-Struktur zuzuweisen. Das Betriebssystem gibt ECP_LIST Strukturen nicht automatisch frei. Stattdessen muss der Minifiltertreiber schließlich FltFreeExtraCreateParameterList oder FsRtlFreeExtraCreateParameterList aufrufen, um die Zuordnung von Arbeitsspeicher aufzugeben, der für die ECP_LIST zugewiesen wurde.

  2. Rufen Sie FltAllocateExtraCreateParameter oder FsRtlAllocateExtraCreateParameter auf, um einen ausgelagerten Speicherpool für eine ECP-Kontextstruktur zuzuweisen und einen Zeiger auf diese Struktur zu generieren.

  3. Rufen Sie FltInsertExtraCreateParameter oder FsRtlInsertExtraCreateParameter auf , um ECP-Kontextstrukturen in die ECP_LIST-Struktur einzufügen.

  4. Rufen Sie IoInitializeDriverCreateContext auf, um eine IO_DRIVER_CREATE_CONTEXT-Struktur zu initialisieren.

  5. Definieren Sie die IO_DRIVER_CREATE_CONTEXT-Struktur . Zeigen Sie in dieser Definition den ExtraCreateParameter-Member von IO_DRIVER_CREATE_CONTEXT auf die ECP_LIST-Struktur .

  6. Rufen Sie FltCreateFileEx2 oder IoCreateFileEx auf, um die ECPs an den IRP_MJ_CREATE Vorgang für die Datei anzufügen. Übergeben Sie in diesem Aufruf einen Zeiger auf die IO_DRIVER_CREATE_CONTEXT-Struktur an den DriverContext-Parameter .

  7. Rufen Sie FltFreeExtraCreateParameterList oder FsRtlFreeExtraCreateParameterList auf, um die ECP_LIST-Struktur frei zu geben. Diese Funktionen geben auch alle verbleibenden ECP-Listenelemente automatisch frei.