Freigeben über


PFREE_FUNCTION Funktionszeiger

Ein Dateisystem-Legacyfiltertreiber kann eine PFREE_FUNCTION typisierte Routine als FreeCallback-Rückrufroutine des Filters registrieren. Das Dateisystem ruft FreeCallback auf, wenn das Dateisystem ein Dateikontextobjekt mithilfe von FsRtlTeardownPerFileContexts entfernt oder ein Streamkontextobjekt mithilfe von FsRtlTeardownPerStreamContexts entfernt.

Sie müssen die Rückrufroutine mit dem typ FREE_FUNCTION deklarieren. Weitere Informationen finden Sie im Beispiel im Abschnitt Hinweise.

Syntax

typedef VOID ( *FreeCallback)(
  _In_ PVOID Buffer
);

Parameter

Rückgabewert

Keine

Bemerkungen

Wenn ein Dateisystem das Dateikontextobjekt für eine Datei löscht, muss es FsRtlTeardownPerFileContexts aufrufen. Diese Routine ruft die FreeCallback-Routinen aller dateispezifischen Kontextstrukturen auf, die der Datei zugeordnet sind. Diese Rückrufroutine muss den für das FSRTL_PER_FILE_CONTEXT-Objekt verwendeten Arbeitsspeicher und alle zugehörigen Kontextinformationen freigeben. Dies gilt auch für Pro-Stream-Kontexte, wenn FsRtlTeardownPerStreamContexts aufgerufen wird und FreeCallback arbeitsspeicher freigibt , der für FSRTL_PER_STREAM_CONTEXT-Objekte verwendet wird.

Hinweise zum Synchronisieren des Zugriffs auf Dateikontextobjekte oder Pro-Stream-Kontextobjekte während eines Aufrufs von FreeCallback finden Sie unter FsRtlTeardownPerFileContexts und FsRtlTeardownPerStreamContexts.

Hinweis

Die FreeCallback-Routine kann nicht rekursiv in das Dateisystem aufrufen oder Dateisystemressourcen abrufen.

Um eine FreeCallback-Rückruffunktion namens MyFreeFunction zu definieren, müssen Sie zunächst eine Funktionsdeklaration bereitstellen, die die Static Driver Verifier (SDV) und andere Überprüfungstools wie folgt benötigen:

FREE_FUNCTION MyFreeFunction;

Implementieren Sie dann Ihre Rückruffunktion wie folgt:

VOID
 MyFreeFunction (
 __in PVOID Buffer
    )
  {...}

Anforderungen

Anforderungstyp Anforderung
Unterstützte Mindestversion (Client) Windows Vista
Header Wdm.h (Einschließen von Wdm.h oder Ntddk.h)
IRQL <= APC_LEVEL

Weitere Informationen

FsRtlTeardownPerFileContexts

FsRtlTeardownPerStreamContexts

FSRTL_PER_FILE_CONTEXT

FSRTL_PER_STREAM_CONTEXT

Nachverfolgen Per-File Kontexts in einem Legacy-Dateisystemfiltertreiber

Nachverfolgen Per-Stream Kontexts in einem Legacy-Dateisystemfiltertreiber