smart_GetInfoStruct

ディスクの情報を取得(構造体/配列型)

smart_GetInfoStruct int1, int2, int3, var4, int5

int1	: 操作ハンドル(smart_Init()を実行して取得する)
int2	: ディスク番号(0~)
int3	: 取得したいディスク情報ID(INFO_LISTも参照)
var4	: 情報が格納される変数
int5	: 変数のサイズ

(プラグイン / モジュール : hspsmart.dll)

解説

ディスクの情報を取得します。(構造体/配列型)
ディスク番号は0番から始まり、最大数は smart_GetCount() で取得できます。
取得したいディスク情報ID は以下のものが指定できます。

INFO_IDENTIFYDEVICE		// IDENTIFY_DEVICE 構造体取得
INFO_SMARTREADDATA		// S.M.A.R.T. データ BYTE配列[512] 取得
INFO_SMARTREADTHRESHOLD		// S.M.A.R.T. しきい値データ BYTE配列[512] 取得
INFO_ATTRIBUTE			// SMART_ATTRIBUTE 構造体[30]取得(S.M.A.R.T.値)
INFO_THRESHOLD			// SMART_THRESHOLD 構造体[30]取得(S.M.A.R.T.しきい値)

情報を格納する変数はあらかじめ初期化しておいてください。
必要なサイズは smart_GetInfoStructSize で取得できます。
成功すると、statが0になり、指定した変数に値が格納されます。
変数に格納される値はディスク情報IDによって違います。

戻り値
0  = 成功
-1 = 操作ハンドル無効
-2 = 引数エラー(ディスク番号が範囲外)
-3 = NULLポインタエラー
-4 = バッファ領域不足
-5 = 対応していないID

