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に設定されます。 それ以外の場合、状態は 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 |