علی سیداف
  seyedof@ccwmagazine.com

                             ترفندهای برنامه نویسی

مطالب ديگری از اين نويسنده

 

ترفند : پیدا كردن درایو CD-ROM
سكو :
Win9X, WinNT, WinME, Win2000

زبان  : تمام زبان های كاربرد نویسی تحت ویندوز

در این شماره، روش پیدا كردن درایو CD-ROM بین درایوهای متعدد را شاهد خواهید بود.

اصولا در نرم افزارهایی كه بر روی سی دی عرضه می شوند، داده ها و اطلاعات مورد نیاز برنامه بر روی سی دی ذخیره می شوند و برنامه هنگام اجرا داده های مورد نیاز خود را از روی سی دی مورد نظر می خواند؛ اما مشكل اصلی اینجاست كه بر روی هر كامپیوتر، درایو CD-ROM با حرف خاصی در دسترس است و هیچ قاعده كلی برای آن وجود ندارد؛ به عنوان مثال بر روی یك كامپیوتر، CD-ROM با حرف :G مشخص شده و بر روی یك كامپیوتر دیگر با حرف :I .
وظیفه یافتن
CD-ROM حاوی اطلاعات بر عهده برنامه می باشد، به این صورت كه برنامه پس از اجرا ابتدا درایو CD-ROM را پیدا می كند و پس از آن، اطلاعات و داده های مورد نیاز را از آن می خواند.

در API ویندوز، تابعی وجود دارد به اسم GetDriveType كه مشخصات كلی یك درایو را اعم از این كه یك درایو دیسكت ، دیسك سخت، CD-ROM یا غیره است به ما بازمی گرداند.

 UINT GetDriveType ( LPCTSTR lpRootPathName)

پارامتری كه به این تابع ارسال می شود، مسیر ریشه درایو مورد نظر است.
به عنوان مثال برای بدست آوردن مشخصات درایو
:G این رشته باید محتوی :G باشد و برای درایو:A محتوی :A
مقادیر برگشتی توسط این تابع و معنی آنها به صورت زیر می باشد :

نوع درایو مشخص نیست: 0
مسیر ریشه مورد درخواست وجود ندارد: 1
 :درایو مورد نظر یك درایو قابل جابجایی است: DRIVE_REMOVABLE
درایو مورد نظر ثابت بوده و قابل جابجایی نیست:
DRIVE_FIXED
درایو مورد نظر یك درایو شبكه ای است:
DRIVE_REMOTE
درایو مورد نظر یك درایو
CD-ROM است: DRIVE_CDROM
درایو مورد نظر یك درایو مجازی
RAM Drive است: DRIVE_RAMDISK

با توجه به مقادیر بالا كافی است تابع فوق را برای هر یك از درایوهای:A تا :Z فراخوانی كنیم و هر درایوی كه مقدار بازگشتی آن برابر DRIVE_CDROM بود، آن درایو یك CD-ROM است. علاوه بر این می توان درایوهای شبكه ای و كل درایوهای معتبر را نیز به كمك این تابع بدست آورد.

 

  

  
 م7