Delphi-Quellcode:
Const
IOCTL_CHANGER_GET_PRODUCT_DATA = $00304008;
Leider komme ich immer in den Zwei, wo er mit
SysErrorMessage(GetLastError)
anzeigt. Allerdings kann ich mit der Meldung "Ungültige Funktion" nicht soviel anfangen.
Code:
#define FILE_READ_ACCESS ( 0x0001 ) // file & pipe
#define METHOD_BUFFERED 0
#define FILE_DEVICE_CHANGER 0x00000030
#define IOCTL_CHANGER_BASE FILE_DEVICE_CHANGER
#define CTL_CODE( DeviceType, Function, Method,
Access ) ( \
((DeviceType) << 16) | ((
Access) << 14) | ((Function) << 2) | (Method) \
)
#define IOCTL_CHANGER_GET_PRODUCT_DATA CTL_CODE(IOCTL_CHANGER_BASE, 0x0002, METHOD_BUFFERED, FILE_READ_ACCESS)
Rechnen wir also mal nach:
Code:
(0x00000030 << 16) | ((0x0001) << 14) | ((0x0002) << 2) | (0)
Der Wert den du schickst ist also korrekt. In diesem Falle dürfte wohl das angesprochene Device einfach nicht diese Funktion unterstützen.
Ich habe lediglich in ein paar russichen Foren etwas dazu gefunden. Aber leider spreche ich kein Russisch mehr
Wie hat Lenin so schön gesagt?: Учиться, учиться, учиться