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 с внутренним состоянием устройства.
Длина выходного буфера
Parameters.DeviceIoControl.OutputBufferLength в расположении стека ввода-вывода указывает размер в байтах буфера параметров, который должен быть >= 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 |