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。 否則,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 |