DELPHI利WMI获得硬盘参数
DELPHI利WMI獲得硬盤參數(shù)
procedure TFrmMain.RzGroup1Items5Click(Sender: TObject); varWmi, Objs, Obj: oleVariant;Enum: IEnumVariant;C: Cardinal;Str,str1:string; beginMemo1.Clear;Memo1.Lines.Add('【磁盤參數(shù)信息】');Wmi:= CreateOleObject('WbemScripting.SWbemLocator');Objs := Wmi.ConnectServer('.','root/cimv2').ExecQuery('Select * from Win32_DiskDrive');Enum := IEnumVariant(IUnknown(Objs._NewEnum));Enum.Reset;while (Enum.Next(1,Obj,C)=s_ok) dobeginstr1:='Index';Obj := Obj.Properties_.Item(str1, 0).Value;if VarIsNull(obj) thenbeginStr:='ERROR';end;if VarIsArray(obj) thenbeginstr:=Obj[0];end;if VarIsStr(obj) or VarIsCustom(obj) or VarIsFloat(obj) or VarIsNumeric(obj) or VarIsOrdinal(obj) thenbeginstr:=Obj;end;Memo1.Lines.Add('');Memo1.Lines.Add('磁盤序號(hào): '+Str);Memo1.Lines.Add('接口類型: '+GetWMISub('DiskDrive','InterfaceType',str1,Str));Memo1.Lines.Add('磁盤名稱: '+GetWMISub('DiskDrive','Caption',str1,Str));Memo1.Lines.Add('磁盤序列號(hào): '+GetWMISub('DiskDrive','SerialNumber',str1,Str));Memo1.Lines.Add('磁盤大小: '+FormatFloat('0',StrToFloat(GetWMISub('DiskDrive','Size',str1,Str))/1000/1000/1000)+' GB');Memo1.Lines.Add('磁盤分區(qū)數(shù): '+GetWMISub('DiskDrive','Partitions',str1,Str));Memo1.Lines.Add('柱面總數(shù): '+GetWMISub('DiskDrive','TotalCylinders',str1,Str));Memo1.Lines.Add('磁頭總數(shù): '+GetWMISub('DiskDrive','TotalHeads',str1,Str));Memo1.Lines.Add('扇區(qū)總數(shù): '+GetWMISub('DiskDrive','TotalTracks',str1,Str));Memo1.Lines.Add('曲目總數(shù): '+GetWMISub('DiskDrive','TotalCylinders',str1,Str));end; end;公共函數(shù)
function GetWMISub(WMIType,WMIProperty,WMISearch,WMISearchText:String):String; varWmi, Objs, Obj: oleVariant;Enum: IEnumVariant;C: Cardinal; beginWmi:= CreateOleObject('WbemScripting.SWbemLocator');Objs := Wmi.ConnectServer('.','root/cimv2').ExecQuery('Select * from Win32_' + WMIType + ' where '+WMISearch+' = '+ '"'+WMISearchText+'"');Enum := IEnumVariant(IUnknown(Objs._NewEnum));Enum.Reset;Enum.Next(1,Obj,C);Obj := Obj.Properties_.Item(WMIProperty, 0).Value;if VarIsNull(obj) thenbeginResult:='Unknow';end;if VarIsArray(obj) thenbeginResult := Obj[0];end;if VarIsStr(obj) or VarIsCustom(obj) or VarIsFloat(obj) or VarIsNumeric(obj) or VarIsOrdinal(obj) thenbeginResult:= Obj;end;end;WMI-Win32_DiskDrive 硬盤參數(shù)
Availability --設(shè)備的狀態(tài)。
BytesPerSector --在每個(gè)扇區(qū)的物理磁盤驅(qū)動(dòng)器的字節(jié)數(shù)。
Capabilities --媒體訪問設(shè)備的能力陣列。
CapabilityDescriptions --更詳細(xì)的解釋為任何在功能陣列表示的訪問設(shè)備的功能的列表
Caption --對(duì)象的序列號(hào)
CompressionMethod --設(shè)備所使用的算法或工具,以支持壓縮。
ConfigManagerErrorCode --Windows配置管理器錯(cuò)誤代碼。
ConfigManagerUserConfig --如果為True,該設(shè)備使用用戶定義的配置。
CreationClassName --代表所在的類
DefaultBlockSize --此設(shè)備默認(rèn)塊大小,以字節(jié)為單位。
Description --描述
DeviceID --磁盤驅(qū)動(dòng)器與系統(tǒng)中的其他設(shè)備的唯一標(biāo)識(shí)符
ErrorCleared --如果為True,報(bào)告LastErrorCode錯(cuò)誤現(xiàn)已清除。
ErrorDescription --關(guān)于可能采取的糾正措施記錄在LastErrorCode錯(cuò)誤,和信息的詳細(xì)信息。
ErrorMethodology --誤差檢測和校正的類型被此設(shè)備支持。
FirmwareRevision --修訂制造商分配的磁盤驅(qū)動(dòng)器固件。
Index --給定的驅(qū)動(dòng)器的物理驅(qū)動(dòng)器號(hào)。此屬性由GetDriveMapInfo方法填補(bǔ)。 0xFF的值表示給定的驅(qū)動(dòng)器不映射到物理驅(qū)動(dòng)器。
InstallDate --日期和時(shí)間對(duì)象安裝。此屬性不需要的值以表示已安裝的對(duì)象。
InterfaceType --物理磁盤驅(qū)動(dòng)器的類型 (IDE、sata)
LastErrorCode --報(bào)告的邏輯設(shè)備上一個(gè)錯(cuò)誤代碼。
Manufacturer --制造商名稱
MaxBlockSize --最大塊的大小,以字節(jié)為單位,通過該設(shè)備訪問的媒體。
MaxMediaSize --最大介質(zhì)尺寸的介質(zhì),以KB為單位,由該設(shè)備支持。
MediaLoaded --如果真,媒體為一磁盤驅(qū)動(dòng)器加載,這意味著該設(shè)備具有一個(gè)可讀的文件系統(tǒng)和可訪問。對(duì)于固定磁盤驅(qū)動(dòng)器,該屬性將始終為TRUE。
MediaType --由該設(shè)備使用或訪問的媒體類型。
MinBlockSize --最小的塊大小,以字節(jié)為單位,通過該設(shè)備訪問的媒體。
Model --磁盤驅(qū)動(dòng)器的制造商的型號(hào)。
Name --名字
NeedsCleaning --如果真,媒體接入設(shè)備需要清潔。不論手動(dòng)或自動(dòng)清洗是可能顯示在Capabilities屬性。
NumberOfMediaSupported --可被支持的或插入的介質(zhì)最大數(shù)量
Partitions --此物理磁盤驅(qū)動(dòng)器上的分區(qū)是由操作系統(tǒng)識(shí)別的數(shù)目。
PNPDeviceID --即插即用邏輯設(shè)備的播放設(shè)備標(biāo)識(shí)符。
PowerManagementCapabilities --邏輯設(shè)備的特定功率相關(guān)的能力陣列。
PowerManagementSupported --如果為True,該設(shè)備可以是電源管理
SCSIBus --盤驅(qū)動(dòng)器的SCSI總線號(hào)。
SCSILogicalUnit --SCSI邏輯單元的磁盤驅(qū)動(dòng)器的號(hào)碼(LUN)。
SCSIPort --盤驅(qū)動(dòng)器的SCSI端口號(hào)。
SCSITargetId --SCSI標(biāo)識(shí)符號(hào)碼的磁盤驅(qū)動(dòng)器的。
SectorsPerTrack --在每個(gè)軌道此物理磁盤驅(qū)動(dòng)器扇區(qū)數(shù)。
SerialNumber --由制造商分配的號(hào)來識(shí)別物理介質(zhì)。
Signature --磁盤識(shí)別。該屬性可以被用于識(shí)別一個(gè)共享資源。
Size --磁盤大小
Status --對(duì)象的當(dāng)前狀態(tài)。
StatusInfo --邏輯設(shè)備的狀態(tài)
SystemCreationClassName --該作用域計(jì)算機(jī)的CreationClassName屬性的值。
SystemName --系統(tǒng)名稱
TotalCylinders --物理磁盤驅(qū)動(dòng)器上柱面總數(shù)。該值可能不準(zhǔn)確
TotalHeads --磁盤驅(qū)動(dòng)器上磁頭總數(shù)。該值可能不準(zhǔn)確。
TotalSectors --物理磁盤驅(qū)動(dòng)器上的扇區(qū)總數(shù)。該值可能不準(zhǔn)確。
TotalTracks --物理磁盤驅(qū)動(dòng)器上的曲目總數(shù)。該值可能不準(zhǔn)確。
TracksPerCylinder --在物理磁盤驅(qū)動(dòng)器上的每個(gè)柱面軌跡的數(shù)量。該值可能不準(zhǔn)確。
總結(jié)
以上是生活随笔為你收集整理的DELPHI利WMI获得硬盘参数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 协卡助手无法卸载的解决办法
- 下一篇: All flavors must now