GetLastError gibt mir keinen Fehler zurück... Das
Handle bekomm ich wie in
MSDN beschrieben durch
Delphi-Quellcode:
h:= CreateFile('\\.\C:',0,FILE_SHARE_DELETE or FILE_SHARE_READ or FILE_SHARE_WRITE,
nil,OPEN_EXISTING,FILE_FLAG_OVERLAPPED,0);
Dieses
Handle ist auch gültig.
Nebenbei mal ne Frage: Ich will ja (wie du vielleicht noch aus dem anderen Thread weißt) herausfinden wie viele Partitionen auf einer Festplatte sind und welche das dann sind. Komm ich hiermit überhaupt an mein Ziel? Hatte mal mit deiner
WMI-
Unit die Festplatten ausgelesen:
Delphi-Quellcode:
var
X: TWMIInfo;
i,j: Integer;
begin
ComputerName := '.';
WMIGetInfo(ComputerName,'root\CIMV2','','','SELECT Caption, DeviceID FROM Win32_DiskDrive',x);
if x.Instance = nil then
ShowMessage('Hat nicht geklappt');
for i:= 0 to High(x.Instance) do
for j:= 0 to High(x.Propname) do
ShowMessage(X.PropName[j] + ': ' + WMIRead(x,i,j));
Da bekomme ich auch schön die Festplatten-Namen und ID's angezeigt (ID z.B \\.\PHYSICALDRIVE0).
Dann versuche ich damit die Partitionen auszulesen nämlich so:
Delphi-Quellcode:
WMIGetInfo(ComputerName,'root\CIMV2','','','ASSOCIATORS OF {Win32_DiskDrive.DeviceID='''
+ WMIRead(x,0,1) + '''} WHERE AssocClass = Win32_DiskDriveToDiskPartition',y);
(nach diesem Vorbild):
Code:
'Use the disk drive device id to
'find associated partition
query = "ASSOCIATORS OF {Win32_DiskDrive.DeviceID='" _
& wmiDiskDrive.DeviceID & "'} WHERE AssocClass = Win32_DiskDriveToDiskPartition"
Set wmiDiskPartitions = wmiServices.ExecQuery(
query)
Aber da bekomm ich für Y immer nur nil zurück... (vgl.
Letztes Beispiel)
Gruß
Neutral General
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."