Поделиться через


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

См. также

DEVICE_INTERNAL_STATUS_DATA

GET_DEVICE_INTERNAL_STATUS_DATA_REQUEST