IOCTL_STORAGE_GET_DEVICE_INTERNAL_LOG IOCTL (ntddstor.h)

驱动程序可以使用 IOCTL_STORAGE_GET_DEVICE_INTERNAL_LOG 从设备获取内部状态数据。

主要代码

IRP_MJ_INTERNAL_DEVICE_CONTROL

输入缓冲区

标识要查询的数据类型的 GET_DEVICE_INTERNAL_STATUS_DATA_REQUEST 结构。

输入缓冲区长度

Parameters.DeviceIoControl.InputBufferLength 指示参数缓冲区的大小(以字节为单位),Irp->AssociatedIrp.SystemBuffer,>= sizeof(GET_DEVICE_INTERNAL_STATUS_DATA_REQUEST)

输出缓冲区

驱动程序将输出返回到 Irp->AssociatedIrp.SystemBuffer的缓冲区。 此缓冲区包含具有设备内部状态的 DEVICE_INTERNAL_STATUS_DATA 结构。

输出缓冲区长度

参数.DeviceIoControl.OutputBufferLength 在 I/O 堆栈位置指示参数缓冲区的大小(以字节为单位),必须 >= sizeof(DEVICE_INTERNAL_STATUS_DATA)

输入/输出缓冲区

n/a

输入/输出缓冲区长度

n/a

状态块

Irp->IoStatus.Status 设置为STATUS_SUCCESS(如果请求成功)。 否则,状态设置为 NTSTATUS 代码的相应错误条件。 有关详细信息,请参阅 NTSTATUS 值

言论

IOCTL_STORAGE_GET_DEVICE_INTERNAL_LOG从任何存储设备返回主机启动的设备遥测日志。 以下伪代码演示如何请求遥测数据标头:

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

要求

要求 价值
最低支持的客户端 Windows 10 版本 2004
标头 ntddstor.h

另请参阅

DEVICE_INTERNAL_STATUS_DATA

GET_DEVICE_INTERNAL_STATUS_DATA_REQUEST