estrutura IO_SESSION_STATE_NOTIFICATION (wdm.h)
A estrutura IO_SESSION_STATE_NOTIFICATION contém informações que um driver de modo kernel fornece à rotina IoRegisterContainerNotification quando o driver se registra para receber notificações de eventos de sessão.
Sintaxe
typedef struct _IO_SESSION_STATE_NOTIFICATION {
ULONG Size;
ULONG Flags;
PVOID IoObject;
ULONG EventMask;
PVOID Context;
} IO_SESSION_STATE_NOTIFICATION, *PIO_SESSION_STATE_NOTIFICATION;
Membros
Size
O tamanho, em bytes, da estrutura IO_SESSION_STATE_NOTIFICATION .
Flags
Nenhum sinalizador está definido no momento para esse membro. Defina como zero.
IoObject
Um ponteiro para um objeto de E/S pertencente ao driver. Esse membro pode apontar para uma estrutura DEVICE_OBJECT, DRIVER_OBJECT ou FILE_OBJECT . O objeto de E/S deve permanecer válido durante o tempo de vida do registro. Antes de excluir um objeto de dispositivo registrado, descarregar um driver registrado ou fechar um objeto de arquivo registrado, chame a rotina IoUnregisterContainerNotification para cancelar o registro. Um driver pode manter registros simultâneos para mais de um objeto de E/S, mas não pode criar mais de um registro ativo para o mesmo objeto de E/S.
EventMask
Mascarar bits para eventos de sessão. Esses bits de máscara indicam os eventos para os quais o driver solicita notificações.
Para se registrar para receber notificações de eventos de sessão, um driver de modo kernel chama a rotina IoRegisterContainerNotification . Para especificar os eventos de sessão para os quais o driver deseja receber notificações, o driver define o membro EventMask dessa estrutura como o OR bit a bit de uma ou mais constantes IO_SESSION_STATE_XXX .
Defina esse membro como OR bit a bit de uma ou mais das seguintes constantes IO_SESSION_STATE_XXX :
Context
Um ponteiro para um buffer de contexto no qual o driver pode armazenar seus dados privados para um registro de notificação de sessão específico. O gerenciador de E/S passa esse ponteiro para a rotina de retorno de chamada de notificação do driver (especificada pelo parâmetro CallbackFunction da rotina IoRegisterContainerNotification). O gerenciador de E/S não tenta validar o ponteiro de contexto ou acessar o buffer para o qual ele aponta. Esse membro poderá ser NULL se o driver não exigir um buffer de contexto.
Comentários
Essa estrutura é usada pela rotina IoRegisterContainerNotification . Um driver que chama IoRegisterContainerNotification usa essa estrutura para especificar as notificações de evento de sessão para as quais está se registrando.
Um objeto de dispositivo por sessão representa um dispositivo que só pode ser acessado por uma sessão de usuário específica. Se um driver definir o membro IoObject para apontar para um objeto de dispositivo que é um objeto de dispositivo por sessão, IoRegisterContainerNotification registrará o driver para receber apenas notificações de eventos que ocorrem na sessão representada pelo objeto do dispositivo. Se IoObject apontar para um objeto de dispositivo que não é um objeto de dispositivo por sessão ou se IoObject apontar para um objeto que não é um objeto de dispositivo, IoRegisterContainerNotification registrará o driver para receber notificações de eventos que ocorrem em todas as sessões no computador.
Para determinar se um objeto de dispositivo é um objeto de dispositivo por sessão, um driver pode chamar a rotina IoGetDevicePropertyData para consultar a chave de propriedade DEVPKEY_Device_SessionId no repositório de propriedades do objeto do dispositivo. Se a propriedade DEVPKEY_Device_SessionId existir e o valor da propriedade for definido como um identificador de sessão de Serviços de Terminal diferente de zero, o objeto de dispositivo será um objeto de dispositivo por sessão. Para obter mais informações, consulte DEVPKEY_Device_SessionId.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Com suporte no Windows 7 e versões posteriores do sistema operacional Windows. |
Cabeçalho | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h, Fltkernel.h) |