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 |