------------------------------------------------------------
// 構造体情報

	struct IDENTIFY_DEVICE
	{
		WORD		GeneralConfiguration;					//0
		WORD		LogicalCylinders;						//1	Obsolete
		WORD		SpecificConfiguration;					//2
		WORD		LogicalHeads;							//3 Obsolete
		WORD		Retired1[2];							//4-5
		WORD		LogicalSectors;							//6 Obsolete
		DWORD		ReservedForCompactFlash;				//7-8
		WORD		Retired2;								//9
		CHAR		SerialNumber[20];						//10-19
		WORD		Retired3;								//20
		WORD		BufferSize;								//21 Obsolete
		WORD		Obsolute4;								//22
		CHAR		FirmwareRev[8];							//23-26
		CHAR		Model[40];								//27-46
		WORD		MaxNumPerInterupt;						//47
		WORD		Reserved1;								//48
		WORD		Capabilities1;							//49
		WORD		Capabilities2;							//50
		DWORD		Obsolute5;								//51-52
		WORD		Field88and7064;							//53
		WORD		Obsolute6[5];							//54-58
		WORD		MultSectorStuff;						//59
		DWORD		TotalAddressableSectors;				//60-61
		WORD		Obsolute7;								//62
		WORD		MultiWordDma;							//63
		WORD		PioMode;								//64
		WORD		MinMultiwordDmaCycleTime;				//65
		WORD		RecommendedMultiwordDmaCycleTime;		//66
		WORD		MinPioCycleTimewoFlowCtrl;				//67
		WORD		MinPioCycleTimeWithFlowCtrl;			//68
		WORD		Reserved2[6];							//69-74
		WORD		QueueDepth;								//75
		WORD		SerialAtaCapabilities;					//76
		WORD		SerialAtaAdditionalCapabilities;				//77
		WORD		SerialAtaFeaturesSupported;				//78
		WORD		SerialAtaFeaturesEnabled;				//79
		WORD		MajorVersion;							//80
		WORD		MinorVersion;							//81
		WORD		CommandSetSupported1;					//82
		WORD		CommandSetSupported2;					//83
		WORD		CommandSetSupported3;					//84
		WORD		CommandSetEnabled1;						//85
		WORD		CommandSetEnabled2;						//86
		WORD		CommandSetDefault;						//87
		WORD		UltraDmaMode;							//88
		WORD		TimeReqForSecurityErase;				//89
		WORD		TimeReqForEnhancedSecure;				//90
		WORD		CurrentPowerManagement;					//91
		WORD		MasterPasswordRevision;					//92
		WORD		HardwareResetResult;					//93
		WORD		AcoustricManagement;					//94
		WORD		StreamMinRequestSize;					//95
		WORD		StreamingTimeDma;						//96
		WORD		StreamingAccessLatency;					//97
		DWORD		StreamingPerformance;					//98-99
		ULONGLONG	MaxUserLba;								//100-103
		WORD		StremingTimePio;						//104
		WORD		Reserved3;								//105
		WORD		SectorSize;								//106
		WORD		InterSeekDelay;							//107
		WORD		IeeeOui;								//108
		WORD		UniqueId3;								//109
		WORD		UniqueId2;								//110
		WORD		UniqueId1;								//111
		WORD		Reserved4[4];							//112-115
		WORD		Reserved5;								//116
		DWORD		WordsPerLogicalSector;					//117-118
		WORD		Reserved6[8];							//119-126
		WORD		RemovableMediaStatus;					//127
		WORD		SecurityStatus;							//128
		WORD		VendorSpecific[31];						//129-159
		WORD		CfaPowerMode1;							//160
		WORD		ReservedForCompactFlashAssociation[7];	//161-167
		WORD		DeviceNominalFormFactor;				//168
		WORD		DataSetManagement;						//169
		WORD		AdditionalProductIdentifier[4];			//170-173
		WORD		Reserved7[2];							//174-175
		CHAR		CurrentMediaSerialNo[60];				//176-205
		WORD		SctCommandTransport;					//206
		WORD		ReservedForCeAta1[2];					//207-208
		WORD		AlignmentOfLogicalBlocks;				//209
		DWORD		WriteReadVerifySectorCountMode3;		//210-211
		DWORD		WriteReadVerifySectorCountMode2;		//212-213
		WORD		NvCacheCapabilities;					//214
		DWORD		NvCacheSizeLogicalBlocks;				//215-216
		WORD		NominalMediaRotationRate;				//217
		WORD		Reserved8;								//218
		WORD		NvCacheOptions1;						//219
		WORD		NvCacheOptions2;						//220
		WORD		Reserved9;								//221
		WORD		TransportMajorVersionNumber;			//222
		WORD		TransportMinorVersionNumber;			//223
		WORD		ReservedForCeAta2[10];					//224-233
		WORD		MinimumBlocksPerDownloadMicrocode;		//234
		WORD		MaximumBlocksPerDownloadMicrocode;		//235
		WORD		Reserved10[19];							//236-254
		WORD		IntegrityWord;							//255
	};

	typedef	struct SMART_ATTRIBUTE
	{
		BYTE	Id;
		WORD	StatusFlags;
		BYTE	CurrentValue;
		BYTE	WorstValue;
		BYTE	RawValue[6];
		BYTE	Reserved;
	};

	typedef	struct SMART_THRESHOLD
	{
		BYTE	Id;
		BYTE	ThresholdValue;
		BYTE	Reserved[10];
	};
------------------------------------------------------------

サンプル

size = smart_GetInfoStructSize(hSmart, 0, INFO_ATTRIBUTE)
sdim buf, size
smart_GetInfoStruct hSmart, 0, INFO_ATTRIBUTE, buf, size
mes stat

関連項目

smart_GetInfoStructSize構造体/配列型情報の格納に必要なサイズを取得(hspsmart.dll)
INFO_LIST取得可能なディスク情報ID一覧(hspsmart.dll)

情報

プラグイン / モジュールhspsmart.dll
バージョン1.11(CrystalDiskInfo 8.2.3)
作成日2019/08/12
著作者Copyright (C) 2008-2019 hiyohiyo (CrystalDiskInfo作者様)
Copyright (C) 2013-2019 イノビア (hspsmart.dll 作成)
URLhttps://hsp.moe/
https://crystalmark.info/
備考本プラグインはCrystalDiskInfoのソースコードを使用しております。
グループhspsmart.dll
対応環境
  • Windows 版 HSP
移植のヒント64bit版を使用する場合は、
#runtime "hsp3_64"
#include "hspsmart64.as"
を先頭に記述してください。
hs ファイルhsphelp\hspsmart.hs