Función IoSetPartitionInformation (ntddk.h)
La rutina IoSetPartitionInformation está obsoleta y solo se proporciona para admitir controladores existentes. Los nuevos controladores deben usar IoSetPartitionInformationEx.
IoSetPartitionInformation establece el tipo de partición y el número de una entrada de tabla de particiones para el disco representado por DeviceObject.
Sintaxis
NTSTATUS IoSetPartitionInformation(
[in] PDEVICE_OBJECT DeviceObject,
[in] ULONG SectorSize,
[in] ULONG PartitionNumber,
[in] ULONG PartitionType
);
Parámetros
[in] DeviceObject
Puntero al objeto de dispositivo que representa el dispositivo en el que se va a establecer el tipo de partición.
[in] SectorSize
Especifica el tamaño, en bytes, de sectores del disco.
[in] PartitionNumber
Especifica el número de partición en el dispositivo cuyo tipo de partición se va a establecer.
[in] PartitionType
Especifica el tipo de la partición. Para obtener una lista de algunos de los tipos de partición de clave, consulte PARTITION_INFORMATION.
Valor devuelto
Si IoSetPartitionInformation devuelve STATUS_SUCCESS, el controlador de disco actualiza su noción del tipo de partición para esta partición en su extensión de dispositivo.
Comentarios
Los controladores de disco solo deben usar IoSetPartitionInformation. Otros controladores deben usar la solicitud de E/S de disco IOCTL_DISK_SET_PARTITION_INFO en su lugar.
Se llama a esta rutina cuando se pide a un controlador de dispositivo de disco que establezca el tipo de partición en una entrada de tabla de particiones mediante una solicitud de IRP_MJ_DEVICE_CONTROL. Esta solicitud se emite generalmente por la utilidad de formato, que realiza funciones de control de E/S en la 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. Dado que las rutinas HAL que subyacen a IoSetPartitionInformation se desarrollaron antes de implementar la compatibilidad con la creación de particiones dinámicas, no distinguen entre el ordinal de partición (es decir, el orden de una partición en un disco) y el número de partición (el número de partición asignado a una partición para identificarlo en el sistema). Los controladores deben llamar a IoSetPartitionInformation mediante el número ordinal de la partición y no el número de partición real.
Esta rutina es sincrónica y debe ser llamada por la rutina dispatch del controlador de disco o por 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 dispositivo para establecer el tipo de partición para el dispositivo.
Esta rutina funciona bajo la suposición de que el número de partición pasado por el controlador de disco existe realmente.
Se debe llamar a esta rutina en IRQL = PASSIVE_LEVEL porque usa un objeto de evento de kernel para sincronizar la finalización de E/S en el dispositivo. El evento no se puede establecer en el estado Signaled sin poner en cola ni ejecutar la rutina de APC especial del kernel del sistema de E/S para la finalización de E/S.
Requisitos
Requisito | Value |
---|---|
Plataforma de destino | Universal |
Encabezado | ntddk.h (incluya Ntddk.h) |
Library | NtosKrnl.lib |
Archivo DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL (consulte la sección Comentarios) |
Reglas de cumplimiento de DDI | HwStorPortProhibitedDDIs(storport), IrqlIoPassive5(wdm), PowerIrpDDis(wdm) |