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 |