estrutura IO_SESSION_STATE_NOTIFICATION (wdm.h)
A estrutura IO_SESSION_STATE_NOTIFICATION contém informações que um driver no modo kernel fornece à rotina IoRegisterContainerNotification do 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 este membro. Definido como zero.
IoObject
Um ponteiro para um objeto de E/S de propriedade do driver. Esse membro pode apontar para uma estrutura DEVICE_OBJECT, DRIVER_OBJECTou 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 o IoUnregisterContainerNotification rotina 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 no modo kernel chama a rotina de 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 para o OR bit a bit de uma ou mais IO_SESSION_STATE_constantes de XXX.
Defina esse membro como OR bit a bit de uma ou mais das seguintes constantes deXXX IO_SESSION_STATE_:
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 gerente de E/S passa esse ponteiro para a rotina de retorno de chamada de notificação do driver (especificada pelo parâmetro IoRegisterContainerNotification rotina callbackFunction). O gerenciador de E/S não tenta validar o ponteiro Context ou acessar o buffer ao qual ele aponta. Esse membro poderá ser NULL se o driver não exigir um buffer de contexto.
Observações
Essa estrutura é usada pela rotina de IoRegisterContainerNotification. Um driver que chama IoRegisterContainerNotification usa essa estrutura para especificar as notificações de evento de sessão para as quais ele 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 seja 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 terminal services não zero, o objeto do dispositivo será um objeto de dispositivo por sessão. Para obter mais informações, consulte DEVPKEY_Device_SessionId.
Requisitos
Requisito | Valor |
---|---|
de cliente com suporte mínimo | 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) |