AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Übersetzung von CreateVirtualDisk
Thema durchsuchen
Ansicht
Themen-Optionen

Übersetzung von CreateVirtualDisk

Ein Thema von paritycheck · begonnen am 24. Okt 2010 · letzter Beitrag vom 27. Okt 2010
Antwort Antwort
Benutzerbild von himitsu
himitsu

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

AW: Übersetzung von CreateVirtualDisk

  Alt 24. Okt 2010, 10: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.

Ein Therapeut entspricht 1024 Gigapeut.

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


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:54 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz