Makale Özeti

Bu makalemde WMI mimarisi, classları ve System.Management Namespace'ini inceleyeceğiz. İşletim sistemimizde çalışan uygulamalar, servisler gibi bileşenler hakkında bilgi edinmek, yönetimlerini sağlamak, çalışmaları sırasında ortaya çıkan hataları veya perfomans problemlerini gözlemlemek ve bu hataların / problemlerin nedenlerine ulaşmak gereksinimi ile karşılaştığımızda Window Management Instrumentation (WMI) mimarisini kullanarak biraz önce bahsedilen işlemleri ve daha fazlasını kendi geliştirdiğimiz uygulamalar sayesinde kolayca yapabiliriz. WMI bütün Windows tabanlı uygulamalarda özellikle yönetimsel işlemlerin yapılmasında kullanılabilir.

Makale

         Merhabalar

         Bu makalemde WMI mimarisi, classları ve System.Management Namespace'ini inceleyeceğiz.

         İşletim sistemimizde çalışan uygulamalar, servisler gibi bileşenler hakkında bilgi edinmek, yönetimlerini sağlamak, çalışmaları sırasında ortaya çıkan hataları veya perfomans problemlerini gözlemlemek ve bu hataların / problemlerin nedenlerine ulaşmak gereksinimi ile karşılaştığımızda Window Management Instrumentation (WMI) mimarisini kullanarak biraz önce bahsedilen işlemleri ve daha fazlasını kendi geliştirdiğimiz uygulamalar sayesinde kolayca yapabiliriz. WMI bütün Windows tabanlı uygulamalarda özellikle yönetimsel işlemlerin yapılmasında kullanılabilir.

         WMI mimarisi üç adet katmandan oluşur. Bunlardan ilki olan Client, WMI kullanarak uygulamanın işleyişi hakkında bilgi toplama, uygulamaları konfigüre etme gibi işlemler yapan uygulamalardır. İkinci katman olan Object Manager katmanı ise Client ve Provider arasında köprü vazifesi gören ve WMI işlemlerinin gerçekleşmesi için servisler sunan katmandır. Son katman olan Provider katmanı ise Client uygulamalara veri sağlayan, Client'lar tarafından çağırılan metodları invoke eden katmandır. WMI Mimarisi daha detaylı olarak aşağıdaki şemadan incelenebilir.



         .NET ile uygulamalarımızda WMI işlemlerini gerçekleştirdiğimiz namespace System.Management namespace'idir. System.Management namespace'inin ManagementObjectSearcher nesnesi ile uygulamamızda işimizi görecek olan ilgili ManagementObject'leri elde edebiliriz. ManagementObject'ler object-oriented yapıdadırlar ve içlerindeki her bir class ilgili ManagementObject'in property ve metodlarını taşır. Uygulama geliştiriciler de ellerindeki ManagementObject nesnesi ile uygulama geliştirdikleri sistemlerde istedikleri işlemleri gerçekleştirebilirler.

         WMI'da elde etmek istediğimiz verileri query'ler yardımıyla select sorgularında çekebiliriz. Bu select sorgularında ise where clause'ını kullanarak bizim ilgilendiğimiz, daha spesifik verileri de alabiliriz. Örneğin aşağıdaki kod bilgisayarda kurulu olan servislerden startup type'ları automatic olanları getirir:

         SELECT * FROM Win32_Service WHERE StartMode = 'Auto'

         WMI Win32_Service gibi birçok class'a sahiptir. Ben bu makalemde bu class'lardan bazılarını açıklayarak sahip oldukları property'ler hakkında bilgi vereceğim ve ardından WMI ile bazı sistem, uygulama bilgilerine nasıl ulaşabileceğimize, tüm VMI Classları için sahip olunan özelliklerin nasıl eldeedilebileceğine dair örnek uygulamalar yapacağım.

I)Win32_ComputerSystem

Bir Windows İşletim Sistemi çalışan bilgisayar hakkındaki bilgileri barındırır.

