DriveGetSerial Problem

  • Moin,

    ich habe ein selten dämliches Problem... Es geht um die Funktion DriveGetSerial. Ich habe eine Funktion in C++, welche ich nach AutoIt portieren möchte. Das funktioniert soweit ganz gut, jedoch zeigt mit AutoIt etwas anderes an, als das Original:

    Code
    GetVolumeInformationA(
          lpRootPathName,
          lpVolumeNameBuffer,
          MAX_PATH + 1,
          &lpVolumeSerialNumber, 
          0, 0,
          lpFileSystemNameBuffer,
          MAX_PATH + 1))

    Lasse ich mir nun lpVolumeSerialNumber ausgeben, ist das Ergebnis ein anderes als

    [autoit]

    DriveGetSerial(@HomeDrive)

    [/autoit]

    Weiß irgendwer, warum?

    Einmal editiert, zuletzt von SoftCreatR (15. April 2012 um 17:44)

  • Vergleiche einfach mal:

    [autoit]

    Global $s_Drive = "C:\"

    [/autoit][autoit][/autoit][autoit]

    Global $a_Ret = DllCall("kernel32.dll", "int", "GetVolumeInformationA", _
    "str", $s_Drive, _
    "str", "", _
    "DWORD", 256, _
    "DWORD*", 0, _
    "DWORD*", 0, _
    "DWORD*", 0, _
    "str", "", _
    "DWORD", 256)

    [/autoit][autoit][/autoit][autoit]

    MsgBox(0, "", 'DriveGetSerial("' & $s_Drive & '") -> ' & DriveGetSerial($s_Drive) & @CRLF & _
    'GetVolumeInformation -> ' & $a_Ret[4])

    [/autoit]
  • Stimmen beide überein.

    Also prinzipiell gehts darum, ein bereits bestehendes Programm zu portieren d.h. ich kann an dem, was besteht, nichts verändern. Witzigerweise generieren die Versionen der Anwendung sowohl in Delphi, als auch C# und C++ das Selbe, aber allesamt etwas anderes als die Version in AutoIT. Daher bin ich auch etwas irritiert.

    Einmal editiert, zuletzt von SoftCreatR (15. April 2012 um 17:43)

  • Nein :) Das ist schon richtig so :D Ich bin aber zu dem Ergebnis gekommen, dass hier kein Problem seitens AutoIT vorliegt. Danke dennoch für eure Antworten.