2010-08-20 2 views

Antwort

6

Verwenden Sie GetFileAttributes.

Edit: Sie auch SHGetFileInfo überprüfen

+0

Aber wie zu überprüfen ist Dateipfad eine Festplatte? – na1s

+0

Einfach, eine Festplatte ist ein Pfad, der mit einem Doppelpunkt endet – mmonem

+0

Ich denke, dass es möglich ist, durch WINAPI zu überprüfen – na1s

2

kann Findfirstfile versuchen:

http://msdn.microsoft.com/en-us/library/aa364418%28v=VS.85%29.aspx

Sobald Sie die Funddaten haben (wie das zweite Argument diese Funktion übergeben):

if(result->dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) 
{ 
    //file is a directory 
} 
else 
{ 
    //file is not a directory 
} 

, auch zu sehen, ob etwas ein Volumen , könnte etwas versuchen wie:

if(result->dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT) 
{ 
    if(result->dwReserved0 == IO_REPARSE_TAG_MOUNT_POINT) 
    { 
     //path is a volume; try using GetVolumeNameForVolumeMountPoint for info 
    } 
} 

HTH

+0

Etwas anderes, das nützlich sein könnte: http://api.farmanager.com/en/winapi/win32_find_data.html [Erklärung der Struktur WIN32_FIND_DATA]. – cubic1271

+0

Aber wie zu überprüfen ist Dateipfad eine Festplatte? – na1s

+0

Sehen Sie, ob der Pfad einen Laufwerksbuchstaben davor hat? Alle UNCs haben die Form "\\ Server \ Freigabe \ Dateipfad" Kein Laufwerksbuchstabe. – JustBoo

1

Prüfen Sie, ob der Pfad einen Laufwerksbuchstaben vor ihm hat? Alle UNCs haben die Form "\\ Server \ Freigabe \ Dateipfad" Kein Laufwerksbuchstabe.

Aus Neugier habe ich das nachgeschlagen. Basierend auf diesem MSDN Artikel Naming Files, Paths, and Namespaces, scheint es, dass mein Rat ist genau, wie es heißt, es sollte getan werden.

+0

Beachten Sie, dass Laufwerksbuchstaben manchmal vor UNC-Pfaden zulässig sind: http: //blogs.msdn. com/b/oldnewthing/archiv/2005/11/22/495740.aspx –

Verwandte Themen