コード例 #1
0
        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());
            }
        }
コード例 #2
0
 private static extern int IrosTest(ref IrosLinkCallbacks link);