Hello friends, I try to write the OpenEventLog: HANDLE OpenEventLog( _In_ LPCTSTR lpUNCServerName, _In_ LPCTSTR lpSourceName );
in Racket ffi: #lang racket (require ffi/com ffi/unsafe ffi/unsafe/define ffi/winapi) (define _HANDLE (_cpointer/null 'HANDLE)) (define advapi-dll (and (eq? (system-type) 'windows) (ffi-lib "Advapi32.dll"))) (define-ffi-definer define-advapi advapi-dll #:default-make-fail make-not-available) (define PROVIDER_NAME "Application") (define MACHINENAME "MyMachine") (define-advapi OpenEventLog (_fun #:abi winapi _string/utf-16 _string/utf-16 -> (r : _HANDLE))) After all, eval this: >(OpenEventLog MACHINENAME PROVIDER_NAME) brings an error: OpenEventLog: implementation not found; arguments: "MyMachine" "Application" These steps in Racket which I defined above are programmed as I understand it.. So is there any misunderstanding in usind the ffi. Or do I something wrong? The type understanding is a little bit confusing. The first questions that comes to my mind is: What is a const char*, LPCTSTR, BSTR, or HANDLE etc There are some instructions on creating these types ( as far as I can found it) but how to use it in Racket? Ok back to my problem. I would like to write the openeventlog, closeevntlog, readeventlog etc functions but I fail at openeventlog. Could anybody hold my hands?;O) Yours, ____________________ Racket Users list: http://lists.racket-lang.org/users