Compartilhar via


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 :

Valor Significado
IO_SESSION_STATE_ALL_EVENTS
0xffffffff
Enviar notificações de todos os eventos de sessão.
IO_SESSION_STATE_CREATION_EVENT
0x00000001
Envie uma notificação quando a sessão do usuário for criada.
IO_SESSION_STATE_TERMINATION_EVENT
0x00000002
Envie uma notificação quando a sessão do usuário terminar.
IO_SESSION_STATE_CONNECT_EVENT
0x00000004
Envie uma notificação quando a sessão do usuário estiver conectada.
IO_SESSION_STATE_DISCONNECT_EVENT
0x00000008
Envie uma notificação quando a sessão do usuário estiver desconectada.
IO_SESSION_STATE_LOGON_EVENT
0x00000010
Envie uma notificação quando o usuário fizer logon na sessão.
IO_SESSION_STATE_LOGOFF_EVENT
0x00000020
Envie uma notificação quando o usuário fizer logoff da sessão.
IO_SESSION_STATE_VALID_EVENT_MASK
0x0000003f
Envie uma notificação quando qualquer tipo de evento de sessão ocorrer.

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)

Confira também

DEVICE_OBJECT

DEVPKEY_Device_SessionId

DRIVER_OBJECT

FILE_OBJECT

IoGetDevicePropertyData

IoRegisterContainerNotification