Função IoWritePartitionTableEx (ntddk.h)
A rotina IoWritePartitionTableEx grava tabelas de partição das entradas no buffer de lista de partições para cada partição no disco representado pelo objeto de dispositivo fornecido.
Sintaxe
NTSTATUS IoWritePartitionTableEx(
[in] PDEVICE_OBJECT DeviceObject,
_DRIVE_LAYOUT_INFORMATION_EX *DriveLayout
);
Parâmetros
[in] DeviceObject
Ponteiro para o objeto de dispositivo que representa o disco cujas tabelas de partição devem ser gravadas.
DriveLayout
Ponteiro para o buffer de layout da unidade que contém as entradas da lista de partições. Para obter informações mais detalhadas , consulte DRIVE_LAYOUT_INFORMATION_EX.
Retornar valor
IoWritePartitionTableEx retornará um código status de STATUS_SUCCESS se todas as gravações forem concluídas sem erro. Em caso de falha, os códigos de erro retornados por IoWritePartitionTableEx podem incluir, mas não se limitam a, a seguinte lista:
Código de retorno | Descrição |
---|---|
STATUS_DEVICE_NOT_READY | Indica uma falha ao ler a geometria de disco correta. |
STATUS_INSUFFICIENT_RESOURCES | Indica uma falha ao alocar os recursos necessários (por exemplo, memória de heap, IRPs e assim por diante). |
STATUS_UNSUCCESSFUL | Indica que o setor zero não tinha a assinatura de disco MBR esperada. |
Comentários
IoWritePartitionTableEx substitui a rotina obsoleta IoWritePartitionTable. Ao contrário da rotina mais antiga, ela pode gravar em tabelas de partição GUID, bem como tabelas de partição de registro de inicialização mestre.
IoWritePartitionTableEx só deve ser usado por drivers de disco. Em vez disso, outros drivers devem usar a solicitação de E/S do disco IOCTL_DISK_SET_DRIVE_LAYOUT_EX .
Quando um driver de dispositivo de disco recebe uma solicitação IRP_MJ_DEVICE_CONTROL para definir o tipo de partição em uma entrada de tabela de partição ou para reparticionar o disco, ele deve chamar IoWritePartitionTableEx. A solicitação de controle do dispositivo geralmente é emitida pelo utilitário de formato, que executa funções de controle de E/S nas partições e discos no computador.
Para redefinir um tipo de partição, o driver passa um ponteiro para o objeto do dispositivo, representando o disco físico e o número da partição associada ao objeto de dispositivo que o utilitário de formato abriu. Quando um disco deve ser reparticionado dinamicamente, o driver de disco deve derrubar seu conjunto de objetos de dispositivo que representam as partições de disco atuais e criar um novo conjunto de objetos de dispositivo que representam as novas partições no disco.
Para criar ou excluir partições, uma descrição completa do sistema deve ser obtida por uma chamada para IoReadPartitionTableEx. A estrutura de layout da unidade pode ser modificada pelo utilitário de formato do sistema para refletir uma nova configuração do disco.
IoWritePartitionTableEx é síncrono. Ele deve ser chamado pela rotina de Expedição do driver de disco ou por um thread de driver. Portanto, todos os threads do sistema de arquivos e de usuário devem estar preparados para inserir um estado de espera ao emitir a solicitação de controle do dispositivo para redefinir tipos de partição para o dispositivo.
Requisitos
Requisito | Valor |
---|---|
Plataforma de Destino | Universal |
Cabeçalho | ntddk.h (inclua Ntddk.h) |
Biblioteca | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
Regras de conformidade de DDI | HwStorPortProhibitedDIs(storport), PowerIrpDDis(wdm) |