0

これは、名前の長さが次を超えるフォルダーを作成できるかどうかを確認するために作成したサンプル コードですMAX_PATH

wstring s = L"D:\\Test";
wstring s2 = L"\\?\D:\\datafffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffr700000000000000datafffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffr700000000000000datafffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffr700000000000000datafffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffr700000000000000datafffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffr700000000000000";

int ret = CreateDirectoryEx(s.c_str(), s2.c_str(), NULL);

int error = GetLastError();

動作しませんでした。返されるエラーはERROR_PATH_NOT_FOUNDです。コードの問題を教えてください。

注:「D:\Test」フォルダーは既存のフォルダーです。Windows 7 を使用しています。

4

3 に答える 3

5

ファイル名の最大長 (パス コンポーネント)とパスの最大長を混同する必要はありません-制限を参照してください

ファイル名の最大長は、すべてのファイル システムで 255 文字以下の Unicode 文字です。

最大パス長 32,760 Unicode 文字(各パス コンポーネントは 255 文字以下)


最初のエラーはL"\\?\"接頭辞の使用によるものでした-実際にはL"\\\\?\\"c/c++が変換"\\"されたためであるに違いありません\-しかし、これはすでに言語固有のエラーのみです。

修正する場合 - 255 文字を超えるパス コンポーネントを使用するため、エラーERROR_INVALID_NAME( NTSTATUS から変換) である必要がありますSTATUS_OBJECT_NAME_INVALID

于 2017-07-06T07:46:14.923 に答える