1

次のような UNC パスがあれば、という印象を受けました。

\\SRVR-A\Home\UserA\Documents\TestFolder

MAX_PATHの制限を超えて拡張したかったので、これを行うことができました:

\\?\UNC\SRVR-A\Home\UserA\Documents\TestFolder

しかし、Windows XP で次のコマンドを実行すると、エラー コードで失敗しますERROR_INVALID_NAME

TCHAR buffDummy;
DWORD dwNeededLn = ::GetLongPathName(
    L"\\\\?\\UNC\\SRVR-A\\Home\UserA\\Documents\\TestFolder",
    &buffDummy, 0);
if(dwNeededLn == 0)
{
    //Error
    int nErrorCode = ::GetLastError();
}

何か不足していますか?

PS。そのフォルダーは存在し、\\SRVR-A\Home\UserA\Documents\TestFolder代わりに存在する場合、API は正常に動作します。

4

2 に答える 2

1

ヒントは実際には MSDN ページからの引用にあります。

リモート ファイル システムでは、基盤となるファイル システムがわかりません。短いファイル名を生成する方法が何であるかを推測することはできません。また、そのような概念があるとしても (結局のところ、実際には Windows 固有の概念です)。

したがって、GetLongPathNameまったく機能することが期待されるべきです。場合によってはうまくいくように見えるかもしれませんが、それはおそらく不幸な事故です. システムが十分に似ている場合、ローカルルールをリモート名に適用することはうまくいくかもしれません.

于 2014-06-06T08:40:46.473 に答える