Função KsDisableEvent (ks.h)
A função KsDisableEvent desabilita os eventos solicitados por meio de IOCTL_KS_DISABLE_EVENT. Ele responde a todos os eventos habilitados anteriormente por meio de KsEnableEvent. Se o comprimento do buffer de entrada for zero, supõe-se que todos os eventos na lista devem ser desabilitados. Essa função só pode ser chamada em PASSIVE_LEVEL.
Sintaxe
KSDDKAPI NTSTATUS KsDisableEvent(
[in] PIRP Irp,
[in, out] PLIST_ENTRY EventsList,
[in] KSEVENTS_LOCKTYPE EventsFlags,
[in] PVOID EventsLock
);
Parâmetros
[in] Irp
Especifica o IRP passado para a função de remoção, que usa o IRP para obter informações de contexto. O objeto de arquivo associado ao IRP é usado para comparar com o objeto de arquivo especificado originalmente ao habilitar o evento. Isso permite que uma única lista de eventos seja usada para vários clientes diferenciados por objetos de arquivo.
[in, out] EventsList
Aponta para o cabeçalho da lista de KSEVENT_ENTRY itens nos quais o evento pode ser encontrado. Se um cliente usa várias listas de eventos e não sabe em qual lista esse evento está, o cliente pode chamar essa função várias vezes. Um evento não encontrado retornará STATUS_UNSUCCESSFUL.
[in] EventsFlags
Especifica um sinalizador KSEVENTS_LOCKTYPE especificando o tipo de bloqueio de exclusão a ser usado no acesso à lista de eventos. Se nenhum sinalizador estiver definido, nenhum bloqueio será tomado.
[in] EventsLock
Usado para sincronizar o acesso a um elemento na lista. Depois que o elemento tiver sido acessado, ele será marcado como sendo excluído para que as solicitações de remoção subsequentes falhem. O bloqueio é liberado depois de chamar a função de remoção, se houver. A função de remoção deve ser sincronizada com a geração de eventos antes de realmente remover o elemento da lista.
Retornar valor
A função KsDisableEvent retorna STATUS_SUCCESS se tiver êxito ou um erro específico para o evento que está sendo habilitado. A função sempre define o IO_STATUS_BLOCK. Campo de informações do PIRP. Elemento IoStatus dentro do IRP para zero. Ele não define o IO_STATUS_BLOCK. Campo status, nem conclui o IRP.
Comentários
É importante que o manipulador de remoção sincronize com a geração de eventos para garantir que, quando o evento for removido da lista, ele não esteja sendo atendido no momento. Presume-se que o acesso a essa lista seja controlado com o bloqueio passado.
Requisitos
Requisito | Valor |
---|---|
Plataforma de Destino | Universal |
Cabeçalho | ks.h (inclua Ks.h) |
Biblioteca | Ks.lib |