Açıklamalar.

AutomaticResetBootOption(Boolean) Makinanın bir sistem hatasından sonra kendini yeniden başlatıp başlatmayacağı bilgisinin tutulduğu property'dir.
AutomaticResetCapability(Boolean) Otomatik olarak yeniden başlatma özelliğinin makine ile uyumlu olup olmadığı bilgisinin tutulduğu property'dir.
BootOptionOnLimit(UInt16) Reset limiti aşıldığında sistemin davranışını belirtir.
BootOptionOnWatchDog(UInt16) watchdog timer çalıştırktan sonra gerçekleşen boot işleminin tipinin tutulduğu property'dir.
BootROMSupported(Boolean) Boot ROM desteklenip desteklenmediği bilgisinin tutulduğu property'dir.
BootupState(String) Sistemin nasıl başlatıldığı bilgisinin tutulduğu property'dir.
Caption(String) Bilgisayar adının tutulduğu property'dir.
ChassisBootupState(UInt16) Kasanın açılma şeklinin belirtildiği property'dir.
CreationClassName(String) Mevcut VMI Class'ının belirtildiği propertydir. Bu propertyden alt propertylere tekrar ulaşılabilir.
 
CurrentTimeZone(SInt16) Bilgisayar sisteminin saatinin Coordinated Universal Time saati ile dakika cinsinden karşılaştırıldığı property'dir
DaylightInEffect(Boolean) Daylight saving özelliğinin aktif olup olmadığının bilgisinin tutulduğu property'dir.
Description(String) Sistemin açıklamasının tutulduğu property'dir.
DNSHostName(String) Bilgisayarın DNS host name'inin tutulduğu property'dir.
Domain(String) Bilgisayarın dahil olduğu domain adının tutulduğu property'dir.
DomainRole(UInt16) Bilgisayarın atanmış olduğu domain-workgroup içindeki rolünün tutulduğu property'dir.
EnableDaylightSavingsTime(Boolean) Gün Işığından Faydalanma özelliğinin makina tarafından tanınıp tanınmadığı bilgisinin tutulduğu property'dir.
FrontPanelResetStatus(UInt16) Makina üstündeki reset butonunun güvenlik özelliklerinin set edildiği property'dir.
InfraredSupported(Boolean) Makinada infrared port olup olmadığı bilgisinin tutulduğu property'dir.
InstallDate(DateTime) Bilgisayarın kurulumunun yapıldığı tarih bilgisinin tutulduğu property'dir.
KeyboardPasswordStatus(UInt16) Keyboard Password Status donanım güvenlik ayarlarının tutulduğu property'dir.
LastLoadInfo(String) İşletim sistemi son başlatıldığı zamanki load device veya boot service verilerine ait bilgileri tutar.
Manufacturer(String) Bilgisayar üreticisinin adının tutulduğu property'dir.
Model(String) Bilgisayarın model bilgisinin tutulduğu property'dir.
Name(String) Makina adının tutulduğu property'dir.
NetworkServerModeEnabled(Boolean) Network Server Mode'unun aktif olup olmadığı bilgisinin tutulduğu property'dir.
NumberOfProcessors(UInt32) Makinada mevcut olan işlemci sayısı bilgisinin tutulduğu property'dir.
OEMLogoBitmap(UInt8) OEM tarafından oluşturulan bitmap dosyanın verisini taşıyan array'dir.
OEMStringArray(String) OEM tarafından tanımlanmış olan bazı özelliklerin tutulduğu array'dir.
PartOfDomain(Boolean) Bilgisayarın bir domain'ine dahil olup olmadığı bilgisinin tutulduğu property'dir.
PauseAfterReset(SInt64) Bir reboot başlatılmadan önceki gecikme zamanı bilgisinin tutulduğu property'dir. Değeri -1 ise bekleme süresi bilinmiyor demektir.
PowerManagementCapabilities(UInt16)

