Beispiel #1
0
 public CoreStatus StatusGet(CoreDll.ThreadType threadType, int threadId)
 {
     try
     {
         object   statusO = new CoreDll.adStatusW();
         byte[]   statusB = new byte[Marshal.SizeOf(statusO)];
         GCHandle statusH = GCHandle.Alloc(statusB, GCHandleType.Pinned);
         try
         {
             IntPtr statusP = statusH.AddrOfPinnedObject();
             if (m_dll.adStatusGetW(m_handle, threadType, new IntPtr(threadId), statusP) == CoreDll.Error.Ok)
             {
                 CoreDll.adStatusW statusW = (CoreDll.adStatusW)Marshal.PtrToStructure(statusP, statusO.GetType());
                 return(new CoreStatus(ref statusW));
             }
         }
         finally
         {
             statusH.Free();
         }
     }
     catch (Exception)
     {
     }
     return(null);
 }
Beispiel #2
0
 public CoreStatus StatusGet(CoreDll.ThreadType threadType, int threadId)
 {
     try
     {
         object statusObject = new CoreDll.adStatusW();
         byte[] status       = new byte[Marshal.SizeOf(statusObject)];
         IntPtr pStatus      = Marshal.UnsafeAddrOfPinnedArrayElement(status, 0);
         if (m_dll.adStatusGetW(m_handle, threadType, new IntPtr(threadId), pStatus) == CoreDll.Error.Ok)
         {
             CoreDll.adStatusW statusW = (CoreDll.adStatusW)Marshal.PtrToStructure(pStatus, statusObject.GetType());
             return(new CoreStatus(ref statusW));
         }
     }
     catch (Exception)
     {
     }
     return(null);
 }