ponteiro de função PFREE_FUNCTION
Um driver de filtro herdado do sistema de arquivos pode registrar um PFREE_FUNCTION rotina tipada como a rotina de retorno de chamada FreeCallback do filtro. O sistema de arquivos chama FreeCallback quando o sistema de arquivos remove um objeto de contexto de arquivo usando FsRtlTeardownPerFileContexts ou remove um objeto de contexto de fluxo usando FsRtlTeardownPerStreamContexts.
Você deve declarar a rotina de retorno de chamada usando o tipo FREE_FUNCTION . Para obter mais informações, consulte o exemplo na seção Comentários.
Sintaxe
typedef VOID ( *FreeCallback)(
_In_ PVOID Buffer
);
Parâmetros
- Buffer [in]: um ponteiro para o FSRTL_PER_FILE_CONTEXT ou a estrutura FSRTL_PER_STREAM_CONTEXT a ser liberada.
Retornar valor
Nenhum
Comentários
Quando um sistema de arquivos remove o objeto de contexto por arquivo de um arquivo, ele deve chamar FsRtlTeardownPerFileContexts. Essa rotina chama as rotinas freecallback de todas as estruturas de contexto por arquivo associadas ao arquivo. Essa rotina de retorno de chamada deve liberar qualquer memória usada para o objeto FSRTL_PER_FILE_CONTEXT e quaisquer informações de contexto associadas. Esse também é o caso de contextos por fluxo quando FsRtlTeardownPerStreamContexts é chamado e FreeCallback liberará a memória usada para objetos FSRTL_PER_STREAM_CONTEXT .
Para comentários sobre como sincronizar o acesso a objetos de contexto por arquivo ou a objetos de contexto por fluxo durante uma chamada para FreeCallback, consulte FsRtlTeardownPerFileContexts e FsRtlTeardownPerStreamContexts.
Observação
A rotina FreeCallback não pode chamar recursivamente para o sistema de arquivos ou adquirir recursos do sistema de arquivos.
Para definir uma função de retorno de chamada FreeCallback chamada MyFreeFunction, primeiro você deve fornecer uma declaração de função que o SDV ( Verificador de Driver Estático ) e outras ferramentas de verificação exigem, da seguinte maneira:
FREE_FUNCTION MyFreeFunction;
Em seguida, implemente sua função de retorno de chamada da seguinte maneira:
VOID
MyFreeFunction (
__in PVOID Buffer
)
{...}
Requisitos
Tipo de Requisito | Requisito |
---|---|
Cliente mínimo com suporte | Windows Vista |
parâmetro | Wdm.h (inclua Wdm.h ou Ntddk.h) |
IRQL | <= APC_LEVEL |
Confira também
FsRtlTeardownPerStreamContexts
Acompanhamento Per-File contexto em um driver de filtro do sistema de arquivos herdado
Acompanhamento Per-Stream contexto em um driver de filtro do sistema de arquivos herdado