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 |
Voir aussi
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour