IO_SESSION_NOTIFICATION_FUNCTION funzione di callback (wdm.h)
Il tipo di funzione IO_SESSION_NOTIFICATION_FUNCTION definisce una routine di callback tramite cui un driver riceve notifiche di modifiche nello stato delle sessioni utente interessate dal driver.
Sintassi
IO_SESSION_NOTIFICATION_FUNCTION IoSessionNotificationFunction;
NTSTATUS IoSessionNotificationFunction(
[in] PVOID SessionObject,
[in] PVOID IoObject,
[in] ULONG Event,
[in] PVOID Context,
[in] PVOID NotificationPayload,
[in] ULONG PayloadLength
)
{...}
Parametri
[in] SessionObject
Puntatore a un oggetto di sistema opaco che contiene informazioni sulla sessione utente. Il driver può passare questo valore puntatore alla routine IoGetContainerInformation come valore del parametro ContainerObject .
[in] IoObject
Puntatore a un oggetto I/O di proprietà del driver. Questo parametro è il puntatore a oggetti I/O fornito dal driver alla routine IoRegisterContainerNotification quando il driver precedentemente registrato per ricevere notifiche degli eventi di sessione. Il parametro IoRegisterContainerNotification della routine NotificationInformation punta a una struttura IO_SESSION_STATE_NOTIFICATION il cui membro IoObject punta all'oggetto I/O.
[in] Event
Costante di enumerazione IO_SESSION_EVENT che indica l'evento di sessione che ha causato il callback della notifica.
[in] Context
Valore di contesto fornito in precedenza al driver alla routine IoRegisterContainerNotification quando il driver registrato per ricevere notifiche degli eventi di sessione. Nella chiamata IoRegisterContainerNotification il driver ha fornito un puntatore a una struttura IO_SESSION_STATE_NOTIFICATION il cui membro Context contiene il valore di contesto.
[in] NotificationPayload
Puntatore a un buffer del payload che contiene una struttura IO_SESSION_CONNECT_INFO .
[in] PayloadLength
Dimensioni, in byte, del buffer a cui fa riferimento NotificationPayload. Le dimensioni del buffer non devono mai superare il valore costante IO_SESSION_MAX_PAYLOAD_SIZE, definito nel file di intestazione Wdm.h.
Valore restituito
Se la routine ha esito positivo, deve restituire STATUS_SUCCESS. In caso contrario, deve restituire uno dei valori di stato dell'errore definiti nel file di intestazione Ntstatus.h.
Commenti
Un driver in modalità kernel implementa questa routine. Il gestore di I/O chiama questa routine per inviare una notifica al driver di eventi di sessione.
Per ricevere notifiche degli eventi di sessione, un driver chiama la routine IoRegisterContainerNotification e imposta il parametro CallbackFunction della routine per puntare alla routine IO_SESSION_NOTIFICATION_FUNCTION del driver. L'oggetto I/O che il driver passa a IoRegisterContainerNotification determina se il driver riceverà notifiche di eventi in una determinata sessione utente o di eventi in tutte le sessioni. Per altre informazioni, vedere IO_SESSION_STATE_NOTIFICATION.
Esempio
Per definire una routine di notifica di I/O-session, è prima necessario specificare una dichiarazione di funzione che identifica il tipo di routine di callback che si sta definendo. Windows fornisce un set di tipi di funzione di callback per i driver. La dichiarazione di una funzione usando i tipi di funzione callback consente l'analisi del codice per i driver, il verifica driver statico (SDV) e altri strumenti di verifica trovano errori ed è un requisito per la scrittura di driver per il sistema operativo Windows.
Ad esempio, per definire una routine di notifica di I/O-session denominata MyIoSessionNotification
, usare il tipo di IO_SESSION_NOTIFICATION_FUNCTION, come illustrato in questo esempio di codice:
IO_SESSION_NOTIFICATION_FUNCTION MyIoSessionNotification;
Implementare quindi la routine di callback come indicato di seguito:
_Use_decl_annotations_
NTSTATUS
MyIoSessionNotification(
PVOID SessionObject,
PVOID IoObject,
ULONG Event,
PVOID Context,
PVOID NotificationPayload,
ULONG PayloadLength
)
{
// Function body
}
Il tipo di funzione IO_SESSION_NOTIFICATION_FUNCTION è definito nel file di intestazione Wdm.h. Per identificare in modo più accurato gli errori quando si eseguono gli strumenti di analisi del codice, assicurarsi di aggiungere l'annotazione _Use_decl_annotations_
alla definizione della funzione. L'annotazione _Use_decl_annotations_
garantisce che vengano usate le annotazioni applicate al tipo di funzione IO_SESSION_NOTIFICATION_FUNCTION nel file di intestazione. Per altre informazioni sui requisiti per le dichiarazioni di funzione, vedere Dichiarazione di funzioni tramite tipi di ruolo per i driver WDM. Per informazioni su _Use_decl_annotations_
, vedere Annotazione del comportamento della funzione.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Supportato in Windows 7 e versioni successive del sistema operativo Windows. |
Piattaforma di destinazione | Desktop |
Intestazione | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h, Fltkernel.h) |
IRQL | Chiamato in IRQL <= APC_LEVEL. |