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
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) |