IOCTL_VOLUME_READ_PLEX IOCTL (ntddvol.h)

Executa uma leitura em um plex específico de um volume. Como todos os plexes são idênticos, o gerenciador de volumes pode recuperar dados de qualquer um dos plexes de um volume durante uma operação de leitura normal. O gerenciador de volumes espalha leituras entre as plexes de um volume, para equilibrar a carga de E/S na mídia física e maximizar o desempenho de leitura.

Se, no entanto, um componente do aplicativo ou do modo kernel precisar ler dados de um plex específico em vez de deixar o gerenciador de volumes escolher um, ele poderá usar esse IOCTL para fazer isso.

Código principal

IRP_MJ_DEVICE_CONTROL

Buffer de entrada

O chamador insere a estrutura VOLUME_READ_PLEX_INPUT, contendo o deslocamento lógico, no início do buffer em Irp-AssociatedIrp.SystemBuffer>.

Comprimento do buffer de entrada

Parameters.DeviceIoControl.InputBufferLength no local da pilha de E/S do IRP indica o tamanho, em bytes, do buffer de entrada, que deve ser maior ou igual ao valor de sizeof(VOLUME_READ_PLEX_INPUT).

Buffer de saída

Como IRP_MJ_READ, esse IOCTL armazena os dados de leitura no buffer de memória passados como uma MDL (lista de descritores de memória) no campo Irp-MdlAddress>.

Comprimento do buffer de saída

A duração do buffer.

Bloco de status

Se a operação for bem-sucedida, o gerenciador de volumes definirá o campo Status como STATUS_SUCCESS.

A estrutura VOLUME_READ_PLEX_INPUT em Irp-AssociatedIrp.SystemBuffer> tem um membro Length que deve ser alinhado em um limite de 512 bytes. Se Length não tiver o alinhamento adequado, a operação falhará e o gerenciador de volumes definirá o campo Status como VKE_EINVAL.

Requisitos

Requisito Valor
Cliente mínimo com suporte Disponível a partir do Windows XP.
Cabeçalho ntddvol.h (inclua Ntddvol.h)

Confira também

VOLUME_READ_PLEX_INPUT