Partilhar via


Função IoSetPartitionInformationEx (ntddk.h)

Para o disco representado por DeviceObject, a rotina de IoSetPartitionInformationEx inicializa uma entrada de tabela de partição com as informações especificadas na estrutura SET_PARTITION_INFORMATION_EX.

Sintaxe

NTSTATUS IoSetPartitionInformationEx(
  [in] PDEVICE_OBJECT                DeviceObject,
  [in] ULONG                         PartitionNumber,
  [in] _SET_PARTITION_INFORMATION_EX *PartitionInfo
);

Parâmetros

[in] DeviceObject

Ponteiro para o objeto do dispositivo que representa o dispositivo no qual o tipo de partição deve ser definido.

[in] PartitionNumber

Especifica o número de partição no dispositivo cujo tipo de partição deve ser definido.

[in] PartitionInfo

Uma estrutura cujo membro PartitionType especifica o tipo para a partição. Para os valores de PartitionType definidos no momento PARTITION_INFORMATION.

Valor de retorno

Se IoSetPartitionInformationEx retornar STATUS_SUCCESS, o driver de disco atualizará sua noção do tipo de partição para essa partição em sua extensão de dispositivo.

Observações

IoSetPartitionInformationEx só deve ser usado por drivers de disco. Em vez disso, outros drivers devem usar a solicitação de E/S de disco IOCTL_DISK_SET_PARTITION_INFO_EX.

Essa rotina é chamada quando um driver de dispositivo de disco é solicitado a definir informações de partição em uma entrada de tabela de partição por uma solicitação IRP_MJ_DEVICE_CONTROL. Essa solicitação geralmente é emitida pelo utilitário de formato, que executa funções de controle de E/S na partição. O driver passa um ponteiro para o objeto do dispositivo que representa o disco físico e o número da partição associada ao objeto de dispositivo que o utilitário de formato abriu. Como as rotinas HAL que estão subjacentes IoSetPartitionInformationEx foram desenvolvidas antes do suporte para particionamento dinâmico ser implementado, elas não distinguem entre o particionário (que é a ordem de uma partição em um disco) e o número de partição (o número de partição atribuído a uma partição para identificá-la ao sistema). Os drivers devem chamar IoSetPartitionInformationEx usando o número de ordinal da partição e não o número de partição real.

Se a partição for uma partição de tipo MBR (Registro de Inicialização Mestre), IoSetPartitionInformationEx será limitada a definir o estilo de partição e o estilo de partição, que é representado como um caractere sem sinal. Consulte SET_PARTITION_INFORMATION_MBR para obter mais informações sobre esses valores.

Se a partição for uma partição de TABELA de Partição GUID (GPT), IoSetPartitionInformationEx definirá os seguintes valores: o estilo de partição, o tipo de partição, representado por um GUID em vez de um inteiro, como foi o caso das partições MBR; uma ID de partição, também representada por um GUID; um conjunto de atributos (consulte a Interface do Firmware Extensível para obter uma descrição desses atributos); e um nome Unicode para a partição. Consulte SET_PARTITION_INFORMATION_GPT para obter mais informações sobre esses valores.

Essa rotina é síncrona e deve ser chamada pela rotina de Expedição do driver de disco ou por um thread de driver. Portanto, todos os threads do sistema de arquivos e usuário devem estar preparados para inserir um estado de espera ao emitir a solicitação de controle do dispositivo para definir o tipo de partição para o dispositivo.

Essa rotina opera sob a suposição de que o número de partição passado pelo driver de disco realmente existe.

Essa rotina deve ser chamada em IRQL = PASSIVE_LEVEL porque usa um objeto de evento kernel para sincronizar a conclusão de E/S no dispositivo. O evento não pode ser definido como o estado Sinalizado sem enfileirar e executar a rotina de APC do kernel especial do sistema de E/S para conclusão de E/S.

Requisitos

Requisito Valor
da Plataforma de Destino Universal
cabeçalho ntddk.h (inclua Ntddk.h)
biblioteca NtosKrnl.lib
de DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL (seção Ver Comentários)
regras de conformidade de DDI HwStorPortProhibitedDIs(storport), PowerIrpDDis(wdm)

Consulte também

IoReadPartitionTable

IoSetPartitionInformation

IoWritePartitionTable

SET_PARTITION_INFORMATION

SET_PARTITION_INFORMATION_EX