Freigeben über


IOCTL_STORAGE_GET_DEVICE_INTERNAL_LOG IOCTL (ntddstor.h)

Ein Treiber kann IOCTL_STORAGE_GET_DEVICE_INTERNAL_LOG verwenden, um die internen status Daten vom Gerät abzurufen.

Hauptcode

IRP_MJ_INTERNAL_DEVICE_CONTROL

Eingabepuffer

Eine GET_DEVICE_INTERNAL_STATUS_DATA_REQUEST-Struktur , die den Typ der abzufragenden Daten identifiziert.

Eingabepufferlänge

Parameters.DeviceIoControl.InputBufferLength gibt die Größe des Parameterpuffers bei Irp-AssociatedIrp.SystemBuffer> in Bytes an, die = sizeof(GET_DEVICE_INTERNAL_STATUS_DATA_REQUEST)sein muss>.

Ausgabepuffer

Der Treiber gibt die Ausgabe an den Puffer unter Irp-AssociatedIrp.SystemBuffer> zurü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

Länge des Eingabe-/Ausgabepuffers

Statusblock

Irp->IoStatus.Status ist auf STATUS_SUCCESS festgelegt, wenn die Anforderung erfolgreich ist. Andernfalls wird Status auf die entsprechende Fehlerbedingung als NTSTATUS-Code festgelegt. Weitere Informationen finden Sie unter NTSTATUS-Werte.

Hinweise

IOCTL_STORAGE_GET_DEVICE_INTERNAL_LOG gibt das vom Host initiierte Gerätetelemetrieprotokoll von jedem Speichergerät zurück. Der folgende Pseudocode zeigt, wie sie den Telemetriedatenheader anfordern:

// 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
Unterstützte Mindestversion (Client) Windows 10, Version 2004
Kopfzeile ntddstor.h

Weitere Informationen

DEVICE_INTERNAL_STATUS_DATA

GET_DEVICE_INTERNAL_STATUS_DATA_REQUEST