Ich brauch die Werte von den API Konstanten IOCTL_STORAGE_MEDIA_REMOVAL
und IOCTL_STORAGE_EJECT_MEDIA sowie FSCTL_LOCK_VOLUME und
FSCTL_DISMOUNT_VOLUME weil ich möchte die Funktion
DeviceIoControl_() benutzen um ein Streamerlaufwerk zu entsperren und dann die Kassette
auszuwerfen.
Nun habe ich wie irr gesucht und Danilos Hinweis gefunden das man alle Api Konstanten
in der Include Datei von dem SDK findet. Aber das stimmt nur teilweise. Blöderweise
muß man sich nen haufen Konstanten erst umständlich rausrechnen und zwar mit einer CTL_CODE
Funktion und natürlich genau die die ich brauch

Code: Alles auswählen
#define IOCTL_STORAGE_MEDIA_REMOVAL CTL_CODE(IOCTL_STORAGE_BASE, 0x0201, METHOD_BUFFERED, FILE_READ_ACCESS)
#define IOCTL_STORAGE_EJECT_MEDIA CTL_CODE(IOCTL_STORAGE_BASE, 0x0202, METHOD_BUFFERED, FILE_READ_ACCESS)
Ich hab dann gegoogeld und wenigstens ein VB Code gefunden:
Code: Alles auswählen
Private Function CTL_CODE(lngDeviceType, lngFunction, lngMethod, lngAccess) As Long CTL_CODE = ((lngDeviceType * (2 ^ 16)) Or (lngAccess * (2 ^ 14)) Or (lngFunction * (2 ^ 2)) Or lngMethod) End Function
Code: Alles auswählen
CTL_CODE.l = lngDeviceType * Pow(2,16) | lngAccess * Pow(2,14) | lngFunction * Pow(2,2) | lngMethod
mit den rausgesuchten Konstanten isses:
Code: Alles auswählen
#IOCTL_STORAGE_BASE = $2D
#METHOD_BUFFERED = 0
#FILE_READ_ACCESS = 1
IOCTL_STORAGE_EJECT_MEDIA.l = #IOCTL_STORAGE_BASE * Pow(2,16) | $201 * Pow(2,14) | #METHOD_BUFFERED * Pow(2,2) | #FILE_READ_ACCESS
der PB Compiler das er Floats nicht mit | verwenden kann....
jetzzt habs ich halt umgebaut in
Code: Alles auswählen
#IOCTL_STORAGE_BASE = $2D
#METHOD_BUFFERED = 0
#FILE_READ_ACCESS = 1
term1.l = #IOCTL_STORAGE_BASE * Pow(2,16)
term2.l = $202 * Pow(2,14)
term3.l = #METHOD_BUFFERED * Pow(2,2)
term4.l = #FILE_READ_ACCESS
IOCTL_STORAGE_EJECT_MEDIA.l = term1 | term2 | term3 | term4
Debug IOCTL_STORAGE_EJECT_MEDIA
aber rauskommen sollte 2967560, das hab ich nämlich im i-net wo
gefunden.
Die drei anderen Kostanten Konstanten IOCTL_STORAGE_MEDIA_REMOVAL,
IOCTL_STORAGE_EJECT_MEDIA , FSCTL_LOCK_VOLUME
hab ich aber nicht und die sind sicher falsch wenn ich sie so rausrechne mit CTL_CODE.
Hat wer eine Idee was falsch ist ? Ich komm nicht weiter. Der ganze Tag ist versaut mit
Herumgesuche.

Voll super wär natürlich eine Liste wo wirklich alle Konstanten drinstehen....
Vielen Dank
LUPO