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 |