Compartilhar via


EVT_WDF_IO_QUEUE_IO_INTERNAL_DEVICE_CONTROL função de retorno de chamada (wdfio.h)

[Aplica-se a KMDF e UMDF]

A função de retorno de chamada de evento EvtIoInternalDeviceControl de um driver processa uma solicitação de E/S que contém um código de controle de E/S do dispositivo interno (IOCTL).

Sintaxe

EVT_WDF_IO_QUEUE_IO_INTERNAL_DEVICE_CONTROL EvtWdfIoQueueIoInternalDeviceControl;

VOID EvtWdfIoQueueIoInternalDeviceControl(
  [in] WDFQUEUE Queue,
  [in] WDFREQUEST Request,
  [in] size_t OutputBufferLength,
  [in] size_t InputBufferLength,
  [in] ULONG IoControlCode
)
{...}

Parâmetros

[in] Queue

Um identificador para o objeto de fila da estrutura associado à solicitação de E/S.

[in] Request

Um identificador para um objeto de solicitação de estrutura.

[in] OutputBufferLength

O comprimento, em bytes, do buffer de saída da solicitação, se um buffer de saída estiver disponível.

[in] InputBufferLength

O comprimento, em bytes, do buffer de entrada da solicitação, se um buffer de entrada estiver disponível.

[in] IoControlCode

O IOCTL definido pelo driver ou definido pelo sistema associado à solicitação.

Valor de retorno

Nenhum

Observações

Um driver registra uma função de retorno de chamada EvtIoInternalDeviceControl quando chama o método WdfIoQueueCreate. Para obter mais informações sobre como chamar WdfIoQueueCreate, consulte Criando filas de E/S.

Se um driver tiver registrado uma função de retorno de chamada EvtIoInternalDeviceControl para a fila de E/S de um dispositivo, a função de retorno de chamada receberá todas as solicitações internas de controle de E/S (IRP_MJ_INTERNAL_DEVICE_CONTROL) da fila. Para obter mais informações, consulte Manipuladores de Solicitações.

A função de retorno de chamada EvtIoInternalDeviceControl deve processar cada solicitação de E/S recebida de alguma maneira. Para obter mais informações, consulte processamento de solicitações de E/S.

Os drivers recebem solicitações de controle de E/S internas quando outro driver cria uma solicitação chamando WdfIoTargetSendInternalIoctlSynchronously ou WdfIoTargetFormatRequestForInternalIoctl.

O tipo de operação a ser executada depende do valor do parâmetro IoControlCode. Você deve determinar o conjunto de IoControlCode valores que aplicativos e outros drivers podem enviar para o driver. Para obter mais informações sobre IOCTLs, consulte Usando códigos de controle de E/S.

A maioria das operações de controle de E/S internas exige um buffer de entrada, um buffer de saída ou ambos. Para obter informações sobre como o driver pode acessar os buffers de uma solicitação, consulte Acessando buffers de dados em Framework-Based Drivers.

As técnicas que o driver pode usar para acessar os buffers de entrada e saída da solicitação (se existirem) dependem do campo TransferType do IOCTL. O valor do campo TransferType do IOCTL pode ser METHOD_BUFFERED, METHOD_DIRECT_IN, METHOD_DIRECT_OUT ou METHOD_NEITHER. Para obter mais informações sobre o campo TransferType, consulte Definindo códigos de controle de E/S.

A função de retorno de chamada EvtIoInternalDeviceControl de pode ser chamada em IRQL <= DISPATCH_LEVEL, a menos que o membro ExecutionLevel do dispositivo ou da estrutura de WDF_OBJECT_ATTRIBUTES do driver esteja definido como WdfExecutionLevelPassive. (Se o driver estiver na parte superior da pilha de driver, a função de retorno de chamada será chamada em IRQL = PASSIVE_LEVEL.)

Se o IRQL for PASSIVE_LEVEL, a estrutura chamará a função de retorno de chamada em uma região crítica .

Para obter mais informações sobre os níveis de IRQL para manipuladores de solicitação, consulte Usandode Sincronização Automática.

A função de retorno de chamada EvtIoInternalDeviceControl de um driver não deve chamar os seguintes métodos de objeto de fila:

WdfIoQueueDrainSynchronously
WdfIoQueuePurgeSynchronously
WdfIoQueueStopSynchronously

Requisitos

Requisito Valor
da Plataforma de Destino Universal
versão mínima do KMDF 1.0
versão mínima do UMDF 2.0
cabeçalho wdfio.h (inclua Wdf.h)
IRQL <= DISPATCH_LEVEL (consulte a seção Comentários)

Consulte também

EvtIoDeviceControl

WDF_OBJECT_ATTRIBUTES

WdfIoQueueCreate

WdfIoTargetFormatRequestForInternalIoctl

WdfIoTargetSendInternalIoctlSynchronously