Funzione FltGetSwappedBufferMdlAddress (fltkernel.h)
La routine FltGetSwappedBufferMdlAddress restituisce l'indirizzo MDL (Memory Descriptor List) per un buffer scambiato da un driver minifilter.
Sintassi
PMDL FltGetSwappedBufferMdlAddress(
[in] PFLT_CALLBACK_DATA CallbackData
);
Parametri
[in] CallbackData
Puntatore alla struttura dei dati di callback per l'operazione.
Valore restituito
FltGetSwappedBufferMdlAddress restituisce l'indirizzo MDL per il buffer scambiato dal chiamante. fltGetSwappedBufferMdlAddress restituisce NULL nei casi seguenti:
- L'operazione è un'operazione di I/O veloce. In un'operazione di I/O veloce, il buffer non può avere un MDL.
- Il buffer in cui è stato scambiato dal chiamante non dispone di un MDL.
- Il driver minifilter non ha scambiato i buffer nella routine di callback di preoperazione.
Osservazioni
Un driver minifilter che scambia in un nuovo buffer in una routine di callback di preoperazione può ottenere l'indirizzo MDL per il buffer chiamando FltGetSwappedBufferMdlAddress dalla routine di callback postoperation corrispondente.
La routine FltGetSwappedBufferMdlAddress è necessaria perché la routine di callback di postoperazione riceve una struttura di dati di callback che contiene il buffer originale e l'indirizzo MDL, non quelli che sono stati scambiati nella routine di callback di preoperazione del chiamante.
È possibile FltGetSwappedBufferMdlAddress restituire un valore NULL nonNULL MDL anche se il chiamante non ha creato un MDL per il buffer in cui è stato scambiato. Ciò si verifica quando un MDL viene creato per il buffer da un driver minifiltro, un driver di filtro legacy o un driver di file system che si trova sotto il chiamante nello stack di driver minifilter o del driver del file system.
È anche possibile FltGetSwappedBufferMdlAddress restituire un valore NULL nonNULL MDL anche se il chiamante non ha scambiato in un nuovo buffer nella routine di callback preoperazione. Ciò avviene nelle operazioni, ad esempio I/O di paging, in cui il buffer è NULLe il chiamante scambia in un nuovo indirizzo MDL.
Il linguaggio MDL per il buffer in cui è stato scambiato dal chiamante viene automaticamente liberato da Gestione filtri quando la routine di callback di sostituzione restituisce. Per evitare che questo MDL venga liberato, chiamare FltRetainSwappedBufferMdlAddress.
fltGetSwappedBufferMdlAddress può essere chiamato solo da una routine di callback di postoperazione.
Fabbisogno
Requisito | Valore |
---|---|
piattaforma di destinazione | Universale |
intestazione | fltkernel.h (include Fltkernel.h) |
libreria | FltMgr.lib |
dll | Fltmgr.sys |
IRQL | Qualsiasi livello |