Partilhar 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 meio de 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 a estrutura 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 de driver cuja função principal deve ser manipulada.

[in] MajorFunction

Especifica o identificador de função principal a ser manipulado. Isso define o ponteiro de função principal no objeto de driver para uma função interna que, em seguida, envia para a função KSDISPATCH_TABLE . O ponteiro para essa tabela é considerado 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 são listados.

Identificador Descrição
IRP_MJ_CREATE Create IRP. Nessa instância, 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 contém 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 Escrever IRP.
IRP_MJ_FLUSH_BUFFERS Liberar IRP.
IRP_MJ_QUERY_SECURITY Consultar informações de segurança.
IRP_MJ_SET_SECURITY Definir 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 de driver, todos os objetos de arquivo deverão manipular essa E/S rápida, mesmo que a entrada aponte apenas para DispatchFastIoDeviceControlFailure ou uma função semelhante.

Retornar valor

Retorna STATUS_SUCCESS se o identificador MajorFunction for válido.

Comentários

Se um manipulador de funções principal for definido para um objeto de driver, todos os objetos de arquivo deverão manipular 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
Plataforma de Destino Universal
Cabeçalho ks.h (inclua Ks.h)
Biblioteca Ks.lib