Exemplo n.º 1
0
            /// <summary>
            ///
            /// </summary>
            /// <param name="Event"></param>
            /// <param name="Mac"></param>
            /// <param name="Data"></param>
            public void NotifyEvent(Event Event, MacAddress Mac, byte[] Data)
            {
                var MacPartition = HleMemoryManager.GetPartition(MemoryPartitions.User).Allocate(8);

                PointerUtils.Memcpy((byte *)MacPartition.LowPointer, new ArraySegment <byte>(Mac.GetAddressBytes()));

                {
                    var DataPartition = HleMemoryManager.GetPartition(MemoryPartitions.User).Allocate(Data.Length);
                    PointerUtils.Memcpy((byte *)DataPartition.LowPointer, new ArraySegment <byte>(Data));

                    Console.WriteLine(
                        "Executing callback. Matching.NotifyEvent: 0x{0:X8}, {1}, {2}, 0x{3:X8}, {4}, 0x{5:X8}",
                        this.Callback, this.GetUidIndex(InjectContext), Event, MacPartition.Low, DataPartition.Size,
                        DataPartition.Low);
                    HleInterop.ExecuteFunctionLater(
                        this.Callback,
                        this.GetUidIndex(InjectContext),
                        (int)Event,
                        MacPartition.Low,
                        DataPartition.Size,
                        (DataPartition.Size != 0) ? DataPartition.Low : 0
                        );

                    DataPartition.DeallocateFromParent();
                }
                MacPartition.DeallocateFromParent();
            }