Пример #1
0
        unsafe public Recv GetNextDispatch()
        {
            var ret = (MethodCall.ReturnValue.GetNextDispatch)InvokeOverSocket(new MethodCall.GetNextDispatch());

            CheckHresult(ret.Hresult);

            fixed(byte *b = &ret.Data[0])
            {
                var pData = (IntPtr)b;

                var pRecv = Marshal.PtrToStructure <SIMCONNECT_RECV> (pData);

                switch ((RecvId)pRecv.dwID)
                {
                case RecvId.Event:
                    return(RecvEvent.FromMemory(pData));

                case RecvId.SimobjectData:
                    return(RecvSimObjectData.FromMemory(pData, dataDefinitionTypeLookup));

                case RecvId.SimobjectDataByType:
                    return(RecvSimObjectDataByType.FromMemory(pData, dataDefinitionTypeLookup));

                default:
                    return(Recv.FromMemory(pData));
                }
            }
        }
Пример #2
0
        internal static new RecvSimObjectDataByType FromMemory(IntPtr pData, Dictionary <uint, Type> dataDefinitionTypeLookup)
        {
            var ret   = new RecvSimObjectDataByType(Marshal.PtrToStructure <SIMCONNECT_RECV_SIMOBJECT_DATA_BYTYPE> (pData));
            var sType = dataDefinitionTypeLookup [ret.DefineId];

            ret.Data = Marshal.PtrToStructure(pData + (SIMCONNECT_RECV_SIMOBJECT_DATA_BYTYPE.dwDataStart), sType);
            return(ret);
        }