共用方式為


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 結構。

輸出緩衝區長度

I/O 堆棧位置中的 Parameters.DeviceIoControl.OutputBufferLength 表示參數緩衝區的大小,以位元組為單位,其必須是 >= sizeof (DEVICE_INTERNAL_STATUS_DATA)

輸入/輸出緩衝區

n/a

輸入/輸出緩衝區長度

n/a

狀態區塊

Irp->如果要求成功,IoStatus.Status 會設定為 STATUS_SUCCESS。 否則,Status 會設定為適當的錯誤條件做為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