Compartilhar via


Função KsSetMajorFunctionHandler (ks.h)

A função KsSetMajorFunctionHandler define o manipulador para uma função principal especificada para usar a expedição interna. Ele roteia por um KSDISPATCH_TABLE contido no cabeçalho de objeto opaco para ser o primeiro elemento dentro de uma estrutura apontada por um FsContext dentro de um objeto de arquivo. A expedição pressupõe que a tabela e estrutura de FsContext sejam inicializadas pelo dispositivo usando KsAllocateObjectHeader.

Sintaxe

KSDDKAPI NTSTATUS KsSetMajorFunctionHandler(
  [in] PDRIVER_OBJECT DriverObject,
  [in] ULONG          MajorFunction
);

Parâmetros

[in] DriverObject

Especifica o objeto driver cuja função principal deve ser tratada.

[in] MajorFunction

Especifica o identificador de função principal a ser tratado. Isso define o ponteiro de função principal no objeto driver para uma função interna que, em seguida, é enviada para a função KSDISPATCH_TABLE. Supõe-se que o ponteiro para esta tabela seja o primeiro elemento em uma estrutura apontada por FsContext no objeto de arquivo do IRP específico que está sendo expedido. Os identificadores de função principais válidos estão listados.

Identificador Descrição
IRP_MJ_CREATE Criar IRP. Nesse caso, uma solicitação de criação pode ser usada para criar uma nova instância de um filtro ou para criar algum objeto, como um pino sob um filtro ou um relógio sob um pino. Isso pressupõe que o primeiro elemento na extensão do objeto de driver contenha uma estrutura KSDEVICE_HEADER usada para localizar o tipo de objeto a ser criado, com base no nome passado. Se um objeto de arquivo pai for especificado, o objeto será KSDISPATCH_TABLE. ChildCreateHandlerTable no FsContext é analisado para determinar qual manipulador usar para a criação ou usar a tabela do objeto do dispositivo.
IRP_MJ_CLOSE Feche o IRP.
IRP_MJ_DEVICE_CONTROL IRP de controle de dispositivo.
IRP_MJ_READ Leia IRP.
IRP_MJ_WRITE Gravar IRP.
IRP_MJ_FLUSH_BUFFERS Liberar IRP.
IRP_MJ_QUERY_SECURITY Consultar informações de segurança.
IRP_MJ_SET_SECURITY Defina informações de segurança.
KSDISPATCH_FASTIO Esse sinalizador pode ser adicionado ao identificador MajorFunction para especificar que a entrada se refere à tabela de expedição de E/S rápida, em vez da entrada de função principal típica. Isso é válido apenas com IRP_MJ_READ, IRP_MJ_WRITE ou IRP_MJ_DEVICE_CONTROL. O driver é responsável por criar a tabela DriverObject->FastIoDispatch. Assim como acontece com a expedição normal, se um manipulador for definido para o objeto driver, todos os objetos de arquivo deverão lidar com essa E/S rápida, mesmo que a entrada aponte apenas para DispatchFastIoDeviceControlFailure ou uma função semelhante.

Valor de retorno

Retorna STATUS_SUCCESS se o identificador MajorFunction for válido.

Observações

Se um manipulador de funções principal for definido para um objeto de driver, todos os objetos de arquivo deverão lidar com essa função principal, mesmo que a entrada aponte apenas para KsDispatchInvalidDeviceRequest.

KSDISPATCH_FASTIO

Esse sinalizador pode ser usado para especificar que a entrada de E/S rápida deve ser definida em vez da entrada baseada em IRP.

Requisitos

Requisito Valor
da Plataforma de Destino Universal
cabeçalho ks.h (incluir Ks.h)
biblioteca Ks.lib