Partilhar via


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)

Confira também

IoCreateDevice

IoReadPartitionTableEx

IoSetPartitionInformationEx