FltAllocateCallbackData-Funktion (fltkernel.h)
FltAllocateCallbackData weist eine Rückrufdatenstruktur zu, die ein Minifiltertreiber verwenden kann, um eine E/A-Anforderung zu initiieren.
Syntax
NTSTATUS FLTAPI FltAllocateCallbackData(
[in] PFLT_INSTANCE Instance,
[in, optional] PFILE_OBJECT FileObject,
[out] PFLT_CALLBACK_DATA *RetNewCallbackData
);
Parameter
[in] Instance
Undurchsichtiger instance Zeiger für den Minifiltertreiber instance, der den E/A-Vorgang initiiert. Dieser Parameter ist erforderlich und darf nicht NULL sein.
[in, optional] FileObject
Dateiobjektzeiger, der im E/A-Vorgang verwendet werden soll. Dieser Parameter ist optional und kann NULL sein.
[out] RetNewCallbackData
Zeiger auf eine vom Aufrufer zugewiesene Variable, die die Adresse der neu zugewiesenen Rückrufdatenstruktur (FLT_CALLBACK_DATA) empfängt.
Rückgabewert
FltAllocateCallbackData gibt STATUS_SUCCESS oder einen entsprechenden NTSTATUS-Wert wie den folgenden zurück:
Rückgabecode | Beschreibung |
---|---|
|
FltAllocateCallbackData ist beim Versuch, die Rückrufdatenstruktur zuzuweisen, einen Poolzuordnungsfehler aufgetreten. Dies ist ein Fehlercode. |
Hinweise
Ein Minifiltertreiber kann FltAllocateCallbackData aufrufen, um eine Rückrufdatenstruktur (FLT_CALLBACK_DATA) für einen vom Minifiltertreiber initiierten E/A-Vorgang zuzuweisen.
Nach dem Initialisieren der Parameter der von FltAllocateCallbackData zurückgegebenen Rückrufdatenstruktur initiiert der Aufrufer den E/A-Vorgang, indem er die Struktur an FltPerformSynchronousIo oder FltPerformAsynchronousIo übergibt. Diese Routinen senden den E/A-Vorgang nur an die Minifiltertreiberinstanzen, die unterhalb der initiierenden instance angefügt sind (im Parameter Instanz angegeben) und an das Dateisystem. Minifiltertreiber, die über den angegebenen instance angefügt sind, empfangen den E/A-Vorgang nicht.
Minifiltertreiber können nur IRP-basierte E/A-Vorgänge initiieren. Sie können keine schnellen E/A- oder FSFilter-Rückrufvorgänge (File System Filter) initiieren.
Minifiltertreiber sollten FltAllocateCallbackData, FltPerformAsynchronousIo und FltPerformSynchronousIo nur für E/A-Vorgänge verwenden, für die Routinen wie die folgenden nicht verwendet werden können:
Wenn die von FltAllocateCallbackData zugewiesene Rückrufdatenstruktur nicht mehr benötigt wird, ist der Aufrufer für die Freigabe durch Aufrufen von FltFreeCallbackData verantwortlich.
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform | Universell |
Header | fltkernel.h (include Fltkernel.h) |
Bibliothek | FltMgr.lib |
IRQL | <= APC_LEVEL |