// Windows/FileName.h
#ifndef __WINDOWS_FILE_NAME_H
#define __WINDOWS_FILE_NAME_H
#include "../Common/MyString.h"
namespace NWindows {
namespace NFile {
namespace NName {
int FindSepar(const wchar_t *s) throw ();
#ifndef USE_UNICODE_FSTRING
int FindSepar(const FChar *s) throw ();
#endif
void NormalizeDirPathPrefix(FString &dirPath); // ensures that it ended with '\\', if dirPath is not epmty
void NormalizeDirPathPrefix(UString &dirPath);
bool IsDrivePath(const wchar_t *s) throw (); // first 3 chars are drive chars like "a:\\"
bool IsAltPathPrefix(CFSTR s) throw (); /* name: */
#if defined (_WIN32) && !defined (UNDER_CE)
extern const char * const kSuperPathPrefix; /* \\?\ */
const unsigned kDevicePathPrefixSize = 4 ;
const unsigned kSuperPathPrefixSize = 4 ;
const unsigned kSuperUncPathPrefixSize = kSuperPathPrefixSize + 4 ;
bool IsDevicePath(CFSTR s) throw (); /* \\.\ */
bool IsSuperUncPath(CFSTR s) throw (); /* \\?\UNC\ */
bool IsNetworkPath(CFSTR s) throw (); /* \\?\UNC\ or \\SERVER */
/* GetNetworkServerPrefixSize() returns size of server prefix:
\ \ ? \ UNC \ SERVER \
\ \ SERVER \
in another cases it returns 0
*/
unsigned GetNetworkServerPrefixSize(CFSTR s) throw ();
bool IsNetworkShareRootPath(CFSTR s) throw (); /* \\?\UNC\SERVER\share or \\SERVER\share or with slash */
bool IsDrivePath_SuperAllowed(CFSTR s) throw (); // first chars are drive chars like "a:\" or "\\?\a:\"
bool IsDriveRootPath_SuperAllowed(CFSTR s) throw (); // exact drive root path "a:\" or "\\?\a:\"
bool IsDrivePath2(const wchar_t *s) throw (); // first 2 chars are drive chars like "a:"
// bool IsDriveName2(const wchar_t *s) throw(); // is drive name like "a:"
bool IsSuperPath(const wchar_t *s) throw ();
bool IsSuperOrDevicePath(const wchar_t *s) throw ();
#ifndef USE_UNICODE_FSTRING
bool IsDrivePath2(CFSTR s) throw (); // first 2 chars are drive chars like "a:"
// bool IsDriveName2(CFSTR s) throw(); // is drive name like "a:"
bool IsDrivePath(CFSTR s) throw ();
bool IsSuperPath(CFSTR s) throw ();
bool IsSuperOrDevicePath(CFSTR s) throw ();
/* GetRootPrefixSize() returns size of ROOT PREFIX for cases:
\
\ \ . \
C : \
\ \ ? \ C : \
\ \ ? \ UNC \ SERVER \ Shared \
\ \ SERVER \ Shared \
in another cases it returns 0
*/
unsigned GetRootPrefixSize(CFSTR s) throw ();
#endif
int FindAltStreamColon(CFSTR path) throw ();
#endif // _WIN32
bool IsAbsolutePath(const wchar_t *s) throw ();
unsigned GetRootPrefixSize(const wchar_t *s) throw ();
#ifdef WIN_LONG_PATH
const int kSuperPathType_UseOnlyMain = 0 ;
const int kSuperPathType_UseOnlySuper = 1 ;
const int kSuperPathType_UseMainAndSuper = 2 ;
int GetUseSuperPathType(CFSTR s) throw ();
bool GetSuperPath(CFSTR path, UString &superPath, bool onlyIfNew);
bool GetSuperPaths(CFSTR s1, CFSTR s2, UString &d1, UString &d2, bool onlyIfNew);
#define USE_MAIN_PATH (__useSuperPathType != kSuperPathType_UseOnlySuper)
#define USE_MAIN_PATH_2 (__useSuperPathType1 != kSuperPathType_UseOnlySuper && __useSuperPathType2 != kSuperPathType_UseOnlySuper)
#define USE_SUPER_PATH (__useSuperPathType != kSuperPathType_UseOnlyMain)
#define USE_SUPER_PATH_2 (__useSuperPathType1 != kSuperPathType_UseOnlyMain || __useSuperPathType2 != kSuperPathType_UseOnlyMain)
#define IF_USE_MAIN_PATH int __useSuperPathType = GetUseSuperPathType(path); if (USE_MAIN_PATH)
#define IF_USE_MAIN_PATH_2(x1, x2) \
int __useSuperPathType1 = GetUseSuperPathType(x1); \
int __useSuperPathType2 = GetUseSuperPathType(x2); \
if (USE_MAIN_PATH_2)
#else
#define IF_USE_MAIN_PATH
#define IF_USE_MAIN_PATH_2(x1, x2)
#endif // WIN_LONG_PATH
bool GetFullPath(CFSTR dirPrefix, CFSTR path, FString &fullPath);
bool GetFullPath(CFSTR path, FString &fullPath);
}}}
#endif
Messung V0.5 in Prozent C=84 H=100 G=92
¤ Dauer der Verarbeitung: 0.18 Sekunden
(vorverarbeitet am 2026-10-04)
¤
*© Formatika GbR, Deutschland