Bilgisayarın ve işletim sisteminin güç yönetimi ile ilgili özelliklerinin tutulduğu property’dir. Aldığı değerlerin açıklamaları aşağıdaki gibidir:
0 – Bilinmiyor
1 – Desteklenmiyor.
2 – Etkin değil
3 – Güç yönetimi özellikleri etkinleştirilmiş fakat hangi özelliğin etkin olduğu veya özellik hakkındaki bilgi mevcut değil.
4 – Cihazın güç durumunu kullanıma göre değiştirebileceğini belirtir. (Power State Settable)
5 – SetPowerState metodunun desteklendiğini belirtir. (Power Cycling Supported)
6 – SetPowerState metodunun PowerState değişkeni 5 olarak set edilerek invoke edilebileceğini belirtir. (Timed Power On Supported)
7 - SetPowerState metodunun PowerState değişkeni 5 olarak set edilerek ve Time parametresinin de spesifik bir tarih ve zamana veya zaman aralığına set edilerek invoke edilebileceğini belirtir.

PowerManagementSupported(Boolean)

Cihazda güç yönetimi yapılıp yapılamayacağının tutulduğu boolean property’dir. Bu property güç yönetimi özelliklerinin etkinleştirimiş olup olmadığını belirtmez. Bu bilgi için PowerManagementCapabilities array’indeki öğelere bakılabilir.

PowerOnPasswordStatus(UInt16) Sistem bütününde bulunan Power-On Password ayarı durumunu belirtir.
PowerState(UInt16)

Bilgisayarın ve işletim sisteminin güç durumunu tanımlayan property’dir. Aldığı değerlerin açıklamaları aşağıdaki gibidir:
4 – (Unknown) Bilgisayarın power save modunda olduğu biliniyor fakat bu moddaki kesin durumu bilinmiyor.
2 – (Low Power Mode) Bilgisayar power state modunda fakat hala çalışıyor ve performans düşüşü gösterebilir.
3 – (Standby) Bilgisayar çalışmıyor fakat kısa sürede çalışır hale getirilebilir.
7 – (Warning) Bilgisayar uyarı modunda aynı zamanda power save modunda.

PowerSupplyState(UInt16) Sistem son boot edildiğindeki power supply durumunun belirtildiği propertydir.
PrimaryOwnerContact(String) Bilgisayarın sahibinin erişim bilgilerinin tutulduğu property'dir.
PrimaryOwnerName(String) Bilgisayar sahibinin adının tutulduğu property'dir.
ResetCapability(UInt16) Etkin ise (value=4) donanımsal olarak reset imkanı var demektir. (güç ve reset düğmeleri mevcuttur). Etkin değilse (value=3) reset düğmesi mevcut değildir. Property'nin alabileceği diğer değerler ise 5-Uygulanmamış, 1-Diğer, 2-Bilinmiyor
ResetCount(SInt16) Kullanıcının son reset attığından beri atılan otomatik reset sayısının tutulduğu property'dir. Değer -1 ise bilinmiyor demektir.
ResetLimit(SInt16) Birbirini takip eden kaç reset girişimi olabileceğinin tutulduğu property'dir. Değer -1 ise limit bilinmiyor demektir.
Roles(String) Çalışma ortamında sistemin sahip olduğu rollerin taşındığı property'dir. Örneğin bir network sisteminde property "Switch" veya "Bridge" değerlerini taşıyor olabilir.
Status(String)

Cihazın o anki durumunun tutulduğu property’dir. İşlevsel ve işlevsel olmayan birçok durum tanımlanabilir. İşlevsel disk durumları “OK” (Çalışıyor), “Degraded” (Bozulmuş) ve “Pred Fail”’dir. “Pred Fail” cihazın düzgün çalıştığını ancak yakın zamanda bir hata alınabilir olduğunu belirtir. İşlevsel olmayan durumlar ise “Error” (Hata), “Starting” (Başlatılıyor), “Stopping” (Durduruluyor) ve “Service”’dir. Disk service durumundaysa diskle ilgili yönetimsel bazı işlemler yapılıyor anlamına gelir.

