vc 磁盘相关设置
来源:百度文库 编辑:神马文学网 时间:2024/04/29 14:16:33
1 判断驱动器属性?
我们可以通过GetDriveType函数来获得驱动器的类型。UINT GetDriveType( LPCTSTR lpRootPathName // root directory ); 函数功能 判断磁盘类型 参数说明 lpRootPathName 包含了根目录路径的字符串指针 返回值 DRIVE_UNKNOWN 未知的磁盘类型 DRIVE_NO_ROOT_DIR 说明lpRootPathName是无效的 DRIVE_REMOVABLE 可移动磁盘 DRIVE_FIXED 固定磁盘 DRIVE_REMOTE 网络磁盘 DRIVE_CDROM 光驱 DRIVE_RAMDISK 为RAM #include
#includeint _tmain(int argc, _TCHAR* argv[])
{
/*
char a[] = ("ABCDEFGH"); for (int i = 0; i < 8; ++i)
{ TCHAR root[100];
swprintf(root, TEXT("%c:\\"), a[i]);
wprintf(TEXT("now root is %s\n"), root);
unsigned int ab = GetDriveType(root);*/ //取当前电脑中所有盘符的名称,写入driverstring中 CStringArray driverstring; siz_t alldriver = ::GetLogicalDriveString(0,NULL); _TCHAR *driverstr; driverstr = new _TCHAR[alldriver + sizeof(_T(""))]; if(GetLogicalDriveString(alldriver,driverstr) != driverstr -1) return; _TCHAR *pdriverstr = driverstr; siz_t alldriver = strlen(pdriverstr); while(driversize>0)
{
driverstring.Add(pdriverstr);
pdriverstr+=driversize+1;
driversize=strlen(pdriverstr); } //获得每个盘的类型 for(int i = 0 ; i< driverstring.GetSize();i++) { unsigned int ab = GetDriveType(driverstring[i]); if(ab == DRIVE_CDROM)
{
wprintf(TEXT("%s is CDROM\n"), root);
}
else if(ab == DRIVE_UNKNOWN)
{
wprintf(TEXT("%s is unknown\n"), root);
}
else if(ab == DRIVE_REMOVABLE)
{
wprintf(TEXT("%s is REMOVABLE\n"), root);
}
else if(ab == DRIVE_NO_ROOT_DIR)
{
wprintf(TEXT("%s is NO ROOT DIR\n"), root);
}
else if(ab == DRIVE_RAMDISK)
{
wprintf(TEXT("%s is RAMDISK\n"),root);
}
else if(ab == DRIVE_REMOTE)
{
wprintf(TEXT("%s is REMOTE\n"),root);
}
else if(ab == DRIVE_FIXED)
{
wprintf(TEXT("%s is FIXED\n"),root);
} } system("pause");
return 0;
} 2. 获取磁盘空间和磁盘序列号 BOOL WINAPI GetDiskFreeSpaceEx(
__in_opt LPCWSTR lpDirectoryName,
__out_opt PULARGE_INTEGER lpFreeBytesAvailableToCaller,
__out_opt PULARGE_INTEGER lpTotalNumberOfBytes,
__out_opt PULARGE_INTEGER lpTotalNumberOfFreeBytes
); lpDirectoryName是驱动器的名称。
lpFreeBytesAvailableToCaller是用户可用的磁盘空间。
lpTotalNumberOfBytes是磁盘总共的空间。
lpTotalNumberOfFreeBytes是磁盘空闲的空间。以上都是字节为单位。
BOOL GetVolumeInformation(
LPCTSTR lpRootPathName, // address of root directory of the
// file system
//根目录名称
LPTSTR lpVolumeNameBuffer, // address of name of the volume
//存放卷标名称的缓存
DWORD nVolumeNameSize, // length of lpVolumeNameBuffer
//卷标名称大小
LPDWORD lpVolumeSerialNumber, // address of volume serial number
//卷标的序列号
LPDWORD lpMaximumComponentLength,
// address of system's maximum
// filename length
//最大文件名长度
LPDWORD lpFileSystemFlags, // address of file system flags
//文件系统标志
LPTSTR lpFileSystemNameBuffer, // address of name of file system
//存放文件系统名称的缓存
DWORD nFileSystemNameSize // length of lpFileSystemNameBuffer
//存放文件系统名称的大小
); void OnInitDialog(){ CListCtrl m_disklist;
CImageList imglist;
m_disklist.SetExtendedStyle(LVS_EX_GRIDLINES);
m_disklist.InsertColumn(0,"磁盘驱动器",LVCFMT_LEFT,150);
m_disklist.InsertColumn(1,"驱动器大小",LVCFMT_LEFT,150); m_disklist.InsertColumn(2,"磁盘序列号",LVCFMT_LEFT,150);
imglist.Create(16,16,ILC_COLOR32|ILC_MASK,0,0);
imglist.Add(::AfxGetApp()->LoadIcon(IDI_DISK));
DWORD size;
size=::GetLogicalDriveStrings(0,NULL);
if(size!=0)
{
HANDLE heap=::GetProcessHeap();
LPSTR lp=(LPSTR)HeapAlloc(heap,HEAP_ZERO_MEMORY,size*sizeof(TCHAR));
::GetLogicalDriveStrings(size*sizeof(TCHAR),lp);
while(*lp!=0)
{
m_disklist.InsertItem(0,lp,0);
lp=_tcschr(lp,0)+1;
}
} ULARGE_INTEGER totalsize;
ULARGE_INTEGER freesize;
ULARGE_INTEGER availablesize; LPTSTR namebuf=new char[12];
DWORD namesize=12;
DWORD serialnumber;
DWORD maxlen;
DWORD fileflag;
LPTSTR sysnamebuf=new char[10];
DWORD sysnamesize=10;
int num=m_disklist.GetItemCount();
for(int i=0;i {
CString str,temp;
str=m_disklist.GetItemText(i,0);
::GetDiskFreeSpaceEx(str,&totalsize,&freesize,&availablesize);
temp.Format("%ld千字节",totalsize.QuadPart/1024);
m_disklist.SetItemText(i,1,temp); temp.Empty(); ::GetVolumeInformation(str,namebuf,namesize,&serialnumber,&maxlen,&fileflag,sysnamebuf,sysnamesize);
temp.Format("%x",serialnumber);
m_disklist.SetItemText(i,2,temp);
}} 3.取消磁盘共享取消默认共享需要在控制台使用net命令,例如要取消C盘的默认共享,需要使用net share
c:/del 命令。我们可以通过WinExec函数来执行关闭磁盘默认共享的net命令,该函数是在
程序中执行其他可执行文件,语法如下:
UINT WinExec(
LPCSTR lpCmdLine, // address of command line
//命令行字符串,包括其他可执行文件所调用的参数
UINT uCmdShow // window style for new application
//执行其他可执行文件时窗体的显示设置
);
如下示例代码:
CString strcmd="net.exe share F:/del";
::WinExec(strcmd,SW_HIDE); 4.磁盘格式化磁盘是计算机存储数据的一种主要介质,主要分为两种:软盘(Floppy Disk)和硬盘(Hard Disk)。
硬盘在使用之前先进行低级格式化(也称物理格式化),然后进行分区,最后进行高级格式
化(也称逻辑格式化),这样才能存储数据。软盘不需要进行前两个步骤,直接进行高级格
式化就能够使用了。通常硬盘在出厂前已经进行了低级格式化,使用前直接分区和高级格
式化即可。高级格式化操作能将磁盘中的数据清空,并且能够恢复一些逻辑性的磁盘错误,
因此常常被使用。
在程序中我们可以调用FormatDriver函数来显示格式化磁盘的对话框,该函数是Shell32.dll
文件中的函数。
语法如下:
FormatDriver(HWND hwnd,UINT drive,UINT fmtID,UINT options)
参数说明:
hwnd: 应用程序窗体句柄
drive:磁盘驱动器序号.
fmtID:格式化ID
options:格式化选项
如下示例代码:
typedef DWORD (WINAPI *MyFunc)(HWND hwnd,
UINT drive,UINT fmtID,UINT options);
HMODULE hModule=::LoadLibrary("shell32.dll");
if(hModule)
{
MyFunc FormatDriver= (MyFunc) GetProcAddress(hModule, "SHFormatDrive");
if(FormatDriver)
FormatDriver(this->GetSafeHwnd(),'F'-'A',0xFFFF,0);
}
我们可以通过GetDriveType函数来获得驱动器的类型。UINT GetDriveType( LPCTSTR lpRootPathName // root directory ); 函数功能 判断磁盘类型 参数说明 lpRootPathName 包含了根目录路径的字符串指针 返回值 DRIVE_UNKNOWN 未知的磁盘类型 DRIVE_NO_ROOT_DIR 说明lpRootPathName是无效的 DRIVE_REMOVABLE 可移动磁盘 DRIVE_FIXED 固定磁盘 DRIVE_REMOTE 网络磁盘 DRIVE_CDROM 光驱 DRIVE_RAMDISK 为RAM #include
#include
{
/*
char a[] = ("ABCDEFGH"); for (int i = 0; i < 8; ++i)
{ TCHAR root[100];
swprintf(root, TEXT("%c:\\"), a[i]);
wprintf(TEXT("now root is %s\n"), root);
unsigned int ab = GetDriveType(root);*/ //取当前电脑中所有盘符的名称,写入driverstring中 CStringArray driverstring; siz_t alldriver = ::GetLogicalDriveString(0,NULL); _TCHAR *driverstr; driverstr = new _TCHAR[alldriver + sizeof(_T(""))]; if(GetLogicalDriveString(alldriver,driverstr) != driverstr -1) return; _TCHAR *pdriverstr = driverstr; siz_t alldriver = strlen(pdriverstr); while(driversize>0)
{
driverstring.Add(pdriverstr);
pdriverstr+=driversize+1;
driversize=strlen(pdriverstr); } //获得每个盘的类型 for(int i = 0 ; i< driverstring.GetSize();i++) { unsigned int ab = GetDriveType(driverstring[i]); if(ab == DRIVE_CDROM)
{
wprintf(TEXT("%s is CDROM\n"), root);
}
else if(ab == DRIVE_UNKNOWN)
{
wprintf(TEXT("%s is unknown\n"), root);
}
else if(ab == DRIVE_REMOVABLE)
{
wprintf(TEXT("%s is REMOVABLE\n"), root);
}
else if(ab == DRIVE_NO_ROOT_DIR)
{
wprintf(TEXT("%s is NO ROOT DIR\n"), root);
}
else if(ab == DRIVE_RAMDISK)
{
wprintf(TEXT("%s is RAMDISK\n"),root);
}
else if(ab == DRIVE_REMOTE)
{
wprintf(TEXT("%s is REMOTE\n"),root);
}
else if(ab == DRIVE_FIXED)
{
wprintf(TEXT("%s is FIXED\n"),root);
} } system("pause");
return 0;
} 2. 获取磁盘空间和磁盘序列号 BOOL WINAPI GetDiskFreeSpaceEx(
__in_opt LPCWSTR lpDirectoryName,
__out_opt PULARGE_INTEGER lpFreeBytesAvailableToCaller,
__out_opt PULARGE_INTEGER lpTotalNumberOfBytes,
__out_opt PULARGE_INTEGER lpTotalNumberOfFreeBytes
); lpDirectoryName是驱动器的名称。
lpFreeBytesAvailableToCaller是用户可用的磁盘空间。
lpTotalNumberOfBytes是磁盘总共的空间。
lpTotalNumberOfFreeBytes是磁盘空闲的空间。以上都是字节为单位。
BOOL GetVolumeInformation(
LPCTSTR lpRootPathName, // address of root directory of the
// file system
//根目录名称
LPTSTR lpVolumeNameBuffer, // address of name of the volume
//存放卷标名称的缓存
DWORD nVolumeNameSize, // length of lpVolumeNameBuffer
//卷标名称大小
LPDWORD lpVolumeSerialNumber, // address of volume serial number
//卷标的序列号
LPDWORD lpMaximumComponentLength,
// address of system's maximum
// filename length
//最大文件名长度
LPDWORD lpFileSystemFlags, // address of file system flags
//文件系统标志
LPTSTR lpFileSystemNameBuffer, // address of name of file system
//存放文件系统名称的缓存
DWORD nFileSystemNameSize // length of lpFileSystemNameBuffer
//存放文件系统名称的大小
); void OnInitDialog(){ CListCtrl m_disklist;
CImageList imglist;
m_disklist.SetExtendedStyle(LVS_EX_GRIDLINES);
m_disklist.InsertColumn(0,"磁盘驱动器",LVCFMT_LEFT,150);
m_disklist.InsertColumn(1,"驱动器大小",LVCFMT_LEFT,150); m_disklist.InsertColumn(2,"磁盘序列号",LVCFMT_LEFT,150);
imglist.Create(16,16,ILC_COLOR32|ILC_MASK,0,0);
imglist.Add(::AfxGetApp()->LoadIcon(IDI_DISK));
DWORD size;
size=::GetLogicalDriveStrings(0,NULL);
if(size!=0)
{
HANDLE heap=::GetProcessHeap();
LPSTR lp=(LPSTR)HeapAlloc(heap,HEAP_ZERO_MEMORY,size*sizeof(TCHAR));
::GetLogicalDriveStrings(size*sizeof(TCHAR),lp);
while(*lp!=0)
{
m_disklist.InsertItem(0,lp,0);
lp=_tcschr(lp,0)+1;
}
} ULARGE_INTEGER totalsize;
ULARGE_INTEGER freesize;
ULARGE_INTEGER availablesize; LPTSTR namebuf=new char[12];
DWORD namesize=12;
DWORD serialnumber;
DWORD maxlen;
DWORD fileflag;
LPTSTR sysnamebuf=new char[10];
DWORD sysnamesize=10;
int num=m_disklist.GetItemCount();
for(int i=0;i
CString str,temp;
str=m_disklist.GetItemText(i,0);
::GetDiskFreeSpaceEx(str,&totalsize,&freesize,&availablesize);
temp.Format("%ld千字节",totalsize.QuadPart/1024);
m_disklist.SetItemText(i,1,temp); temp.Empty(); ::GetVolumeInformation(str,namebuf,namesize,&serialnumber,&maxlen,&fileflag,sysnamebuf,sysnamesize);
temp.Format("%x",serialnumber);
m_disklist.SetItemText(i,2,temp);
}} 3.取消磁盘共享取消默认共享需要在控制台使用net命令,例如要取消C盘的默认共享,需要使用net share
c:/del 命令。我们可以通过WinExec函数来执行关闭磁盘默认共享的net命令,该函数是在
程序中执行其他可执行文件,语法如下:
UINT WinExec(
LPCSTR lpCmdLine, // address of command line
//命令行字符串,包括其他可执行文件所调用的参数
UINT uCmdShow // window style for new application
//执行其他可执行文件时窗体的显示设置
);
如下示例代码:
CString strcmd="net.exe share F:/del";
::WinExec(strcmd,SW_HIDE); 4.磁盘格式化磁盘是计算机存储数据的一种主要介质,主要分为两种:软盘(Floppy Disk)和硬盘(Hard Disk)。
硬盘在使用之前先进行低级格式化(也称物理格式化),然后进行分区,最后进行高级格式
化(也称逻辑格式化),这样才能存储数据。软盘不需要进行前两个步骤,直接进行高级格
式化就能够使用了。通常硬盘在出厂前已经进行了低级格式化,使用前直接分区和高级格
式化即可。高级格式化操作能将磁盘中的数据清空,并且能够恢复一些逻辑性的磁盘错误,
因此常常被使用。
在程序中我们可以调用FormatDriver函数来显示格式化磁盘的对话框,该函数是Shell32.dll
文件中的函数。
语法如下:
FormatDriver(HWND hwnd,UINT drive,UINT fmtID,UINT options)
参数说明:
hwnd: 应用程序窗体句柄
drive:磁盘驱动器序号.
fmtID:格式化ID
options:格式化选项
如下示例代码:
typedef DWORD (WINAPI *MyFunc)(HWND hwnd,
UINT drive,UINT fmtID,UINT options);
HMODULE hModule=::LoadLibrary("shell32.dll");
if(hModule)
{
MyFunc FormatDriver= (MyFunc) GetProcAddress(hModule, "SHFormatDrive");
if(FormatDriver)
FormatDriver(this->GetSafeHwnd(),'F'-'A',0xFFFF,0);
}
vc 磁盘相关设置
vc 系统启动相关设置
设置磁盘引导顺序
NTFS磁盘权限设置图解
VC环境设置
VC设置对话框背景图的代码
Symbian编程VC开发环境设置(一)
Symbian编程VC开发环境设置(二)
Symbian编程VC开发环境设置
Symbian编程VC开发环境设置(一)
Symbian编程VC开发环境设置(二)
湖南大学网络信息中心 - IPv6服务及相关设置
vc++ 变量的全部数据类型以及相关类型含义
电脑显示器的相关设置与常见故障排除方法
XV6700使用GPS导航的相关设置(图)
XV6700使用GPS导航的相关设置(图)
联想Y460笔记本BIOS相关介绍与设置图解
Ubuntu安全设置指南及相关工具介绍
无线网络安装详解:解决各类相关设置问题
动态磁盘
磁盘重组
磁盘清洗
磁盘管理工具
隐藏磁盘