Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#5

AW: Übersetzung von CreateVirtualDisk

  Alt 24. Okt 2010, 11:02
@SirThornberry: Ist diese auf 0 gesetzt, dann wird vom System (Windows) eine erstellt.
Eventuell wird in C++ ja dieser Speicherbereich automatisch mit Nullen initialisiert.


Auf die Schnelle würde ich erstmal dieses auspprobieren.
Delphi-Quellcode:
var path : WideString;

path := ExtractFilePath(Paramstr(0)) + 'test.vhd';

dwRet := CreateVirtualDisk(@StorageType, PWideChar(path), ...
Dieser Abschnitt (im MSDN) scheint auch nicht zuzutreffen?
Zitat:
Remarks

If the CreateVirtualDisk function fails with an error code value of ERROR_INVALID_PARAMETER, the cause may be due to any of the following conditions:
(ich glaub zwar, daß dort alles stimmt, aber vielleicht hab'sch ja doch was übersehn)

Die Signatur scheint eigentlich auch zu stimmen.
Als Alternative könnte ich aber dennoch sowas anbieten:
Delphi-Quellcode:
function CreateVirtualDisk(
  const VirtualStorageType: VIRTUAL_STORAGE_TYPE;
  Path: PWideChar; // man könnte sogar direkt "const Path: WideString" angeben
  VirtualDiskAccessMask: VIRTUAL_DISK_ACCESS_MASK;
  SecurityDescriptor: PSECURITY_DESCRIPTOR;
  Flags: CREATE_VIRTUAL_DISK_FLAG;
  ProviderSpecificFlags: LongWord;
  const Parameters: CREATE_VIRTUAL_DISK_PARAMETERS;
  Overlapped: POverlapped;
  var Handle: THandle): LongWord; stdcall;
external 'VirtDisk.dll';
Ansonsten könnte noch ein Problem in den Records liegen, also speziell in der Speicherausrichtung.
Aber bei den hier vorkommenden Feld-Typen sollte es eigentlich nahezu egal sein, selbst wenn eine falsche Record-Ausrichtung verwendet würde (fast Alles schön einheitliche 32-Bit-Werte). Sicherheitshalber könnte man mal versuchen rauszubekommen wie groß die Records in C++ wirklich sind, bzw. man schaut mal in die passenden C-Headerfiles und versucht da was zu finden.

$2B or not $2B

Geändert von himitsu (24. Okt 2010 um 11:08 Uhr)
  Mit Zitat antworten Zitat