Поделиться через


указатель на функцию PFREE_FUNCTION

Устаревший драйвер фильтра файловой системы может зарегистрировать PFREE_FUNCTION типизированной подпрограммы в качестве процедуры обратного вызова FreeCallback фильтра. Файловая система вызывает FreeCallback , когда файловая система удаляет объект контекста файла с помощью FsRtlTeardownPerFileContexts или объект контекста потока с помощью FsRtlTeardownPerStreamContexts.

Процедуру обратного вызова необходимо объявить с помощью типа FREE_FUNCTION . Дополнительные сведения см. в примере в разделе Примечания.

Синтаксис

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

Параметры

Возвращаемое значение

None

Remarks

Когда файловая система удаляет объект контекста для файла, она должна вызвать FsRtlTeardownPerFileContexts. Эта подпрограмма вызывает подпрограммы FreeCallback всех контекстных структур для каждого файла, связанных с файлом. Эта подпрограмма обратного вызова должна освобождать любую память, используемую для объекта FSRTL_PER_FILE_CONTEXT, и все связанные с ней сведения о контексте. Это также относится к контекстам потока, когда вызывается FsRtlTeardownPerStreamContexts и FreeCallback освобождает память, используемую для FSRTL_PER_STREAM_CONTEXT объектов.

Замечания о синхронизации доступа к объектам контекста для каждого файла или к объектам контекста потока во время вызова FreeCallback см. в разделах FsRtlTeardownPerFileContexts и FsRtlTeardownPerStreamContexts.

Примечание

Подпрограмма FreeCallback не может рекурсивно вызывать в файловую систему или получать ресурсы файловой системы.

Чтобы определить функцию обратного вызова FreeCallback с именем MyFreeFunction, необходимо сначала предоставить объявление функции, которое требуется для статического средства проверки драйверов (SDV) и других средств проверки, как показано ниже.

FREE_FUNCTION MyFreeFunction;

Затем реализуйте функцию обратного вызова следующим образом:

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

Требования

Тип требования Требование
Минимальная версия клиента Windows Vista
Заголовок Wdm.h (включая Wdm.h или Ntddk.h)
IRQL <= APC_LEVEL

См. также раздел

FsRtlTeardownPerFileContexts

FsRtlTeardownPerStreamContexts

FSRTL_PER_FILE_CONTEXT

FSRTL_PER_STREAM_CONTEXT

Отслеживание контекста Per-File в устаревшем драйвере фильтра файловой системы

Отслеживание контекста Per-Stream в устаревшем драйвере фильтра файловой системы