window文件API编译错误问题
#define _WIN32_WINNT 0x500
#include <windows.h>
#include <stdio.h>
#include <tchar.h>
#define BUFSIZE MAX_PATH
#define FILESYSNAMEBUFSIZE MAX_PATH
BOOL ProcessVolumeMountPoint (HANDLE hPt,
TCHAR *PtBuf, DWORD dwPtBufSize,
TCHAR *Buf)
{
BOOL bFlag; // 结果
TCHAR Path[BUFSIZE]; // 全路径
TCHAR Target[BUFSIZE]; // 挂载点设备
printf ("\tVolume mount point found is \"%s\"\n", PtBuf);
lstrcpy (Path, Buf);
lstrcat (Path, PtBuf);
bFlag = GetVolumeNameForVolumeMountPoint(Path,Target,BUFSIZE);
if (!bFlag)
printf ("\tAttempt to get volume name for %s failed.\n", Path);
else
printf ("\tTarget of the volume mount point is %s.\n", Target);
bFlag = FindNextVolumeMountPoint(
hPt, PtBuf, dwPtBufSize );
return (bFlag);
}
BOOL ProcessVolume (HANDLE hVol, TCHAR *Buf, DWORD iBufSize)
{
BOOL bFlag; // 返回标志
HANDLE hPt; // 卷句柄
TCHAR PtBuf[BUFSIZE]; // 挂载点路径
DWORD dwSysFlags; // 文件系统标记
TCHAR FileSysNameBuf[FILESYSNAMEBUFSIZE];
printf ("Volume found is \"%s\".\n", Buf);
// 是否NTFS
GetVolumeInformation( Buf, NULL, 0, NULL, NULL,
&dwSysFlags, FileSysNameBuf,
FILESYSNAMEBUFSIZE);
if (! (dwSysFlags & FILE_SUPPORTS_REPARSE_POINTS))
{
printf ("\tThis file system does not support volume mount points.\n");
}
else
{
// 本卷中的挂载点
hPt = FindFirstVolumeMountPoint(
Buf, // 卷的跟跟踪
PtBuf, // 挂载点路径
BUFSIZE
);
if (hPt == INVALID_HANDLE_VALUE)
{
printf ("\tNo volume mount points found!\n");
}
else
{
// 处理挂载点
bFlag = ProcessVolumeMountPoint (hPt,
PtBuf,
BUFSIZE,
Buf);
// 循环
while (bFlag)
bFlag =
ProcessVolumeMountPoint (hPt, PtBuf, BUFSIZE, Buf);
// 结束
FindVolumeMountPointClose(hPt);
}
}
// 下一个
bFlag = FindNextVolume(
hVol, Buf, iBufSize);
return (bFlag);
}
int GetMountPoint(void)
{
TCHAR buf[BUFSIZE]; // 卷标识符
HANDLE hVol; // 卷句柄
BOOL bFlag; // 结果标志
printf("Volume mount points info of this computer:\n\n");
// 打开卷
hVol = FindFirstVolume (buf, BUFSIZE );
if (hVol == INVALID_HANDLE_VALUE)
{
printf ("No volumes found!\n");
return (-1);
}
bFlag = ProcessVolume (hVol, buf, BUFSIZE);
while (bFlag)
{
bFlag = ProcessVolume (hVol, buf, BUFSIZE);
}
bFlag = FindVolumeClose( hVol );
return (bFlag);
}
void Usage (PCHAR argv)
{
printf( "\n\n\t%s, mount a volume at a mount point.\n", argv );
printf( "\tFor example, \"mount D:\\mnt\\drives\\ E:\\\"\n" );
}
int main(int argc, PCHAR argv[])
{
BOOL bFlag;
CHAR Buf[BUFSIZE];
if( argc != 3 )
{
GetMountPoint();
Usage( argv[0] );
return( -1 );
}
bFlag = GetVolumeNameForVolumeMountPoint(
argv[2], // 输入挂载点或目录
Buf, // 输出卷名
BUFSIZE
);
if (bFlag != TRUE)
{
printf( "Retrieving volume name for %s failed.\n", argv[2] );
return (-2);
}
printf( "Volume name of %s is %s\n", argv[2], Buf );
bFlag = SetVolumeMountPoint(
argv[1], // 挂载点
Buf // 需要挂载的卷
);
if (!bFlag)
{
printf ("Attempt to mount %s at %s failed. error code is\n",
argv[2], argv[1], GetLastError());
}
return (bFlag);
}
我用的是VC++6.0,编译的时候出现了10个错误,都是显示文件的API没定义,查了MSDN也说预处理#define _WIN32_WINNT 0x500这条宏语句,可以定义后也出错啊
...全文
相关推荐
Go语言 window-api
window平台上,利用谷歌的Go语言开发应用的必备api包,本资源只是window平台的api!Linux系统的开发者绕行,谢谢。
MFC_Window SDK for Windows 8.1.rar
解决vs2013创建MFC失败问题
window下编译好的ffmpeg.exe文件
windows下编译好的ffmpeg,下载可以直接使用。。
libtorrent源码(windows编译使用)
网上大部分libtorrrent源码只能在Linux上编译 现提供能在Windows编译使用的libtorrrent源码
解决rt.jar受限问题
不知道你是否碰到过这类问题,但是我遇到了,rt.jar文件受限,导致编译异常,这是解决办法。至少我是这样解决的。


进程/线程/DLL
