IOCTL_STORAGE_GET_DEVICE_INTERNAL_LOG IOCTL (ntddstor.h)
Un pilote peut utiliser IOCTL_STORAGE_GET_DEVICE_INTERNAL_LOG pour obtenir les données status internes 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ètre sur 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 à l’adresse Irp-AssociatedIrp.SystemBuffer>. Cette mémoire tampon contient une structure DEVICE_INTERNAL_STATUS_DATA avec les status internes 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 des 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
Irp->IoStatus.Status est défini sur STATUS_SUCCESS si la demande réussit. Sinon, Status 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);
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows 10, version 2004 |
En-tête | ntddstor.h |