带映射驱动器的Windows - _stat()无法检测到文件的存在

时间:2013-04-05 07:14:04

标签: windows visual-c++ path stat

摘要: _stat()函数表示当驱动器号映射到UNC路径时没有现有文件。

详细信息:在Windows系统上,有像

这样的UNC路径
\\computer\sharename\disk_M\the_subdir\file.txt

并以这种方式映射:

net use M: \\computer\sharename\disk_M

然后可以file.txt访问M:\the_subdir\file.txt,我可以在编辑器中看到它的内容。

问题是我需要测试程序中存在的文件。我使用以下功能:

bool isfile(const std::string & path)
{
    struct _stat stat;

    if (_stat(path.c_str(), &stat))
        return false;                   // the call returns -1 with errno ENOENT

    return (stat.st_mode & _S_IFREG) != 0;
}

调试时,我发现_stat调用FindFirstFile函数:

    /* Call Find Match File */
    findhandle = FindFirstFile((_TSCHAR *)name, &findbuf);
    if ( findhandle == INVALID_HANDLE_VALUE ) {
        _TSCHAR * pBuf = NULL;

...它无法在此处找到文件。

有什么问题?我究竟做错了什么?如何增强对文件存在的检测? (代码在本地管理员进行驱动器映射的环境中运行,我无法更改配置。)

0 个答案:

没有答案