Именно из WinAPI::createFile я и скопировал обертку к CreateFile, внеся все необходимые коррективы.
Но то же самое сделать для функции WriteFile не получается. Видимо я не до конца понял механизм изготовления таких оберток.
Пробовал сделать так:
PHP код:
DLL _winApiDLL = new DLL('KERNEL32');
DLLFunction _writeFile = new DLLFunction(_winApiDLL, 'WriteFile');
_writeFile.returns( BOOL );
_writeFile.arg(int);
_writeFile.arg(ExtTypes::Pointer);
_writeFile.arg(int);
_writeFile.arg(int);
_writeFile.arg(ExtTypes::Pointer);
но ни
BOOL, ни
boolean внутри
_writeFile.returns не принимается.
Сама функция:
PHP код:
BOOL WriteFile(
HANDLE hFile, // handle to file to write to
LPCVOID lpBuffer, // pointer to data to write to file
DWORD nNumberOfBytesToWrite, // number of bytes to write
LPDWORD lpNumberOfBytesWritten, // pointer to number of bytes written
LPOVERLAPPED lpOverlapped // pointer to structure needed for overlapped I/O
);
Все предложенные в прошлом сообщении варианты не позволяют писать напрямую в порт.