بایگانی

Posts Tagged ‘Win32_POTSModem’

لیست کردن مودم های نصب شده روی سیستم

همون طور که احتمالا هم بدونید برای بدست آوردن آبجکت های مریریتی سیستم از کلاس ManagementObjectSearcher استفاده میشه.این کلاس اطلاعات زیادی رو میتونه برای شما لیست کنه، مانند: لیست درایوها، Network Adapters، پروسه ها و بسیاری از اطلاعات از این قبیل که در مدیریت سیستم شما وجود داره.

احتمالا شما در بسیاری از موارد کارتون به Computer Management که در قسمت Adminstartive Tools در Control Panel گیر افتاده و این قسمت رو می شناسید.در اینجا شما می تونید همین اطلاعات رو مشاهده کنید.(از بحث دات نت دور نشیم زیاد….)

چند راه برای استفاده از مودم ها و شناسایی اونها وجود داره:

یکی از اونها استفاده از کلاس SerialPort و لیست کردن پورت های سیستم هست که سخت میشه از این طریق مودم مربوطه رو شناخت.

یک راه دیگه استفاده از رجیستری ویندوز هست.در آدرس زیر:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E96D-E325-11CE-BFC1-08002BE10318}

شما می تونید لیستی از مودم های نصب را مشاهده کنید.روی هرکدام از کلیدها کلیک کنید، میتونید اطلاعات مورد نظر خودتون رو مشاهده کنید.

اما راه دیگری که وجود داره و مورد بحث ما هست استفاده از ManagementObjectSearcher هست.در مورد WMI توضیحی نمیدم چون msdn بهترین گزینه برای یادگیری این موضوع هست اما چند تا از کارهایی که میشه با کلاس های WMI انجام داد رو براتون توضیح میدم.

اما فعلا در مورد موضوع این مطلب یعنی لیست کردن مودم ها بحث کنیم.

یکی از کلاس های WMI ، Win32_POTSModem هست که POTS مخفف Plain Old Telephone Service هست و اطلاعات مودم های نصب شده در سیستم شما را نشون میده.در زیر میتونید لیست متغیرهای موجود رو مشاهده کنید(برگرفته از msdn)

class Win32_POTSModem : CIM_PotsModem
{
  uint16 AnswerMode;
  string AttachedTo;
  uint16 Availability;
  string BlindOff;
  string BlindOn;
  string Caption;
  string CompatibilityFlags;
  uint16 CompressionInfo;
  string CompressionOff;
  string CompressionOn;
  uint32 ConfigManagerErrorCode;
  boolean ConfigManagerUserConfig;
  string ConfigurationDialog;
  string CountriesSupported[];
  string CountrySelected;
  string CreationClassName;
  string CurrentPasswords[];
  uint8 DCB[];
  uint8 Default[];
  string Description;
  string DeviceID;
  string DeviceLoader;
  string DeviceType;
  uint16 DialType;
  datetime DriverDate;
  boolean ErrorCleared;
  string ErrorControlForced;
  uint16 ErrorControlInfo;
  string ErrorControlOff;
  string ErrorControlOn;
  string ErrorDescription;
  string FlowControlHard;
  string FlowControlOff;
  string FlowControlSoft;
  string InactivityScale;
  uint32 InactivityTimeout;
  uint32 Index;
  datetime InstallDate;
  uint32 LastErrorCode;
  uint32 MaxBaudRateToPhone;
  uint32 MaxBaudRateToSerialPort;
  uint16 MaxNumberOfPasswords;
  string Model;
  string ModemInfPath;
  string ModemInfSection;
  string ModulationBell;
  string ModulationCCITT;
  uint16 ModulationScheme;
  string Name;
  string PNPDeviceID;
  string PortSubClass;
  uint16 PowerManagementCapabilities[];
  boolean PowerManagementSupported;
  string Prefix;
  uint8 Properties[];
  string ProviderName;
  string Pulse;
  string Reset;
  string ResponsesKeyName;
  uint8 RingsBeforeAnswer;
  string SpeakerModeDial;
  string SpeakerModeOff;
  string SpeakerModeOn;
  string SpeakerModeSetup;
  string SpeakerVolumeHigh;
  uint16 SpeakerVolumeInfo;
  string SpeakerVolumeLow;
  string SpeakerVolumeMed;
  string Status;
  uint16 StatusInfo;
  string StringFormat;
  boolean SupportsCallback;
  boolean SupportsSynchronousConnect;
  string SystemCreationClassName;
  string SystemName;
  string Terminator;
  datetime TimeOfLastReset;
  string Tone;
  string VoiceSwitchFeature;
};

چیزی که در اینجا برای ما مهم هست Model و AttachedTo (شماره پورتی که مودم روی اون نصب شده) هست.

اما نحوه کار:

string query = «SELECT * FROM Win32_POTSModem»;

ManagementObjectSearcher searcher = new ManagementObjectSearcher(query);

foreach (ManagementObject wmi_name in searcher.Get())

{

if (wmi_name[«Model»] != null)

{

cbModems.Items.Add(wmi_name[«Model»].ToString());

cbPorts.Items.Add(wmi_name[«AttachedTo»].ToString());

}

}

برای این پست فعلا همین کافیه.البته مطالب دیگه و نمونه های دیگه ای هم هست.برای مثال نحوه کار با ManagementOperationObserver و یا کلاس های دیگه ای مثل Win32_DiskDrive که در مطالب بعدی به اونها اشاره میکنیم(البته در حیطه پروژه، .. یا یه کمی بالاتر 😀 )…..


Vote on iDevCenter

Advertisements
دسته‌ها:C#.Net برچسب‌ها: , , , , , ,