указатель на функцию PFREE_FUNCTION
Устаревший драйвер фильтра файловой системы может зарегистрировать PFREE_FUNCTION типизированной подпрограммы в качестве процедуры обратного вызова FreeCallback фильтра. Файловая система вызывает FreeCallback , когда файловая система удаляет объект контекста файла с помощью FsRtlTeardownPerFileContexts или объект контекста потока с помощью FsRtlTeardownPerStreamContexts.
Процедуру обратного вызова необходимо объявить с помощью типа FREE_FUNCTION . Дополнительные сведения см. в примере в разделе Примечания.
Синтаксис
typedef VOID ( *FreeCallback)(
_In_ PVOID Buffer
);
Параметры
- Buffer [in]: указатель на FSRTL_PER_FILE_CONTEXT или структуру FSRTL_PER_STREAM_CONTEXT для освобождения.
Возвращаемое значение
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 |
См. также раздел
FsRtlTeardownPerStreamContexts
Отслеживание контекста Per-File в устаревшем драйвере фильтра файловой системы
Отслеживание контекста Per-Stream в устаревшем драйвере фильтра файловой системы