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) である>必要があります。
入力/出力バッファー
該当なし
入力/出力バッファーの長さ
該当なし
ステータス ブロック
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 |
Header | ntddstor.h |