From 3fbea0f925f44978c8180d3244b763c0c3b3fd5c Mon Sep 17 00:00:00 2001 From: ppc Date: Sun, 19 Jan 2025 19:23:59 +0000 Subject: [PATCH] fix idm value passing --- AMNet.Server/DllMain.cs | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/AMNet.Server/DllMain.cs b/AMNet.Server/DllMain.cs index 248ded4..545c713 100644 --- a/AMNet.Server/DllMain.cs +++ b/AMNet.Server/DllMain.cs @@ -111,7 +111,7 @@ public static class DllMain } [UnmanagedCallersOnly(EntryPoint = "aime_io_nfc_get_felica_id")] - public static int GetFelicaId(byte unitNo, IntPtr idm) + public static unsafe int GetFelicaId(byte unitNo, ulong* idm) { if (!Config.PhysicalCardUseIDm || unitNo != 0) { @@ -123,9 +123,15 @@ public static class DllMain { return 1; } - - Marshal.Copy(card.IDm, 0, idm, sizeof(ulong)); - App.Logger.LogInformation("FeliCa IDm read: {idm}", CardPresenter.FormatHexCode(card.IDm)); + + ulong idmValue = 0; + for (var i = 0 ; i < 8 ; i++) { + idmValue = (idmValue << 8) | card.IDm[i]; + } + + *idm = idmValue; + + App.Logger.LogInformation("FeliCa IDm read: {idm} ({value})", CardPresenter.FormatHexCode(card.IDm), idmValue); return 0; }