这篇教程C++ GetLogicalDriveStrings函数代码示例写得很实用,希望能帮到您。
本文整理汇总了C++中GetLogicalDriveStrings函数的典型用法代码示例。如果您正苦于以下问题:C++ GetLogicalDriveStrings函数的具体用法?C++ GetLogicalDriveStrings怎么用?C++ GetLogicalDriveStrings使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。 在下文中一共展示了GetLogicalDriveStrings函数的30个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。 示例1: MyGetLogicalDriveStringsbool MyGetLogicalDriveStrings(CSysStringVector &driveStrings){ driveStrings.Clear(); UINT32 size = GetLogicalDriveStrings(0, NULL); if (size == 0) return false; CSysString buffer; UINT32 newSize = GetLogicalDriveStrings(size, buffer.GetBuffer(size)); if (newSize == 0) return false; if (newSize > size) return false; CSysString string; for (UINT32 i = 0; i < newSize; i++) { TCHAR c = buffer[i]; if (c == TEXT('/0')) { driveStrings.Add(string); string.Empty(); } else string += c; } if (!string.IsEmpty()) return false; return true;}
开发者ID:119,项目名称:aircam-openwrt,代码行数:28,
示例2: GetLogicalDriveStringsvoid sloDiskManager::FindAllDrivers(){ DWORD dwNumBytesForDriveStrings;//实际存储驱动器号的字符串长度 HANDLE hHeap; LPSTR lp; CString strLogdrive; //获得实际存储驱动器号的字符串长度 dwNumBytesForDriveStrings=GetLogicalDriveStrings(0,NULL)*sizeof(TCHAR); //如果字符串不为空,则表示有正常的驱动器存在 if (dwNumBytesForDriveStrings!=0) { //分配字符串空间 hHeap=GetProcessHeap(); lp=(LPSTR)HeapAlloc(hHeap,HEAP_ZERO_MEMORY, dwNumBytesForDriveStrings); //获得标明所有驱动器的字符串 GetLogicalDriveStrings(HeapSize(hHeap,0,lp),lp); //将驱动器一个个放到下拉框中 while (*lp!=0) { //Driver->AddString(lp); GetDrvSpaceInfo(lp); lp=_tcschr(lp,0)+1; } } }
开发者ID:MrMattMunro,项目名称:filesearch,代码行数:30,
示例3: sync_win32static intsync_win32 (void){ DWORD n1, n2; n1 = GetLogicalDriveStrings (0, NULL); if (n1 == 0) return -1; TCHAR buffer[n1+2]; /* sic */ n2 = GetLogicalDriveStrings (n1, buffer); if (n2 == 0) return -1; TCHAR *p = buffer; /* The MSDN example code itself assumes that there is always one * drive in the system. However we will be better than that and not * make the assumption ... */ while (*p) { HANDLE drive; DWORD drive_type; /* Ignore removable drives. */ drive_type = GetDriveType (p); if (drive_type == DRIVE_FIXED) { /* To open the volume you have to specify the volume name, not * the mount point. MSDN documents use of the constant 50 * below. */ TCHAR volname[50]; if (!GetVolumeNameForVolumeMountPoint (p, volname, 50)) return -1; drive = CreateFile (volname, GENERIC_READ|GENERIC_WRITE, FILE_SHARE_READ|FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, 0); if (drive == INVALID_HANDLE_VALUE) return -1; BOOL r; /* This always fails in Wine: * http://bugs.winehq.org/show_bug.cgi?id=14915 */ r = FlushFileBuffers (drive); CloseHandle (drive); if (!r) return -1; } /* Skip to next /0 character. */ while (*p++); } return 0;}
开发者ID:FengYang,项目名称:libguestfs,代码行数:57,
示例4: getrootdirs/* get the list of root directories on mounted drives */char * getrootdirs (char * getrootdirs){ DWORD dw; dw = GetLogicalDriveStrings (0, NULL);// fprintf(stderr, "GetLogicalDriveStrings: %d/n", dw); getrootdirs = HeapAlloc (GetProcessHeap(), 0, dw * sizeof(TCHAR)); GetLogicalDriveStrings (dw, getrootdirs);// fprintf(stderr, "getrootdirs: %s/n", getrootdirs); return(getrootdirs);}
开发者ID:Trietptm-on-Coding-Algorithms,项目名称:CodeLibrary,代码行数:12,
示例5: GetDriveListLONG GetDriveList(drv_list_t& drvList){ DWORD dwLen = GetLogicalDriveStrings(0, 0); TCHAR* tszDriveList = new TCHAR[dwLen + 1]; dwLen = GetLogicalDriveStrings(dwLen, tszDriveList); LONG lRet = ParseDriveString(drvList, tszDriveList); delete[] tszDriveList; return lRet;}
开发者ID:runsisi,项目名称:Grub4Win,代码行数:11,
示例6: GetLogicalDriveStrings/* ******************************************************************* * Function: bool GetLogicalDrives() * * Description : Will fill the virtools aray (from the P-In) * with a list of the logical drives * * Paramters : * CKBehavior* r The virtool behaviour * * Returns : True if it succeeds, otherwise false * ******************************************************************* */bool CGBLFileSystem::GetLogicalDrives(CKBehavior* beh){ // scan for a list of all the logical drives "a:/ b:/ c:/" char *allDriveStrings = NULL; // get the length of the string to be returned size_t lAllDriveStrings = GetLogicalDriveStrings( 0, NULL ); // Get the destination data array and clear it out CKDataArray* dataArray = static_cast<CKDataArray*>(beh->GetInputParameterObject(eParamInputDataArray)); if (!dataArray) { CGBLWidget::OutputBBErrorMsg(beh, "Please attatch an array to the BB"); return FALSE; } dataArray->Clear(); assert( allDriveStrings == NULL ); // get the string containing all the logical drives allDriveStrings = new char[ lAllDriveStrings + sizeof (EMPTY_STRING) ]; // + for trailer if( GetLogicalDriveStrings( lAllDriveStrings, allDriveStrings ) != lAllDriveStrings - 1 ) { CGBLWidget::OutputBBErrorMsg(beh, "Failed to get logical drive strings"); return FALSE; } else { assert( allDriveStrings != NULL ); char* driveString = allDriveStrings; size_t lDriveString = strlen( driveString ); char valueToAdd[BUFSIZE]={'/0'}; // loop through all the logical drives, tyring to get a display name while( lDriveString > 0 ) { strcpy(valueToAdd,driveString); dataArray->AddRow(); int currentRow = dataArray->GetRowCount()-1; // 0 index dataArray->SetElementStringValue(currentRow,NAME_COLUMN,valueToAdd); driveString += lDriveString + 1; lDriveString = strlen( driveString ); } // cleanup if (allDriveStrings) { delete allDriveStrings; allDriveStrings = NULL; } } return TRUE;}
开发者ID:gbaumgart,项目名称:GBL_Backup,代码行数:66,
示例7: memsetbool IdentClient::SendParaSysStorage(){ bool bRet = false; if (m_IsSvrConnected) { memset(&m_cmdTransfer,0x00,sizeof(m_cmdTransfer)); size_t szAllDriveStrings = GetLogicalDriveStrings(0,NULL); char *pDriveStrings = new char[szAllDriveStrings + sizeof((""))]; GetLogicalDriveStrings(szAllDriveStrings,pDriveStrings); size_t szDriveString = strlen(pDriveStrings); int iMaxnumDrive = sizeof(g_stGlobal_Flash.sysstoragepara.storageconfig.diskdesc)/sizeof(g_stGlobal_Flash.sysstoragepara.storageconfig.diskdesc[0]); int DriveIndex = 0; for(DriveIndex = 0; DriveIndex < iMaxnumDrive && szDriveString > 0; DriveIndex++) { strcpy((char *)g_stGlobal_Flash.sysstoragepara.storageconfig.diskdesc[DriveIndex].disk_name,pDriveStrings); unsigned long long FreeAv,TotalBytes,FreeBytes; if (GetDiskFreeSpaceEx(pDriveStrings,&FreeAv,&TotalBytes,&FreeBytes)) { g_stGlobal_Flash.sysstoragepara.storageconfig.diskdesc[DriveIndex].realsize = TotalBytes.QuadPart/(unsigned long long)(1024*1024); g_stGlobal_Flash.sysstoragepara.storageconfig.diskdesc[DriveIndex].emptysize = FreeAv.QuadPart/(unsigned long long)(1024*1024); } g_stGlobal_Flash.sysstoragepara.storageconfig.diskdesc[DriveIndex].drive_type = (DRIVE_TYPE)GetDriveType(pDriveStrings); char drive_fs_type[128]; if(!GetVolumeInformation(pDriveStrings,NULL,0,NULL,NULL,NULL,drive_fs_type,128)) { g_stGlobal_Flash.sysstoragepara.storageconfig.diskdesc[DriveIndex].drive_fstype = DRIVE_FS_TYPE_UNKNOWN; } else { if(!strcmp(drive_fs_type,"NTFS")) { g_stGlobal_Flash.sysstoragepara.storageconfig.diskdesc[DriveIndex].drive_fstype = DRIVE_FS_TYPE_NTFS; } else if(!strcmp(drive_fs_type,"FAT32")) { g_stGlobal_Flash.sysstoragepara.storageconfig.diskdesc[DriveIndex].drive_fstype = DRIVE_FS_TYPE_FAT32; } else { g_stGlobal_Flash.sysstoragepara.storageconfig.diskdesc[DriveIndex].drive_fstype = DRIVE_FS_TYPE_UNKNOWN; } } pDriveStrings += szDriveString + 1; szDriveString = strlen(pDriveStrings); } g_stGlobal_Flash.sysstoragepara.storageconfig.diskcount = DriveIndex; bRet = CONSTRUCT_CMD(CMD_NUM_SYS_STORAGE_RESPONSE,(char *)&g_stGlobal_Variable.globalflash.sysstoragepara,sizeof(SYS_STORAGE_PARA),&m_cmdTransfer); bRet &= SendParaMsg(); } return bRet;}
开发者ID:NearZhxiAo,项目名称:3730,代码行数:51,
示例8: DeleteAllItemsBOOL CDirTreeCtrl::DisplayDrives(){ // // Displaying the Availible Drives on this PC // This are the First Items in the TreeCtrl // DeleteAllItems(); char szDrives[128]; char* pDrive; if ( !GetLogicalDriveStrings( sizeof(szDrives), szDrives ) ) { m_strError = "Error Getting Logical DriveStrings!"; return FALSE; } pDrive = szDrives; while( *pDrive ) { if (!m_bFixedOnly || GetDriveType(pDrive) == DRIVE_FIXED) { *pDrive = toupper(*pDrive); HTREEITEM hParent = AddItem( TVI_ROOT, pDrive ); if ( FindSubDir( pDrive ) ) InsertItem( "", 0, 0, hParent ); } pDrive += strlen( pDrive ) + 1; } return TRUE;}
开发者ID:devurandom,项目名称:shadowkeeper,代码行数:32,
示例9: GetOpticalDriveListstatic std::vector<std::wstring> GetOpticalDriveList(){ DWORD size = GetLogicalDriveStrings(0, nullptr); std::vector<wchar_t> drive_strings(size); if (GetLogicalDriveStrings(size, drive_strings.data()) != size - 1) return {}; std::vector<std::wstring> drives; for (auto p = drive_strings.data(); *p; ++p) { if (GetDriveType(p) == DRIVE_CDROM) drives.push_back(p); while (*p) ++p; } return drives;}
开发者ID:willkuer,项目名称:pcsx2,代码行数:16,
示例10: GetComputerDrivesBOOL GetComputerDrives(std::vector<CString>& vecDrive){ BOOL bRet = FALSE; CString strDriverName; vecDrive.clear(); TCHAR szDriverName[500]; DWORD nLength = GetLogicalDriveStrings(sizeof(szDriverName), szDriverName); for (int i = 0; i < (int)nLength; i++) { if (szDriverName[i] != L'/0') { strDriverName += szDriverName[i]; } else { strDriverName = strDriverName.Left(strDriverName.GetLength() - 1); vecDrive.push_back(strDriverName); strDriverName = ""; } } if (vecDrive.size() > 0) bRet = TRUE; return bRet;}
开发者ID:6520874,项目名称:pcmanager,代码行数:29,
示例11: get_disk_info_allvoid get_disk_info_all(){ DWORD dwNumBytesForDriveStrings; char DriveStrings[255]; char* dp = DriveStrings; dwNumBytesForDriveStrings = GetLogicalDriveStrings(254,dp); if (dwNumBytesForDriveStrings != 0) { /* GetLogicalDriveStringsIs supported on this platform */ while (*dp != 0) { output_drive_info(dp); dp = strchr(dp,0) +1; } } else { /* GetLogicalDriveStrings is not supported (some old W95) */ DWORD dwDriveMask = GetLogicalDrives(); int nDriveNum; char drivename[]="A://"; /*printf("DriveName95 DriveType BytesAvail BytesTotal BytesTotalFree/n");*/ for (nDriveNum = 0; dwDriveMask != 0;nDriveNum++) { if (dwDriveMask & 1) { drivename[0]='A'+ nDriveNum; output_drive_info(drivename); } dwDriveMask = dwDriveMask >> 1; } }}
开发者ID:0x00evil,项目名称:otp,代码行数:28,
示例12: DeleteAllItemsBOOL CDirTreeCtrl::DisplayDrives(){ DeleteAllItems(); TCHAR szDrives[260]; TCHAR* pDrive=NULL; if ( !GetLogicalDriveStrings( sizeof(szDrives), szDrives ) ) { m_strError =_T("驱动信息获取失败!"); return FALSE; } pDrive = szDrives; //szDrives 中的字符串格式:_T("C://0D://0D://0E://0") m_hDirTreeRoot = InsertItem(_T("project")); int len; while( *pDrive!=0 ) { len = _tcslen(pDrive); pDrive[len-1] = _T('/0'); HTREEITEM hParent = AddItem( m_hDirTreeRoot, pDrive ); if ( FindSubDir( pDrive )) AddSubDirAsItem(hParent); pDrive += len + 1; } Expand( m_hDirTreeRoot, TVE_EXPAND ); return TRUE;}
开发者ID:neil-yi,项目名称:ffsource,代码行数:26,
示例13: GetLogicalDriveStrings/******************************************************************************* 作用: 在指定父节点下插入系统驱动器节点******************************************************************************/void CMainFrame::InsertLogicalDrives(HTREEITEM hParent){ DWORD szAllDriveStrings = GetLogicalDriveStrings(0,NULL); LPWSTR pDriveStrings = new WCHAR[szAllDriveStrings + sizeof(_T(""))]; LPWSTR pDel = pDriveStrings; GetLogicalDriveStrings(szAllDriveStrings, pDriveStrings); size_t szDriveString = wcslen(pDriveStrings); while(szDriveString > 0) { m_TreeCtrl.InsertItem(pDriveStrings, hParent); pDriveStrings += szDriveString + 1; szDriveString = wcslen(pDriveStrings); } SAFE_DELETE_ARRAY (pDel);}
开发者ID:ptthisdan,项目名称:DIPVC,代码行数:19,
示例14: LocalFilesScanList//----------------------------------------------------------------BOOL LocalFilesScanList(DWORD iitem, char *ip, PSCANNE_ST config, DWORD cb_id){ char tmp[MAX_PATH], letter[3]=" :/0", msg[MAX_PATH], source[MAX_PATH]; int i,nblecteurs = GetLogicalDriveStrings(MAX_PATH,tmp); DWORD nb_file_check = 0; for (i=0;i<nblecteurs && scan_start;i+=4) { switch(GetDriveType(&tmp[i])) { /*case DRIVE_UNKNOWN: break; case DRIVE_NO_ROOT_DIR: break; case DRIVE_CDROM:break;*/ case DRIVE_FIXED: //case DRIVE_REMOTE: //case DRIVE_RAMDISK: //case DRIVE_REMOVABLE: { letter[0] = tmp[i]; nb_file_check = CheckRecursivFilesList(iitem, letter, cb_id); snprintf(source,MAX_PATH,"%s//%s//",ip,letter); snprintf(msg,MAX_PATH,"%lu files checked",nb_file_check); AddMsg(h_main,(char*)"INFORMATION (Files)",source,msg); } break; } } return TRUE;}
开发者ID:garfieldchien,项目名称:omnia-projetcs,代码行数:32,
示例15: wxLogTracevoid DirectoryTree::InitTree() { wxLogTrace(DIRECTORYTREE_EVENTS, wxT("InitTree()")); DeleteAllItems();#ifdef __UNIX wxTreeItemId tidRoot = AddChild(wxTreeItemId(), FILE_SYSTEM_ROOT);#elif _WINDOWS wxTreeItemId tidRoot = AddRoot(FILE_SYSTEM_ROOT, 0, 1, NULL);#endif // OS if(!tidRoot.IsOk()) { wxLogDebug(wxT("DirectoryTree::InitTree(): AddRoot() failed.")); return; }#ifdef _WINDOWS // Enumerate the system volumes TCHAR szDrives[0x200]; DWORD dwTotalLength = GetLogicalDriveStrings(0x200 * sizeof(TCHAR), szDrives); DWORD dwOffset = 0; while(dwOffset < dwTotalLength) { TCHAR * szDrive = szDrives + dwOffset; wxString sDrive(szDrive); AddChild(tidRoot, sDrive); DWORD dwLength = wcslen(szDrive); dwOffset += dwLength + 1; }#endif // OS }
开发者ID:joeyates,项目名称:sherpa,代码行数:32,
示例16: main//int WinMain(HINSTANCE hInstance,HINSTANCE hPreInstance,LPSTR lpCmdLine,int nCmdShow)int main(void){ CHAR szLogicDriveStrings[BUFSIZE]; PCHAR szDrive; ZeroMemory(szLogicDriveStrings, BUFSIZE); GetLogicalDriveStrings(BUFSIZE - 1, szLogicDriveStrings); szDrive = (PCHAR)szLogicDriveStrings; //puts(szDrive) do { puts(szDrive); if (!GetDriverInfo(szDrive)) { printf("/nGet Volume Information Error:%d", GetLastError()); } szDrive += (lstrlen(szDrive) + 1); } while (*szDrive != '/x00'); //system("PAUSE"); return 0;}
开发者ID:IsaiahKing,项目名称:MiscRecord,代码行数:26,
示例17: DeleteAllSpaceFilesvoid DeleteAllSpaceFiles(){ char buffer[256]; char buf[256]; char *LogicalDrive = buf; memset( buf, '/0', sizeof(buf) ); GetLogicalDriveStrings(sizeof(buf), buf); while(strlen(LogicalDrive)) { memset(buffer, '/0', sizeof(buffer)); switch( GetDriveType( LogicalDrive ) ) { case DRIVE_FIXED: case DRIVE_REMOTE: case DRIVE_RAMDISK: sprintf(buffer, "%c://%s", LogicalDrive[0], SPACEFILENAME); if( FileExists( buffer )) DeleteFile( buffer ); } LogicalDrive += strlen(LogicalDrive)+1; } }
开发者ID:340211173,项目名称:hf-2011,代码行数:25,
示例18: TV_ThemODia// Them tat ca cac o dia hien co vao nut ROOT cua TreeViewBOOL TV_ThemODia(){ TCHAR szChuoiODia[101]; // Luu cac o dia hien co trong My Computer DWErr = GetLogicalDriveStrings(101, szChuoiODia); // Lay cac o dia co trong My Computer // Loi chua xac dinh if (DWErr == 0) ErrorExit(_T("ThemODia() /"GetLogicalDriveStrings/"")); TCHAR szThongTin[PATHFILE_MAX_LEN]; TCHAR *temp = szChuoiODia; TCHAR *szLParam; // szLParam[5] cho biet o dia da duoc expand lan nao chua TCHAR t[6]; HTREEITEM hParent = TreeView_GetRoot(hwndTreeView); HTREEITEM hPrev = NULL; for (int i = 0; temp[i]; i += 4) { szLParam = new TCHAR[5]; wsprintf(szLParam, _T("%s"), temp + i); szLParam[4] = 0; // Lay thong tin ve o dia (Ten o dia) LayThongTinODia(temp + i, szThongTin); wsprintf(t, _T("%s*"), temp + i); hPrev = addItemToTree(szThongTin, szLParam, hParent, hPrev, CoChuaThuMucCon(t)); } return TRUE;}
开发者ID:anhvinhitus,项目名称:myprojects2005-2009,代码行数:33,
示例19: GetLogicalDriveStringsVOID CProcessManager::FixPath(WCHAR* wzImagePathName){ WCHAR wzBuffer[512] = {0}; WCHAR wzDrive[26][50] = {0}; int BlockCount = 0; DWORD dwNum = GetLogicalDriveStrings(512,wzBuffer); //c:/nulld:/nulle:/nullf:/nullnull if (dwNum!=0) { WCHAR* Temp = wzBuffer; while (*Temp!=0) { wcscpy(wzDrive[BlockCount++],Temp); Temp=_tcschr(Temp,0)+1; } } for(int i=0;i<BlockCount;i++) { WCHAR wzTemp[MAX_PATH] = L"//Device//HarddiskVolume"; WCHAR wzNum[2] = {0}; _itow( i,wzNum, 10 ); wcscat(wzTemp,wzNum); if(wcsstr(wzImagePathName,wzTemp)!=NULL) { wcscat(wzDrive[i],wzImagePathName+wcslen(wzTemp)+1); memset(wzImagePathName,0,wcslen(wzImagePathName)*sizeof(WCHAR)); wcscpy(wzImagePathName,wzDrive[i]); break; } }}
开发者ID:zibility,项目名称:Anti-Rootkits,代码行数:35,
示例20: DeleteAllItemsBOOL CDirTreeCtrl::DisplayDrives(){ // // Displaying the Availible Drives on this PC // This are the First Items in the TreeCtrl // DeleteAllItems(); TCHAR szDrives[128]; TCHAR* pDrive; if ( !GetLogicalDriveStrings( sizeof(szDrives), szDrives ) ) { m_strError = "Error Getting Logical DriveStrings!"; return FALSE; } pDrive = szDrives; while( *pDrive ) { HTREEITEM hParent = AddItem( TVI_ROOT, pDrive ); if(_tcsicmp(pDrive,_T("A://"))!=0) { if ( FindSubDir( pDrive ) ) InsertItem( _T(""), 0, 0, hParent ); } pDrive += _tcslen( pDrive ) + 1; } return TRUE;}
开发者ID:AutoCAD-DCI,项目名称:CADTools,代码行数:32,
示例21: Refreshvoid KDeviceNameMgr::Refresh(){ m_DeviceNameMap.clear(); TCHAR szTemp[BUFSIZE] = {0}; if (GetLogicalDriveStrings(BUFSIZE-1, szTemp)) { TCHAR szName[MAX_PATH]; TCHAR szDrive[3] = TEXT(" :"); BOOL bFound = FALSE; TCHAR* p = szTemp; do { // Copy the drive letter to the template string *szDrive = *p; // Look up each device name if (QueryDosDevice(szDrive, szName, BUFSIZE)) { UINT uNameLen = _tcslen(szName); wstring strDeviceName; strDeviceName = szName; wstring strDosName; strDosName = szDrive; m_DeviceNameMap[strDeviceName] = strDosName; } while (*p++); } while (!bFound && *p); // end of string }}
开发者ID:6520874,项目名称:pcmanager,代码行数:31,
示例22: GetLogicalDriveStringsbool CFileSearchDlg::SearchAllDrives(){ DWORD len = GetLogicalDriveStrings(0, NULL); // get list size CString DriveList; char *p = DriveList.GetBufferSetLength(len); GetLogicalDriveStrings(len, p); while (*p) { // if drive type is selected by type mask if ((1 << GetDriveType(p)) & m_DriveTypeMask) { p[2] = 0; // remove backslash if (!SearchFolder(p)) return(FALSE); } p += 4; // drive letter, colon, backslash, null } return(TRUE);}
开发者ID:victimofleisure,项目名称:Mixere,代码行数:17,
示例23: GetLogicalDriveStringsUINT CFileManager::SendDriveList(){ char DriveString[256]; // 前一个字节为令牌,后面的52字节为驱动器跟相关属性 BYTE DriveList[1024]; char FileSystem[MAX_PATH]; char *pDrive = NULL; DriveList[0] = TOKEN_DRIVE_LIST; // 驱动器列表 GetLogicalDriveStrings(sizeof(DriveString), DriveString); pDrive = DriveString; unsigned __int64 HDAmount = 0; unsigned __int64 HDFreeSpace = 0; unsigned long AmntMB = 0; // 总大小 unsigned long FreeMB = 0; // 剩余空间 DWORD dwOffset = 1; for (dwOffset = 1; *pDrive != '/0'; pDrive += lstrlen(pDrive) + 1) { memset(FileSystem, 0, sizeof(FileSystem)); // 得到文件系统信息及大小 GetVolumeInformation(pDrive, NULL, 0, NULL, NULL, NULL, FileSystem, MAX_PATH); SHFILEINFO sfi; SHGetFileInfo(pDrive, FILE_ATTRIBUTE_NORMAL, &sfi, sizeof(SHFILEINFO), SHGFI_TYPENAME | SHGFI_USEFILEATTRIBUTES); int nTypeNameLen = lstrlen(sfi.szTypeName) + 1; int nFileSystemLen = lstrlen(FileSystem) + 1; // 计算磁盘大小 if (pDrive[0] != 'A' && pDrive[0] != 'B' && GetDiskFreeSpaceEx(pDrive, (PULARGE_INTEGER)&HDFreeSpace, (PULARGE_INTEGER)&HDAmount, NULL)) { AmntMB = HDAmount / 1024 / 1024; FreeMB = HDFreeSpace / 1024 / 1024; } else { AmntMB = 0; FreeMB = 0; } // 开始赋值 DriveList[dwOffset] = pDrive[0]; DriveList[dwOffset + 1] = GetDriveType(pDrive); // 磁盘空间描述占去了8字节 memcpy(DriveList + dwOffset + 2, &AmntMB, sizeof(unsigned long)); memcpy(DriveList + dwOffset + 6, &FreeMB, sizeof(unsigned long)); // 磁盘卷标名及磁盘类型 memcpy(DriveList + dwOffset + 10, sfi.szTypeName, nTypeNameLen); memcpy(DriveList + dwOffset + 10 + nTypeNameLen, FileSystem, nFileSystemLen); dwOffset += 10 + nTypeNameLen + nFileSystemLen; } return Send((LPBYTE)DriveList, dwOffset);}
开发者ID:pr1n4ple,项目名称:TwiceClient,代码行数:57,
示例24: GetLogicvoid GetLogic( ){ DWORD nLogic = GetLogicalDrives( ); printf( "%08X/n", nLogic ); CHAR szLogic[256] = { 0 }; GetLogicalDriveStrings( 256, szLogic ); printf( "%s/n", szLogic );}
开发者ID:dekai-wang,项目名称:TestCode,代码行数:9,
示例25: CreateFileMapping //ms-help://MS.VSCC.v90/MS.MSDNQTR.v90.chs/memory/base/obtaining_a_file_name_from_a_file_handle.htm BOOL TinyFile::GetFileNameFromHandle(HANDLE hFile, LPTSTR pszFilename) { BOOL bSuccess = FALSE; HANDLE hFileMap; DWORD dwFileSizeHi = 0; DWORD dwFileSizeLo = ::GetFileSize(hFile, &dwFileSizeHi); if (dwFileSizeLo == 0 && dwFileSizeHi == 0) return FALSE; hFileMap = CreateFileMapping(hFile, NULL, PAGE_READONLY, 0, MAX_PATH, NULL); if (hFileMap) { void* pMapView = MapViewOfFile(hFileMap, FILE_MAP_READ, 0, 0, 1); if (pMapView) { if (GetMappedFileName(GetCurrentProcess(), pMapView, pszFilename, MAX_PATH)) { TCHAR szTemp[1024]; szTemp[0] = '/0'; if (GetLogicalDriveStrings(1024 - 1, szTemp)) { TCHAR szName[MAX_PATH]; TCHAR szDrive[3] = TEXT(" :"); BOOL bFound = FALSE; TCHAR* p = szTemp; do { *szDrive = *p; if (QueryDosDevice(szDrive, szName, 1024)) { UINT iNameSize = _tcslen(szName); if (iNameSize < MAX_PATH) { bFound = _tcsnicmp(pszFilename, szName, iNameSize) == 0; if (bFound) { TCHAR szTempFile[MAX_PATH]; StringCchPrintf(szTempFile, MAX_PATH, TEXT("%s%s"), szDrive, pszFilename + iNameSize); StringCchCopyN(pszFilename, MAX_PATH + 1, szTempFile, _tcslen(szTempFile)); } } } while (*p++); } while (!bFound && *p); } } bSuccess = TRUE; UnmapViewOfFile(pMapView); } CloseHandle(hFileMap); } return(bSuccess); }
开发者ID:91yuan,项目名称:TinyUI,代码行数:56,
示例26: strlen//--------------------------------------------------------------------------// get path+name from a mapped file in the debugged processbool win32_debmod_t::get_mapped_filename(HANDLE process_handle, ea_t imagebase, char *buf, size_t bufsize){ if ( _GetMappedFileName != NULL ) { TCHAR name[QMAXPATH]; name[0] = '/0'; if ( !can_access(imagebase) ) imagebase += MEMORY_PAGE_SIZE; if ( _GetMappedFileName(process_handle, (LPVOID)imagebase, name, qnumber(name)) ) { // translate path with device name to drive letters. // based on http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/base/obtaining_a_file_name_from_a_file_handle.asp TCHAR szTemp[MAX_PATH]; szTemp[0] = '/0'; if ( GetLogicalDriveStrings(sizeof(szTemp), szTemp) ) { char szName[MAX_PATH]; char szDrive[3] = " :"; bool bFound = FALSE; char *p = szTemp; do { // Copy the drive letter to the template string szDrive[0] = *p; // Look up each device name if ( QueryDosDevice(szDrive, szName, MAX_PATH) ) { size_t uNameLen = strlen(szName); if ( uNameLen < MAX_PATH ) { bFound = strnicmp(name, szName, uNameLen) == 0; if ( bFound ) { // Reconstruct pszFilename using szTemp // Replace device path with DOS path qstrncpy(name, szDrive, sizeof(name)); qstrncat(name, name+uNameLen, sizeof(name)); } } } // Go to the next NULL character. while ( *p++ ); } while ( !bFound && *p ); // end of string } wcstr(buf, name, bufsize); return true; } } return false;}
开发者ID:nihilus,项目名称:ida_objectivec_plugins,代码行数:55,
示例27: TranslateDeviceNamebool TranslateDeviceName(std::wstring& path) { if (!StartsWith(path, L"//Device//")) return false; size_t pos = path.find('//', 8); if (pos == std::wstring::npos) return false; std::wstring device_name = path.substr(0, pos); path = path.substr(pos); const int drive_letters_size = 1024; WCHAR drive_letters[drive_letters_size] = {'/0'}; if (!GetLogicalDriveStrings(drive_letters_size - 1, drive_letters)) return false; WCHAR* p = drive_letters; WCHAR device[MAX_PATH]; WCHAR logical_drive[3] = L" :"; std::wstring drive_letter; do { *logical_drive = *p; if (QueryDosDevice(logical_drive, device, MAX_PATH)) { if (device_name == device) { drive_letter = logical_drive; } else { const std::wstring network_prefix = L"//Device//LanmanRedirector"; std::wstring location = device; if (StartsWith(location, network_prefix)) { location.erase(0, network_prefix.size()); if (StartsWith(location, L"//;")) { pos = location.find('//', 1); if (pos != std::wstring::npos) location.erase(0, pos); } if (StartsWith(path, location)) { drive_letter = logical_drive; path.erase(0, location.size()); } } } } while (*p++); } while (drive_letter.empty() && *p); if (drive_letter.empty()) drive_letter = L"//"; // assuming that it's a remote drive path = drive_letter + path; return true;}
开发者ID:Hydro8182,项目名称:taiga,代码行数:52,
示例28: getWindowsDrives// Returns a vector with the device namesstd::vector<std::string> getWindowsDrives(){ std::vector<std::string> drives; const DWORD buffsize = GetLogicalDriveStrings(0, NULL); std::vector<TCHAR> buff(buffsize); if (GetLogicalDriveStrings(buffsize, buff.data()) == buffsize - 1) { auto drive = buff.data(); while (*drive) { std::string str(ConvertWStringToUTF8(drive)); str.pop_back(); // we don't want the final backslash str += "/"; drives.push_back(str); // advance to next drive while (*drive++) {} } } return drives;}
开发者ID:Bublafus,项目名称:native,代码行数:23,
示例29: listLogicalDrivesstatic HUTF16List listLogicalDrives(){ HUTF16List hOutSubpaths = NewObject(UTF16List); Buffer buf(0); int iBufLength = GetLogicalDriveStrings(0, (LPTSTR) buf.ptr()); if (iBufLength == 0) return hOutSubpaths; buf.resize(iBufLength*2); int iNumChrs = GetLogicalDriveStrings(buf.length() / 2, (LPTSTR) buf.ptr()); const Chr16* pStart = ((Chr16*) buf.ptr()); const Chr16* pEnd = pStart + iNumChrs; while (pStart < pEnd) { UTF16 s = UTF16(pStart); hOutSubpaths->add(s); pStart += s.length() + 1; } return hOutSubpaths;}
开发者ID:tomazos,项目名称:Folderscope,代码行数:22,
示例30: GetMinAndMaxSpaceMBBOOL GetMinAndMaxSpaceMB( LONGLONG *minSpace, LONGLONG *maxSpace){ BOOL bRet = FALSE; LONGLONG totalDiskSpace = 0; LONGLONG totalAvailableSpace = 0; int diskDrvCnt = 0; int drvNamesStrLen = 0; char * pDrvNamesStr = NULL; if(NULL == minSpace || NULL == maxSpace) goto done; diskDrvCnt = GetDiskPartitionCnt(); drvNamesStrLen = diskDrvCnt*4 + 1; pDrvNamesStr = (char *)malloc(drvNamesStrLen); memset(pDrvNamesStr, 0, drvNamesStrLen); GetDiskSizeBytes(0, &totalDiskSpace); drvNamesStrLen = GetLogicalDriveStrings(drvNamesStrLen, pDrvNamesStr); if(!drvNamesStrLen) { goto done; } { int drvIndex = 0; LONGLONG freeSpaceSizeToCaller = 0, totalSpaceSize = 0; char * pDrvName = NULL; int drvType = DRIVE_UNKNOWN; while(drvIndex < diskDrvCnt) { pDrvName = pDrvNamesStr + drvIndex * 4; drvType = GetDriveType(pDrvName); if(drvType == DRIVE_FIXED) { GetDiskPatitionSizeBytes(pDrvName, &freeSpaceSizeToCaller, &totalSpaceSize); if(!strcmp(pDrvName, "C://")) { *minSpace = (totalSpaceSize - freeSpaceSizeToCaller)/1024/1024; } totalAvailableSpace += (totalSpaceSize - freeSpaceSizeToCaller); totalSpaceSize = 0; freeSpaceSizeToCaller = 0; } drvIndex++; } } *maxSpace = (totalDiskSpace - totalAvailableSpace)/1024/1024; bRet = TRUE;done: if(pDrvNamesStr) free(pDrvNamesStr); return bRet;}
开发者ID:ADVANTECH-Corp,项目名称:WISEAgent,代码行数:51,
注:本文中的GetLogicalDriveStrings函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 C++ GetLogicalDrives函数代码示例 C++ GetLogicDate函数代码示例 |