Re: [python-win32] Error message.... Tim Roberts Wed, 21 Dec 2005 13:32:52 -0800 On Tue, 20 Dec 2005 11:05:12 -0800, I wrote: >On Mon, 19 Dec 2005 08:58:17 -0500, [EMAIL PROTECTED] wrote: > > >>I am trying to use the OSISoft PI (Plant Information) API to collect data >>about processes within our facility, however, when I try to connect to the >>PI server using their API calls, I get the following error" >> >> >> >> >>>>>>>>from ctypes import * >>>>>>>>PiAPI=windll.piapi32 >>>>>>>>valid = 0 >>>>>>>>status = PiAPI.piut_setservernode(servername) >>>>>>>>status = pi.piut_login("pidemo", "dorazio", valid >>>>>>>> >>Traceback (most recent call last): >> File "", line 1, in ? >> status = pi.piut_login("pidemo", "dorazio", valid) >>WindowsError: exception: access violation writing 0x00000000 >> >> >>I THINK this means we are not licensed to make API calls against this dll, >>but I am not sure. >> >No, that's not what it means. "Access violation" is an Intel processor >term that mean you tried to access an invalid memory address. It is >also called "general protection fault". In this particular instance, it >tried to write to a null pointer. > >What is "servername"? What is "pi"? Neither is defined here. Is it >possible that the third parameter to piut_login is an OUTPUT parameter >-- that it is returning a "valid" state to you? In that case, you have >to use ctypes magic to declare that the parameter is a pointer: > > pi.piut_login( "pidemo", "dorazio", ctypes.byref( valid ) ) > We continued this discussion off-list. Had either one of us taken the time to look at the examples, we would have seen that the proper answer was: valid = ctypes.c_int( 0 ) pi.piut_login( "pidemo", "dorazio", ctypes.byref( valid ) ) -- Tim Roberts, [EMAIL PROTECTED] Providenza & Boekelheide, Inc.