SupportContactDescription(String) Destek için kontak bilgisinin tutulduğu property'dir.
SystemStartupDelay(UInt16) İşletim sisteminin başlamadan önceki gecikme zamanının tutulduğu property'dir.
SystemStartupOptions(String) Bilgisayarı başlatma seçeneklerinin tutulduğu property'dir.
SystemStartupSetting(UInt8) Varsayılan bilgisayarı başlatma profilinin tutulduğu property'dir.
SystemType(String) Bilgisayarda çalışan sistemin tipinin tutulduğu property'dir.
ThermalState(UInt16) Bilgisayarın en son açıldığı zamanki termik durumunun tutulduğu property'dir.
TotalPhysicalMemory(UInt64) Toplam fiziksel belleğin tutulduğu property'dir.
UserName(String) Oturum açmış mevcut kullanıcının kullanıcı adının tutulduğu property'dir.
WakeUpType(UInt16) Sistemin açılışına sebep olan event'in tutulduğu property'dir.
Workgroup(String) Workgroup'un adının tutulduğu property'dir.

II)Win32_DiskDrive

Bir Windows İşletim Sistemi çalışan bilgisayar'ın üzerinde bulunan ve işletim sistemi tarafından tanınan fiziksel diskler hakkındaki bilgileri barındırır.

Açıklamalar.

Availability(UInt16) Diskin durumunun ve kullanılırlığının taşındığı property'dir. Örneğin bu property'nin değeri 3 ise cihaz çalışıyor demektir. 4 ise uyarı, 5 ise test, 10 ise bozulmuş, 13, 14, 15 ve 17 ise değişik şekillerde power save modunda demektir. Bu 3 moddan 13 ("Power Save - Unknown") cihazın power save modunda olduğuna işaret eder ancak cihazın durumunun tam olarak bilinmediğini belirtir. 14 ise ("Power Save - Low Power Mode") cihazın yine power save modunda olduğunu fakat düşük performansta da olsa çalıştığını belirtir. 15 ("Power Save - Standby"), cihazın çalışır durumda olmadığını fakat hızlıca çalışır duruma getirilebileceğini belirtir. Son olarak 17 ("Power Save - Warning") ise cihazın pover save modunda olduğunu ve uyarı verdiğini belirtir.
BytesPerSector(UInt32) BytesPerSector property'si diskin her sektöründeki byte sayısını verir.
CapabilityDescriptions(String) Capabilities array'indeki her öğenin detaylı açıklamasının tutulduğu property'dir. Bu array'de tutulan her açıklama Capabilities array'indeki aynı index'te bulunan öğelerle ilişkilidir ve bu öğelerin açıklamasıdır.
Caption(String) Nesnenin kısa bir açıklamasının tutulduğu property'dir.
CompressionMethod(String) Cihazın sıkıştırma algoritmasını veya aracının set edildiği string tipinde property'dir. Cihaz ile sıkıştırma yapmak mümkün değilse veya bu property set edilmek istenmiyorsa (örneğin cihazın sıkıştırma destekleyip desteklemediği bilinmediği için) "Unknown", cihazın sıkıştırma işlemini desteklediğini fakat sıkıştırma şeklinin bilinmediğini belirtmek için "Compressed" ve cihazın sıkıştırma işlemlerini desteklemediğini belirtmek için ise "Not Compressed" şeklinde bu property set edilebilir.
ConfigManagerErrorCode(UInt32)

