Partager via


IOCTL_STORAGE_GET_DEVICE_INTERNAL_LOG IOCTL (ntddstor.h)

Un pilote peut utiliser IOCTL_STORAGE_GET_DEVICE_INTERNAL_LOG pour obtenir les données d’état interne de l’appareil.

Code principal

IRP_MJ_INTERNAL_DEVICE_CONTROL

Mémoire tampon d’entrée

Structure GET_DEVICE_INTERNAL_STATUS_DATA_REQUEST qui identifie le type de données à interroger.

Longueur de la mémoire tampon d’entrée

Parameters.DeviceIoControl.InputBufferLength indique la taille, en octets, de la mémoire tampon de paramètres à Irp->AssociatedIrp.SystemBuffer, qui doit être >= sizeof(GET_DEVICE_INTERNAL_STATUS_DATA_REQUEST).

Mémoire tampon de sortie

Le pilote retourne la sortie à la mémoire tampon à Irp->AssociatedIrp.SystemBuffer. Cette mémoire tampon contient une structure DEVICE_INTERNAL_STATUS_DATA avec l’état interne de l’appareil.

Longueur de la mémoire tampon de sortie

Parameters.DeviceIoControl.OutputBufferLength dans l’emplacement de la pile d’E/S indique la taille, en octets, de la mémoire tampon de paramètres, qui doit être >= sizeof(DEVICE_INTERNAL_STATUS_DATA).

Mémoire tampon d’entrée/sortie

n/a

Longueur de la mémoire tampon d’entrée/sortie

n/a

Bloc d’état

> IoStatus.Status est défini sur STATUS_SUCCESS si la requête réussit. Sinon, l’état est défini sur la condition d’erreur appropriée en tant que code NTSTATUS. Pour plus d’informations, consultez valeurs NTSTATUS.

Remarques

IOCTL_STORAGE_GET_DEVICE_INTERNAL_LOG retourne le journal de télémétrie de l’appareil initié par l’hôte à partir de n’importe quel appareil de stockage. Le pseudocode suivant montre comment demander l’en-tête de données de télémétrie :

// 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);

Exigences

Exigence Valeur
client minimum pris en charge Windows 10, version 2004
d’en-tête ntddstor.h

Voir aussi

DEVICE_INTERNAL_STATUS_DATA

GET_DEVICE_INTERNAL_STATUS_DATA_REQUEST