Compartir a través de


Función IoWritePartitionTableEx (ntddk.h)

La rutina IoWritePartitionTableEx escribe tablas de particiones de las entradas del búfer de lista de particiones para cada partición del disco representado por el objeto de dispositivo especificado.

Sintaxis

NTSTATUS IoWritePartitionTableEx(
  [in] PDEVICE_OBJECT               DeviceObject,
       _DRIVE_LAYOUT_INFORMATION_EX *DriveLayout
);

Parámetros

[in] DeviceObject

Puntero al objeto de dispositivo que representa el disco cuyas tablas de partición se van a escribir.

DriveLayout

Puntero al búfer de diseño de unidad que contiene las entradas de la lista de particiones. Para obtener información más detallada, consulte DRIVE_LAYOUT_INFORMATION_EX.

Valor devuelto

ioWritePartitionTableEx devuelve un código de estado de STATUS_SUCCESS si todas las escrituras se completaron sin error. En caso de error, los códigos de error devueltos por ioWritePartitionTableEx pueden incluir, pero no están limitados a, la siguiente lista:

Código devuelto Descripción
STATUS_DEVICE_NOT_READY Indica un error que lee la geometría de disco correcta.
STATUS_INSUFFICIENT_RESOURCES Indica un error al asignar los recursos necesarios (por ejemplo, memoria del montón, IRP, etc.).
STATUS_UNSUCCESSFUL Indica que el sector cero no tenía la firma de disco MBR esperada.

Observaciones

IoWritePartitionTableEx reemplaza la rutina obsoleta IoWritePartitionTable. A diferencia de la rutina anterior, puede escribir en tablas de particiones GUID, así como en tablas de particiones de registros de arranque maestro.

ioWritePartitionTableEx solo los controladores de disco deben usar. Otros controladores deben usar la solicitud de E/S de disco IOCTL_DISK_SET_DRIVE_LAYOUT_EX en su lugar.

Cuando un controlador de dispositivo de disco recibe una solicitud de IRP_MJ_DEVICE_CONTROL para establecer el tipo de partición en una entrada de tabla de particiones o para volver a particionar el disco, debe llamar a IoWritePartitionTableEx. Por lo general, la utilidad de formato emite la solicitud de control de dispositivos, que realiza funciones de control de E/S en las particiones y discos de la máquina.

Para restablecer un tipo de partición, el controlador pasa un puntero al objeto de dispositivo, que representa el disco físico y el número de la partición asociada al objeto de dispositivo que la utilidad de formato tiene abierta. Cuando un disco se va a volver a particionar dinámicamente, el controlador de disco debe anular su conjunto de objetos de dispositivo que representan las particiones de disco actuales y crear un nuevo conjunto de objetos de dispositivo que representen las nuevas particiones en el disco.

Para poder crear o eliminar particiones, se debe obtener una descripción completa del sistema mediante una llamada a IoReadPartitionTableEx. La utilidad de formato del sistema puede modificar la estructura de diseño de la unidad para reflejar una nueva configuración del disco.

ioWritePartitionTableEx es sincrónico. Debe llamarlo la rutina de distribución del controlador de disco o un subproceso de controlador. Por lo tanto, todos los subprocesos del sistema de archivos y de usuario deben estar preparados para entrar en un estado de espera al emitir la solicitud de control de dispositivos para restablecer los tipos de partición del dispositivo.

Requisitos

Requisito Valor
de la plataforma de destino de Universal
encabezado de ntddk.h (incluya Ntddk.h)
biblioteca de NtosKrnl.lib
DLL de NtosKrnl.exe
irQL PASSIVE_LEVEL
reglas de cumplimiento de DDI HwStorPortProhibitedDIs(storport), PowerIrpDDis(wdm)

Consulte también

ioCreateDevice

IoReadPartitionTableEx

IoSetPartitionInformationEx