Win 32 Configuration Manager hata kodunu verir. Aşağıda değerleri ve anlamları listelenmiştir:
0 - Cihaz düzgün çalışıyor.
1 - Cihaz düzgün bir şekilde ayarlanmamış.
2 - Windows bu cihaz için sürücüyü yükleyemiyor.
3 - Cihazın sürücüsü bozulmuş veya sistem bellek veya diğer kaynaklar açısından yetersiz durumda.
4 - Cihaz düzgün çalışmıyor. Sürücülerinden biri veya registry değerleri bozulmuş olabilir.
5 - Bu cihazın sürücüsü Windows'un yönetmediği veya kullanmadığı bir kaynağa ihtiyaç duyuyor.
6 - Cihazın boot ayarları diğer başka cihazlarla çakışıyor.
7 - Filtreleme yapılamıyor.
8 - Cihazın sürücü yükleyicisi bulunamıyor.
9 - Cihaz düzgün çalışmıyor çünkü cihazı kontrol eden firmware cihazın kaynaklarını hatalı belirliyor.
10 - Cihaz başlatılamıyor.
11 - Cihaz başarısız oldu.
12 - Cihazın kullanabileceği yeterli serbest kaynaklar bulunamıyor.
13 - Windows cihazın kaynaklarını doğrulayamıyor.
14 - Cihaz bilgisayar yeniden başlatılana kadar düzgün çalışmayacak.
15 - Cihaz olası bir re-enumeration problemi yüzünden düzgün çalışmıyor.
16 – Windows bu cihazın kullandığı bütün kaynakları doğrulayamıyor.
17 – Cihaz bilinmeyen bir kaynak türü istiyor.
18 – Cihazın sürücülerinin yeniden yüklenmesi gerekiyor.
19 – Registry değerleri bozulmuş olabilir.
20 – VXD Loader’ı kullanırken hata.
21 – Sistem Hatası: Cihazın sürücüsünü değiştirmeyi deneyin.
22 – Cihaz devre dışı bırakılmış.
23 - Sistem Hatası: Cihazın sürücüsünü değiştirmeyi deneyin. İşe yaramazsa cihazın dökümantasyonuna başvurun.
24 – Cihaz mevcut değil, düzgün çalışmıyor veya tüm sürücüleri yüklenmemiş.
25 – Windows hala cihazın kurulumunu yapıyor.
26 – Windows hala cihazın kurulumunu yapıyor.
27 – Cihaz geçerli bir log konfigürasyonuna sahip değil.
28 – Cihazın sürücüleri yüklü değil.
29 – Cihaz etkin değil çünkü cihazın firmware’i cihaza gerekli kaynakları sağlamadı.
30 – Cihaz başka bir cihazın kullandığı Interrupt Request (IRQ) kullanıyor.
31 – Cihaz düzgün çalışmıyor çünkü Windows cihaza gerekli sürücüleri yükleyemiyor.

ConfigManagerUserConfig(Boolean)

Cihazın kullanıcı tarafından belirlenmiş bir konfigürasyona sahip olup olmadığını belirtir.

DefaultBlockSize(UInt64) Bu birim için varsayılan blok boyutunu verir.
Description(String)

Nesnenin açıklamasının tutulduğu property’dir.

DeviceID(String)

Diskin sistemdeki diğer cihazlardan ayrıştırılmasını sağlayan sahip olduğu benzersiz string tipinde ID property’sidir.

ErrorCleared(Boolean)

LastErrorCode property’sinde belirtilmiş olan hatanın temizlenmiş olup olmadığının tutulduğu property’dir.

ErrorDescription(String)

LastErrorCode property’sinde belirtilmiş olan hata ve düzeltmek için yapılabilecekler hakkında daha fazla bilgi sağlayan string tipinde property’dir.

ErrorMethodology(String)

Cihaz tarafından desteklenen hata belirleme ve düzeltme tipleri hakkında açıklamaların tutulduğu property’dir.

Index(UInt32) Index property’si ilgili sürücünün fiziksel sürücü numarasını verir. Bu öğe Get Drive Map Info tarafından doldurulur.
InstallDate(DateTime)

InstallDate property’si cihazın kurulduğu tarihi tutar. Bu değerin olmaması cihazın kurulmadığı anlamına gelmez.

InterfaceType(String)

