-
Notifications
You must be signed in to change notification settings - Fork 1
/
diskinfo.cpp
48 lines (42 loc) · 808 Bytes
/
diskinfo.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
/*!
* \file diskinfo.cpp
* \author runsisi@163.com
* \date 2011/11/23
*/
#include "stdafx.h"
#include <list>
#include <string>
#include "diskinfo.h"
LONG 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;
}
LONG ParseDriveString(drv_list_t& l, LPTSTR lpBuffer)
{
if (!lpBuffer)
{
return ERROR_INVALID_PARAMETER;
}
TCHAR* curr = lpBuffer;
int i = 0;
TCHAR tszDrv[4] = {0};
tstring tstrDrv;
while (*curr)
{
while (*curr)
{
tszDrv[i++] = *curr++;
}
curr++;
tszDrv[i] = 0;
i = 0;
tstrDrv = tszDrv;
l.push_back(tstrDrv);
}
return ERROR_SUCCESS;
}