private void ThreadSpin(object o) { _link = new IrosLinkCallbacks() { FClose = _IrosFClose, FOpen = _IrosFOpen, FRead = _IrosFRead, FWrite = _IrosFWrite, HClose = _IrosHClose, HDoIO = _IrosHDoIO, HPost = _IrosHPost, HPostPos = _IrosHPostPos, HWaitIO = _IrosHWaitIO, Nodes = Nodes, TComplete = _IrosTComplete, TError = _IrosTError, TFail = _IrosTFail, TOpened = _IrosTOpened, TUpdate = _IrosTUpdate, State = _IrosState, Log = _IrosLog, }; //IrosTest(ref _link); try { IntPtr ip = Marshal.AllocHGlobal(Marshal.SizeOf(_link)); Marshal.StructureToPtr(_link, ip, false); _cli = IrosInit(ip, _user, _pass); while (_quit == 0) { IrosSpin(_cli); } IrosClose(_cli); Marshal.DestroyStructure(ip, typeof(IrosLinkCallbacks)); } catch (Exception e) { Dead = true; ErrorLogger("MegaIros died: " + e.ToString()); } }
private static extern int IrosTest(ref IrosLinkCallbacks link);