Compartilhar via


Função IoSetPartitionInformation (ntddk.h)

A rotina de IoSetPartitionInformation é obsoleta e é fornecida apenas para dar suporte a drivers existentes. Os novos drivers devem usar IoSetPartitionInformationEx .

IoSetPartitionInformation define o tipo de partição e o número em uma entrada de tabela de partição para o disco representado por DeviceObject.

Sintaxe

NTSTATUS IoSetPartitionInformation(
  [in] PDEVICE_OBJECT DeviceObject,
  [in] ULONG          SectorSize,
  [in] ULONG          PartitionNumber,
  [in] ULONG          PartitionType
);

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] SectorSize

Especifica o tamanho, em bytes, de setores no disco.

[in] PartitionNumber

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

[in] PartitionType

Especifica o tipo da partição. Para obter uma lista de alguns dos principais tipos de partição, consulte PARTITION_INFORMATION.

Valor de retorno

Se IoSetPartitionInformation 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

IoSetPartitionInformation 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.

Essa rotina é chamada quando um driver de dispositivo de disco é solicitado a definir o tipo 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 IoSetPartitionInformation foram desenvolvidas antes do suporte ao particionamento dinâmico ser implementado, elas não distinguem entre a ordinal de partição (essa é 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 IoSetPartitionInformation usando o número de ordinal da partição e não o número de partição real.

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), IrqlIoPassive5(wdm), PowerIrpDDis(wdm)

Consulte também

IoReadPartitionTable

IoSetPartitionInformationEx

IoWritePartitionTable