Die Seriennummer einer Festplatte(C++)
-
nein, cih will nur wissen wieso die Funktion:
GetVolumeInformationW() als Path keine (LPWSTR)path nimmt(Beispiel: (LPWSTR)"C:")
-
Weil "C:" kein LPCWSTR sondern ein LPCSTR ist. L"C:" wäre die Wide-Variante davon.
Aus einem LPWSTR einzelne Chars rauszuholen und die Compilerwarnungen durch Casts zu unterdrücken ist übrigens nicht die feine englische Art. Ein LPWSTR ist nämlich ein String aus wchar_t.
-
koschka schrieb:
nein, cih will nur wissen wieso die Funktion:
GetVolumeInformationW() als Path keine (LPWSTR)path nimmt(Beispiel: (LPWSTR)"C:")
Weil das
(LPWSTR)"C:")
ein grobes Problem ist!
Du castest ein const char* (der von einem char[] stammt) in ein const wchar_t*. Leider geht die Konversion zwischen char* und wchar_t* nicht so einfach.Eine Möglichkeit ist die Literale gerade mit wchar_t zu definieren. Das geht so:
L"C:"Noch die bessere Möglichkeit ist die Literale abhängig von deiner Projekt Einstellung entweder mit char* oder wchar_t* anzugeben. Das geht so: _T("C:")
Eine andere Möglichkeit wäre eine echte Konversion vorzunehem, mit folgenden Funktionen:
http://msdn.microsoft.com/en-us/library/bb202786.aspx
http://msdn.microsoft.com/en-us/library/aa450989.aspx
-
Konversion
Denglisch kann ich auch.
-
und wennn mein drive[i] vom Type LPWSTR ist, wie kann ich dafür die Methode:
getVolumeInformationW() anwenden?
Ich schreibe nicht direkt "C:\", die ist bei mir in drive[i] gespeichert.
-
isOk = GetVolumeInformationW(drive[i], 0, 256, &serialNumber, 0, 0,0, 256);
-
drive[i] ist ein wchar_t, ein einzelnes Zeichen.
&drive[i] oder (drive + i) ist die Adresse dieses (und der darauffolgenden) Zeichens und ein LPWSTR.
-
Also wie ich verstehe es sollte gehen:
GetVolumeInformation(drive[i],0,256,&serialNumber,0,0,0,256);
erste Parameter soll LPWSTR sein und er ist es auch. Ich verstehe nicht wieso habe ich eine 0 als Rückgabe?
-
ich habe das Problem jetzt gelöst. Dieser Path soll solche Struktur haben "C:\\" und ich hatte "C:".Das war mein Problem.
-
Dieser Thread wurde von Moderator/in rüdiger aus dem Forum Rund um die Programmierung in das Forum WinAPI verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.