PFLT_MESSAGE_NOTIFY funzione di callback (fltkernel.h)
FltMgr chiama il MessageNotifyCallback di un minifilter funzione di callback ogni volta che un'applicazione in modalità utente chiama FilterSendMessage per inviare un messaggio al minifiltro tramite la porta client.
Sintassi
PFLT_MESSAGE_NOTIFY PfltMessageNotify;
NTSTATUS PfltMessageNotify(
PVOID PortCookie,
PVOID InputBuffer,
ULONG InputBufferLength,
PVOID OutputBuffer,
ULONG OutputBufferLength,
PULONG ReturnOutputBufferLength
)
{...}
Parametri
PortCookie
[in] Puntatore a informazioni definite dal minifiltro che identificano in modo univoco questa porta client. Quando è stata creata la porta client, il minifiltro ha restituito questo puntatore di contesto nella routine
InputBuffer
[in] Puntatore a un buffer allocato dal chiamante contenente il messaggio da inviare al minifiltro.
InputBuffer è un puntatore a un buffer in modalità utente non elaborato e sbloccato. Questo puntatore è valido solo nel contesto del processo in modalità utente e deve essere accessibile solo dall'interno di un try/except block.
FltMgr chiama ProbeForRead per convalidare questo puntatore, ma non garantisce che il buffer sia allineato correttamente. Se il buffer contiene strutture con requisiti di allineamento, il minifiltro è responsabile dell'esecuzione di eventuali controlli di allineamento necessari. A tale scopo, il minifiltro può usare la macro IS_ALIGNED come illustrato nella MiniSpy minifiltro di esempio.
Questo parametro è facoltativo e può essere NULL.
InputBufferLength
[in] Dimensioni, in byte, del buffer a cui InputBuffer punta. Questo parametro viene ignorato se InputBuffer è NULL.
OutputBuffer
[out] Puntatore a un buffer allocato dal chiamante che riceve la risposta, se presente, dal minifiltro.
outputBuffer è un puntatore a un buffer in modalità utente non elaborato e sbloccato. Questo puntatore è valido solo nel contesto del processo in modalità utente e deve essere accessibile solo dall'interno di un try/except block.
FltMgr chiama ProbeForWrite per convalidare questo puntatore, ma non garantisce che il buffer sia allineato correttamente. Se il buffer contiene strutture con requisiti di allineamento, il minifiltro è responsabile dell'esecuzione di eventuali controlli di allineamento necessari. A tale scopo, il minifiltro può usare la macro IS_ALIGNED come illustrato nella MiniSpy minifiltro di esempio.
Questo parametro è facoltativo e può essere NULL.
OutputBufferLength
[in] Dimensioni, in byte, del buffer a cui OutputBuffer punta. Questo parametro viene ignorato se OutputBuffer è NULL.
ReturnOutputBufferLength
[out] Puntatore a una variabile allocata dal chiamante che riceve il numero di byte restituiti nel buffer a cui OutputBuffer punta.
Valore restituito
MessageNotifyCallback restituisce STATUS_SUCCESS se l'operazione ha esito positivo. In caso contrario, restituisce un valore NTSTATUS appropriato, ad esempio:
Codice restituito | Significato |
---|---|
STATUS_INSUFFICIENT_RESOURCES | Non sono disponibili risorse sufficienti per completare l'operazione. |
STATUS_INVALID_PARAMETER | Uno o più parametri di input non sono validi. |
Osservazioni
I minifiltri possono implementare facoltativamente MessageNotifyCallback. Se un minifiltro non implementa questo callback, qualsiasi richiesta effettuata dalla modalità utente per inviare dati alla porta riceverà un errore.
Per altre informazioni, vedere Comunicazione tra la modalità utente e i minifiltri.
Fabbisogno
Requisito | Valore |
---|---|
intestazione |
fltkernel.h |
libreria |
FltMgr.lib |
dll | FltMgr.sys |
IRQL | PASSIVE_LEVEL |