Пример #1
0
            internal unsafe Vftbl(IntPtr ptr)
            {
                var vftblPtr = Marshal.PtrToStructure <VftblPtr>(ptr);
                var vftbl    = (IntPtr *)vftblPtr.Vftbl;

                IUnknownVftbl = Marshal.PtrToStructure <IUnknownVftbl>(vftblPtr.Vftbl);
                getBuffer     = Marshal.GetDelegateForFunctionPointer <GetBufferDelegate>(vftbl[3]);
            }
Пример #2
0
 static NativeMethods()
 {
     if (System.IntPtr.Size == 8)
     {
         InitMemoryMgr    = x64.InitMemoryMgr;
         ReleaseMemoryMgr = x64.ReleaseMemoryMgr;
         JoinMemoryMgr    = x64.JoinMemoryMgr;
         GetQueueSize     = x64.GetQueueSize;
         PutBuffer        = x64.PutBuffer;
         GetBuffer        = x64.GetBuffer;
     }
     else
     {
         InitMemoryMgr    = x86.InitMemoryMgr;
         ReleaseMemoryMgr = x86.ReleaseMemoryMgr;
         JoinMemoryMgr    = x86.JoinMemoryMgr;
         GetQueueSize     = x86.GetQueueSize;
         PutBuffer        = x86.PutBuffer;
         GetBuffer        = x86.GetBuffer;
     }
 }