IOCTL_STORAGE_GET_DEVICE_INTERNAL_LOG IOCTL (ntddstor.h)
Ein Treiber kann IOCTL_STORAGE_GET_DEVICE_INTERNAL_LOG verwenden, um die internen Statusdaten vom Gerät abzurufen.
Hauptcode
IRP_MJ_INTERNAL_DEVICE_CONTROL
Eingabepuffer
Eine GET_DEVICE_INTERNAL_STATUS_DATA_REQUEST Struktur, die den Typ der abzufragten Daten identifiziert.
Eingabepufferlänge
Parameters.DeviceIoControl.InputBufferLength gibt die Größe des Parameterpuffers bei Irp->AssociatedIrp.SystemBuffer-an, die >= sizeof(GET_DEVICE_INTERNAL_STATUS_DATA_REQUEST)sein muss.
Ausgabepuffer
Der Treiber gibt die Ausgabe an den Puffer bei Irp->AssociatedIrp.SystemBufferzurück. Dieser Puffer enthält eine DEVICE_INTERNAL_STATUS_DATA Struktur mit dem internen Status des Geräts.
Länge des Ausgabepuffers
Parameters.DeviceIoControl.OutputBufferLength in der E/A-Stapelposition gibt die Größe des Parameterpuffers in Bytes an, die >= sizeof(DEVICE_INTERNAL_STATUS_DATA)sein muss.
Eingabe-/Ausgabepuffer
n/a
Länge des Eingabe-/Ausgabepuffers
n/a
Statusblock
Irp->IoStatus.Status auf STATUS_SUCCESS festgelegt ist, wenn die Anforderung erfolgreich ist. Andernfalls wird der Status als NTSTATUS-Code auf die entsprechende Fehlerbedingung festgelegt. Weitere Informationen finden Sie unter NTSTATUS Values.
Bemerkungen
IOCTL_STORAGE_GET_DEVICE_INTERNAL_LOG gibt das vom Host initiierte Geräte-Telemetrieprotokoll von jedem Speichergerät zurück. Der folgende Pseudocode zeigt, wie der Telemetriedatenheader angefordert wird:
// Allocate a GET_DEVICE_INTERNAL_STATUS_DATA_REQUEST structure, then
// initialize it with a data header request:
// request.Version = sizeof(GET_DEVICE_INTERNAL_STATUS_DATA_REQUEST);
// request.Size = sizeof(GET_DEVICE_INTERNAL_STATUS_DATA_REQUEST);
// request.RequestDataType = DeviceCurrentInternalStatusDataHeader;
// Allocate a DEVICE_INTERNAL_STATUS_DATA structure in which
// to return the header data, with outputBufferLength set to
// (sizeof(DEVICE_INTERNAL_STATUS_DATA) + 512).
// Get the device internal status data.
BOOL result = TRUE;
ULONG returnedLength = 0;
result = DeviceIoControl(deviceHandle,
IOCTL_STORAGE_GET_DEVICE_INTERNAL_LOG,
&request,
sizeof(GET_DEVICE_INTERNAL_STATUS_DATA_REQUEST),
&outputBuffer,
outputBufferLength,
&returnedLength,
NULL);
Anforderungen
Anforderung | Wert |
---|---|
mindestens unterstützte Client- | Windows 10, Version 2004 |
Header- | ntddstor.h |