Diskin arabirim tipinin taşındığı property’dir. Örneğin SCSI

LastErrorCode(UInt32) Cihaz tarafından verilen en son hatanın tutulduğu property'dir.
Manufacturer(String) Diskin üreticisinin adının tutulduğu property'dir.
MaxBlockSize(UInt64) Bu cihaz için kullanılabilecek maksimum blok boyutu byte cinsinden verilir.
MaxMediaSize(UInt64)

Cihaz tarafından desteklenen kb cinsinden maksimum medya boyutunun tutulduğu property’dir. Kb 1 byte’ın 1000 ile çarpımından elde edilen sayıdır, 1024 ile çarpımından elde edilen sayı değildir.

MediaLoaded(Boolean) MediaLoaded özelliği disk sürücüsünde bir media olup olmadığını belirtir. Sabit diskler için bu değer herzaman true olmaktadır. Değer true ise disk sürücüsünde media yüklüdür.
MediaType(String)

Cihaz tarafından kullanılan veya erişilen medya tipidir. Örneğin removable media.

MinBlockSize(UInt64) Erişim sırasındaki minimum blok boyutunu byte olarak verir.
Model(String)

Disk sürücüsünün üretici tarafından belirlenmiş olan model numarasının tutulduğu property’dir.

Name(String)

Cihazın adının tutulduğu property’dir.

NeedsCleaning(Boolean)

Cihazın temizlenmeye ihtiyacı olup olmadığının tutulduğu property’dir. Manuel veya otomatik temizleme olup olmadığı Capabilities property’sinin array’inde belirtilir.

NumberOfMediaSupported(UInt32)

Cihaz birden çok medyayı barındırabilme özelliğine sahipse, maksimum desteklenen medya sayısının tutulduğu property’dir.

Partitions(UInt32)

Disk sürücüsünde işletim sistemi tarafından tanınmış olan bölümlendirme sayısının tutulduğu property’dir.

PNPDeviceID(String)

Cihazın Win32 Plug and Play cihaz Id’sinin tutulduğu property’dir.

PowerManagementCapabilities(UInt16)

Cihazın güç yönetimi ile ilgili özelliklerinin tutulduğu property’dir. Aldığı değerlerin açıklamaları aşağıdaki gibidir:
0 – Bilinmiyor
1 – Desteklenmiyor.
2 – Etkin değil
3 – Güç yönetimi özellikleri etkinleştirilmiş fakat hangi özelliğin etkin olduğu veya özellik hakkındaki bilgi mevcut değil.
4 – Cihazın güç durumunu kullanıma göre değiştirebileceğini belirtir. (Power State Settable)
5 – SetPowerState metodunun desteklendiğini belirtir. (Power Cycling Supported)
6 – SetPowerState metodunun PowerState değişkeni 5 olarak set edilerek invoke edilebileceğini belirtir. (Timed Power On Supported)
7 - SetPowerState metodunun PowerState değişkeni 5 olarak set edilerek ve Time parametresinin de spesifik bir tarih ve zamana veya zaman aralığına set edilerek invoke edilebileceğini belirtir.

PowerManagementSupported(Boolean)

Cihazda güç yönetimi yapılıp yapılamayacağının tutulduğu boolean property’dir. Bu property güç yönetimi özelliklerinin etkinleştirimiş olup olmadığını belirtmez. Bu bilgi için PowerManagementCapabilities array’indeki öğelere bakılabilir.

SCSIBus(UInt32)

Diskin SCSI bus numarasını verir.

SCSILogicalUnit(UInt16)

SCSILogicalUnit property’si diskin SCSI logical unit number (LUN) bilgisinin tutulduğu property’dir.

SCSIPort(UInt16)

Diskin SCSI port numarasının tutulduğu property’dir.

SCSITargetId(UInt16) Diskin SCSI ID numarasının tutulduğu property'dir
SectorsPerTrack(UInt32) Diskteki her track'teki sektör sayısının tutulduğu property'dir.
Signature(UInt32) Diski tanımlamak için kullanılan property'dir.
Size(UInt64) Diskin boyutunun tutulduğu property'dir.
Status(String)

