Freigeben über


IOCTL_DISK_GET_DRIVE_GEOMETRY_EX IOCTL (ntdddisk.h)

Gibt Informationen zur Geometrie des physischen Datenträgers zurück (Medientyp, Anzahl der Zylinder, Spuren pro Zylinder, Sektoren pro Spur und Bytes pro Sektor).

Der Unterschied zwischen IOCTL_DISK_GET_DRIVE_GEOMETRY_EX und der älteren IOCTL_DISK_GET_DRIVE_GEOMETRY Anforderung besteht darin, dass IOCTL_DISK_GET_DRIVE_GEOMETRY_EX Informationen sowohl aus dem Master Boot Record (MBR) als auch aus dem partitionierten GUID-Partitionstabelle (GPT)-Typ abrufen können, während IOCTL_DISK_GET_DRIVE_GEOMETRY nur MBR-Medien lesen können.

Hauptcode

IRP_MJ_DEVICE_CONTROL

Eingabepuffer

Nichts.

Eingabepufferlänge

Nichts.

Ausgabepuffer

Der Treiber gibt die DISK_GEOMETRY_EX Daten im Puffer bei Irp->AssociatedIrp.SystemBufferzurück. Die Größe des Ausgabepuffers entspricht möglicherweise nicht der Größe des Eingabepuffers.

Länge des Ausgabepuffers

Parameters.DeviceIoControl.OutputBufferLength an der I/O-Stapelposition des IRP gibt die Größe in Bytes an, des Puffers, der mindestens (Größe von(DISK_GEOMETRY) + Größe der(LARGE_INTEGER) sein muss )) und bis zu (Größe von(DISK_GEOMETRY) + Größe(LARGE_INTEGER) + Größe von(DISK_PARTITION_INFO) + Größe des(DISK_DETECTION_INFO)).

Statusblock

Das Feld Information wird auf die Größe der zurückgegebenen Daten in Bytes festgelegt.

Das feld Status gibt einen der folgenden Werte zurück:

  • STATUS_SUCCESS
  • STATUS_UNRECOGNIZED_MEDIA
  • STATUS_INVALID_PARAMETER
  • STATUS_INVALID_DEVICE_REQUEST
  • STATUS_INFO_LENGTH_MISMATCH
  • STATUS_INSUFFICIENT_RESOURCES
  • STATUS_BUFFER_TOO_SMALL

Bemerkungen

Nur Aufrufer über Partmgr.sys können diese IOCTL aufrufen, da sie Datenträgerpartitionsinformationen enthält.

Diese IOCTL verwendet IOCTL_DISK_GET_DRIVE_GEOMETRY, um die DISK_GEOMETRY Struktur abzurufen und IOCTL_DISK_GET_LENGTH_INFO, um die GET_LENGTH_INFORMATION Struktur zu erhalten. Beide IOCTL-Versionen werden für die Verwendung auf disk.sys-Ebene unterstützt.

Anforderungen

Anforderung Wert
Header- ntdddisk.h (include Ntdddisk.h)