Andy :
Sorry für die späte Antwort und danke für den Link. Jetz bin ich schonmal ein Stück weiter:
#include <WinAPIFiles.au3>
#include <WinAPIHObj.au3>
$FILE_DEVICE_RPIQ=2836
$RPIQ_FUNC_MAILBOX_PROPERTY=2008
#region Method Constants
Global Const $METHOD_BUFFERED = 0x00
Global Const $METHOD_INDIRECT = 0x01
Global Const $METHOD_OUTDIRECT = 0x02
Global Const $METHOD_NEITHER = 0x03
#endregion Method Constants
#region Access
Global Const $FILEACCESS_ANY = 0x00 ; Request all access.
Global Const $FILEACCESS_READ = 0x01 ; Request read access. Can be used with FILE_WRITE_ACCESS.
Global Const $FILEACCESS_WRITE = 0x02; Request write access. Can be used with FILE_READ_ACCESS.
Global Const $FILEACCESS_READWRITE = 0x03
#endregion Access
;>> Ursprünglicher C-Code (data.c)
;HANDLE hDevice = CreateFileW(RPIQ_USERMODE_PATH, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, 0, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, 0)
$RPIQ_USERMODE_PATH='\\.\RPIQ'
$hDevice = _WinAPI_CreateFileEx ($RPIQ_USERMODE_PATH, $OPEN_EXISTING, BitOR($GENERIC_READ , $GENERIC_WRITE), BitOR($FILE_SHARE_READ, $FILE_SHARE_WRITE), $FILE_FLAG_OVERLAPPED)
If (@error) Then
MsgBox(16, 'Error', @extended)
Exit
Else
MsgBox(0, 'Handle', $hDevice)
EndIf
;>> Ursprünglicher C-Code (data.c)
;DeviceIoControl(hDevice, IOCTL_MAILBOX_PROPERTY, (LPVOID)(&mailbox), sizeof(mailbox), (LPVOID)(&mailbox), sizeof(mailbox), &bytesReturned, 0);
;_WinAPI_DeviceIoControl($hDevice, IOCTL_MAILBOX_PROPERTY(), $pInBuffer = 0 [, $iInBufferSize = 0 [, $pOutBuffer = 0 [, $iOutBufferSize = 0]]]] )
_WinAPI_CloseHandle($hDevice)
Exit
;================================================================================================================================================
; Function: IOCTL_MAILBOX_PROPERTY
;================================================================================================================================================
;>> Link:
;https://github.com/driver1998/PiMon/blob/master/src/rpiq.h
;>> Original:
;#define IOCTL_MAILBOX_PROPERTY \
; CTL_CODE(FILE_DEVICE_RPIQ, RPIQ_FUNC_MAILBOX_PROPERTY, METHOD_BUFFERED, FILE_ANY_ACCESS)
Func IOCTL_MAILBOX_PROPERTY
Return CTL_CODE($FILE_DEVICE_RPIQ, $RPIQ_FUNC_MAILBOX_PROPERTY, $METHOD_BUFFERED, $FILEACCESS_ANY)
EndFunc
;================================================================================================================================================
; Function: CTL_CODE
;================================================================================================================================================
;>> Link:
;https://www.autoitscript.com/forum/topic/135436-solved-c-deviceiocontrol-function-communication-in-autoit/
;>> Original:
;CTL_CODE(FILE_DEVICE_RPIQ, RPIQ_FUNC_MAILBOX_PROPERTY, METHOD_BUFFERED, FILE_ANY_ACCESS)
Func CTL_CODE($Devicetype, $Function, $Method, $Access)
Return BitOR(BitShift($Devicetype,-16),BitShift($Access,-14),BitShift($Function,-2),$Method)
EndFunc
Alles anzeigen
Der Aufruf vom Handle sollte funktionieren (Handle wird zurückgegeben). Jetzt bin ich am Aufruf von _WinAPI_DeviceIoControl dran.
;>> Ursprünglicher C-Code (data.c)
;DeviceIoControl(hDevice, IOCTL_MAILBOX_PROPERTY, (LPVOID)(&mailbox), sizeof(mailbox), (LPVOID)(&mailbox), sizeof(mailbox), &bytesReturned, 0);
_WinAPI_DeviceIoControl($hDevice, IOCTL_MAILBOX_PROPERTY(), $pInBuffer = 0 [, $iInBufferSize = 0 [, $pOutBuffer = 0 [, $iOutBufferSize = 0]]]] )
Was theoretisch schon mal gehen sollte, ist "hDevice" und "IOCTL_MAILBOX_PROPERTY". Jetzt kommt die "mailbox"-Geschichte, woran ich bisher scheitere.
In dem File "rpiq.h" stehen aber die Definitionen drin. Hier der Link:
Gruß
Homer J. S.