Cihazın o anki durumunun tutulduğu property’dir. İşlevsel ve işlevsel olmayan birçok durum tanımlanabilir. İşlevsel disk durumları “OK” (Çalışıyor), “Degraded” (Bozulmuş) ve “Pred Fail”’dir. “Pred Fail” cihazın düzgün çalıştığını ancak yakın zamanda bir hata alınabilir olduğunu belirtir. İşlevsel olmayan durumlar ise “Error” (Hata), “Starting” (Başlatılıyor), “Stopping” (Durduruluyor) ve “Service”’dir. Disk service durumundaysa diskle ilgili yönetimsel bazı işlemler yapılıyor anlamına gelir.

StatusInfo(UInt16)

Mantıksal sürücünün (logical device) durumunun tutulduğu property’dir. 3 ise etkin, 4 ise etkin değil, 2 ise bilinmeyen, 1 ise diğer başka bir durumda demektir. Bu property mantıksal sürücüye uygulanmıyorsa 5 yani uygun değildir değeri kullanılmalıdır.

SystemCreationClassName(String) Gözlemlenen sistemin CreationClassName property'sidir.
SystemName(String) Gözlemlenen sistemin ismidir.
TotalCylinders(UInt64)

Diskin üstündeki toplam silindir sayısının tutulduğu property’dir. Bu değer BIOS 13h interrupt’ının fonksiyonları kullanılarak elde edilir. Bu değer, sürücü yüksek kapasite disk boyutunu desteklemek için translation scheme kullanıyorsa doğru çıkmayabilir. Kesin sürücü spesifikasyonları için üretici firmanın sağladığı bilgiler referans alınmalıdır.

TotalHeads(UInt32)

Bu property diskin üstündeki toplam head’lerin sayısının tutulduğu property’dir. Bu değer BIOS 13h interrupt’ının fonksiyonları kullanılarak elde edilir. Bu değer, sürücü yüksek kapasite disk boyutunu desteklemek için translation scheme kullanıyorsa doğru çıkmayabilir. Kesin sürücü spesifikasyonları için üretici firmanın sağladığı bilgiler referans alınmalıdır.

TotalSectors(UInt64) Fiziksel disk sürücüsündeki toplam sektör sayısının tutulduğu property'dir. Bu değer BIOS 13h interrupt’ının fonksiyonları kullanılarak elde edilir. Bu değer, sürücü yüksek kapasite disk boyutunu desteklemek için translation scheme kullanıyorsa doğru çıkmayabilir. Kesin sürücü spesifikasyonları için üretici firmanın sağladığı bilgiler referans alınmalıdır.
TotalTracks(UInt64) Fiziksel disk sürücüsündeki toplam track sayısının tutulduğu property'dir. Bu değer BIOS 13h interrupt’ının fonksiyonları kullanılarak elde edilir. Bu değer, sürücü yüksek kapasite disk boyutunu desteklemek için translation scheme kullanıyorsa doğru çıkmayabilir. Kesin sürücü spesifikasyonları için üretici firmanın sağladığı bilgiler referans alınmalıdır.
TracksPerCylinder(UInt32) Fiziksel disk üstünde bulunan her silindirdeki track sayısının tutulduğu property'dir. Bu değer BIOS 13h interrupt’ının fonksiyonları kullanılarak elde edilir. Bu değer, sürücü yüksek kapasite disk boyutunu desteklemek için translation scheme kullanıyorsa doğru çıkmayabilir. Kesin sürücü spesifikasyonları için üretici firmanın sağladığı bilgiler referans alınmalıdır.

Bir sonraki makalemdeWin32_LogicalDisk, Win32_OperatingSystem, Win32_Process, Win32_Processor WMI class'larını inceleyeceğiz.

Işıl ORHANEL