ورود

View Full Version : مبتدی: آموزش پیدا کردن درایو های موجود در سیستم و لیست آنهابا روش بیتی با تابعGetLogicalDrives



pe32_64
سه شنبه 29 شهریور 1390, 14:06 عصر
باعرض سلام و خسته نباشید
همانطور که می دانید برای بدست آموردن درایوهای سیتم در ویندوز چند را وجود دارد که حرفه ای ترین و راحترینشو می خوام بگم:

با استفاده از تابع (DWORD WINAPI GetLogicalDrives(void
می توان درایو های موجود را در یک ماسک بیتی(یک عدد 32 بیتی که به ازای درایو های a تا z هرکدووم که حاضر باشند را بیت شو یک قرار میده )که ای این عمل به ترتیب حرو الفبا است:

مثلا برای درایو a:
00000000000000000000000000000001
برای درایوb :
00000000000000000000000000000010
برای درایو c:
00000000000000000000000000000100
برای درایو d:
00000000000000000000000000001000
,و همینطور برای ادامه ی درایوها.
شما می توانید یک ماسک بیتی به شکل 1 یا(00000000000000000000000000000001)
تعریف کنید و آن را 26 بار به طرف چپ شیفت بدید.سپس شما ماسک را در هر دور حلقه با خروجی تابعGetLogicalDrivesاند باینری کنید :
اگر نتیجه صفر شد درایو وجودندارد
اگر صفر نشد درایو وجود دارد
متال برای الگوریتم بالا:


DWORD dwDrives = 0, dwMask = 1;CHAR chDrive;
dwDrives = GetLogicalDrives();
printf("Currently available Disk Drives : \n");
for(UINT i = 0; i< 26;i++)
{
if(dwDrives & dwMask)
{
chDrive = 'A' + i;
printf("%c:\n",chDrive);
}
dwMask<<=1 ;
}