public bool FeliCaLibNfcPollAndStartDevAccess(UInt32 timeout, out DEVICE_DATA_NFC_14443A_18092_106K deviceInfo) { IntPtr info = IntPtr.Zero; bool res = felicalib_nfc_poll_and_start_dev_access(DEVICE_TYPE_NFC_14443A_18092_106K, timeout, ref info); if (res) { IntPtr pDevInfo = info; IntPtr pDeviceData_A; if (IntPtr.Size == 8) { pDeviceData_A = (IntPtr)((Int64)pDevInfo + (Int64)Marshal.OffsetOf(typeof(DEVICE_INFO), "dev_info")); } else { pDeviceData_A = (IntPtr)((Int32)pDevInfo + (Int32)Marshal.OffsetOf(typeof(DEVICE_INFO), "dev_info")); } DEVICE_DATA_NFC_14443A_18092_106K deviceA = (DEVICE_DATA_NFC_14443A_18092_106K) Marshal.PtrToStructure(pDeviceData_A, typeof(DEVICE_DATA_NFC_14443A_18092_106K)); deviceInfo = deviceA; return(true); } else { deviceInfo = new DEVICE_DATA_NFC_14443A_18092_106K(); return(false); } }
private void DispatchNfcAEvent(IntPtr pDeviceData) { DEVICE_DATA_NFC_14443A_18092_106K deviceData_A = (DEVICE_DATA_NFC_14443A_18092_106K)Marshal.PtrToStructure(pDeviceData, typeof(DEVICE_DATA_NFC_14443A_18092_106K)); FeliCaNfcDllWrapperClass.FeliCaLibNfcStartDevAccess(deviceData_A.target_number); DiscoverNfcATag(this, new NfcAEventArgs(deviceData_A)); }
/// <summary> /// ポーリング結果がNFC-Aだった場合 /// </summary> /// <param name="pDeviceData">DEVICE_INFO.dev_infoへのポインタ</param> private void detectNfcA(IntPtr pDeviceData) { DEVICE_DATA_NFC_14443A_18092_106K DeviceData_A = (DEVICE_DATA_NFC_14443A_18092_106K)Marshal.PtrToStructure(pDeviceData, typeof(DEVICE_DATA_NFC_14443A_18092_106K)); mTargetNumber = DeviceData_A.target_number; mResult = mFeliCaNfcDllWrapperClass.FeliCaLibNfcStartDevAccess(mTargetNumber); if (mResult == false) { ErrorRoutine(); return; } mNfcId = new byte[DeviceData_A.NFCID1_size]; Buffer.BlockCopy(DeviceData_A.NFCID1, 0, mNfcId, 0, DeviceData_A.NFCID1_size); mRD = new byte[1]; mRD[RD_SELRES] = DeviceData_A.sel_res; }
public void messageHandlerFunc(object sender, MessageReceivedEventArgs e) { bRet = false; if (e.Message.Msg == card_find_message) { IntPtr pDevInfo = e.Message.LParam; IntPtr pDeviceData_A; if (IntPtr.Size == 8) { pDeviceData_A = (IntPtr)((Int64)pDevInfo + (Int64)Marshal.OffsetOf(typeof(DEVICE_INFO), "dev_info")); } else { pDeviceData_A = (IntPtr)((Int32)pDevInfo + (Int32)Marshal.OffsetOf(typeof(DEVICE_INFO), "dev_info")); } DEVICE_DATA_NFC_14443A_18092_106K DeviceData_A = (DEVICE_DATA_NFC_14443A_18092_106K) Marshal.PtrToStructure(pDeviceData_A, typeof(DEVICE_DATA_NFC_14443A_18092_106K)); target_number = DeviceData_A.target_number; bRet = FeliCaNfcDllWrapperClass.FeliCaLibNfcStartDevAccess(target_number); if (bRet == false) { Console.Write("Failed: FeliCaLibNfcStartDevAccess\n"); Application.Exit(); return; } } else if (e.Message.Msg == card_enable_message) { bRet = true; Application.Exit(); return; } return; }
public NfcAEventArgs(DEVICE_DATA_NFC_14443A_18092_106K deviceDataA) { _deviceDataA = deviceDataA; }