में सभी उपलब्ध ड्राइव अक्षरों का आकलन करना मैं वीसी ++ का उपयोग कर विंडोज में सभी उपलब्ध ड्राइव अक्षरों (जो पहले से नहीं लिया गया है) की गणना करना चाहता हूं।विंडोज
मैं यह कैसे कर सकता हूं?
में सभी उपलब्ध ड्राइव अक्षरों का आकलन करना मैं वीसी ++ का उपयोग कर विंडोज में सभी उपलब्ध ड्राइव अक्षरों (जो पहले से नहीं लिया गया है) की गणना करना चाहता हूं।विंडोज
मैं यह कैसे कर सकता हूं?
::GetLogicalDrives() मास्क में बिट्स के रूप में उपलब्ध (पढ़ा गया: उपयोग) ड्राइव की एक सूची देता है। इसमें मैप किए गए नेटवर्क ड्राइव शामिल होना चाहिए। इस प्रकार, आप बस बिट्स को खोजने के लिए बिट्स को चला सकते हैं, जिसका मतलब है कि कोई ड्राइव मौजूद नहीं है। यदि संदेह है, तो आप हमेशा ड्राइव के लिए ::GetDriveType() ड्राइव कोड + ":\"
(":\\"
सी कोड में, या _T(":\\")
यूनिकोड-जागरूक शब्दावली में) के साथ कॉल कर सकते हैं, और यदि ड्राइव उपलब्ध है तो उसे DRIVE_UNKNOWN
या DRIVE_NO_ROOT_DIR
वापस करना चाहिए।
GetLogicalDriveStrings Function एक अच्छा प्रारंभिक बिंदु है।
GetLogicalDriveStrings
आपको वर्तमान में उपयोग किए गए ड्राइव अक्षरों की सूची मिल सकता है।
GetVolumeInformation
का उपयोग किसी विशिष्ट ड्राइव के बारे में अधिक जानकारी प्राप्त करने के लिए किया जा सकता है।
GetLogicalDrives और GetLogicalDriveStrings एक अलग नामस्थान में बनाए गए नेटवर्क ड्राइव नहीं देख रहे हैं।
उदाहरण के लिए स्थानीय सिस्टम के अंतर्गत चल रही किसी सेवा से फ़ंक्शंस को कॉल करना लॉग इन उपयोगकर्ता द्वारा बनाए गए नेटवर्क ड्राइव को नहीं देखेगा।
यह विंडोज एक्सपी से शुरू हो रहा है। निम्न आलेख इस मामले में बताता है: http://msdn.microsoft.com/en-us/library/windows/desktop/aa363908(v=vs.85).aspx
यह क्यों मायने रखता है? आप ड्राइव अक्षरों का दोबारा उपयोग कर सकते हैं इससे कोई फर्क नहीं पड़ता कि अन्य उपयोगकर्ताओं ने उन्हें परिभाषित किया है, और सवाल केवल उपयोग करने योग्य अक्षरों के लिए आवश्यक है। – SilverbackNet
इम नहीं shure उन्हें गणना करने में कैसे या अगर यह दृश्य ग पर संकलित कर देगा ++ लेकिन मैं देव सी ++ या कोड ब्लाकों पर इस स्ट्रम कोडित क्या ड्राइव CreateFile का उपयोग करके पहुंच योग्य है की जाँच करने के लिए और GetDriveType का उपयोग करके किस प्रकार का ड्राइव है। प्रोग्राम ए से ज़ेड तक ड्राइव करता है:
#include <windows.h>
#include <cstring>
#include <sstream>
#include <iostream>
using namespace std;
int __stdcall WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPSTR lpCmdLine, INT nShowCmd)
{
HANDLE hDevice = NULL;
HANDLE fileFind = NULL;
while(true)
{
Sleep(3005);
char drv='A';
while(drv!='[')
{
Sleep(105);
const char *charDrvCF;
const char *charDrv;
stringstream Str;
string drvStr;
Str<<drv;
Str>>drvStr;
string drvSpc=drvStr+":\\";
string fCheck="\\\\.\\";
string fhCheck=fCheck+drvStr+":";
charDrvCF=fhCheck.c_str();
charDrv=drvSpc.c_str();
hDevice=CreateFile(charDrvCF,
GENERIC_READ|GENERIC_WRITE,
FILE_SHARE_READ|FILE_SHARE_WRITE,
NULL,
OPEN_EXISTING,
0,
NULL);
if(hDevice!=INVALID_HANDLE_VALUE)
{
switch(GetDriveType(charDrv))
{
case DRIVE_FIXED:
{
cout<<"Fixed drive detected: "<<charDrv<<endl;
break;
}
case DRIVE_REMOVABLE:
{
cout<<"Removable drive detected: "<<charDrv<<endl;
break;
}
case DRIVE_NO_ROOT_DIR:
{
cout<<"There is no volume mounted at the specified path. "<<charDrv<<endl;
break;
}
case DRIVE_REMOTE:
{
cout<<"The drive is a remote (network) drive. "<<charDrv<<endl;
break;
}
case DRIVE_CDROM:
{
cout<<"The drive is a CD-ROM drive. "<<charDrv<<endl;
break;
}
case DRIVE_RAMDISK:
{
cout<<"The drive is a RAM disk. "<<charDrv<<endl;
break;
}
case DRIVE_UNKNOWN:
{
cout<<"The drive type cannot be determined. "<<charDrv<<endl;
break;
}
}
}
drv++;
}
}
}
बहुत अधिक कोड लॉल – TheRealChx101
हाँ, यह GetLogicalDriveStrings से आसान है! – Alnitak