ホーム › Devices.Nfc › NFC_RF_DISCOVERY_CONFIG
NFC_RF_DISCOVERY_CONFIG
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| usTotalDuration | WORD | 2 | +0 | +0 | ディスカバリ1サイクルの総時間をミリ秒で表す。 |
| ulPollConfig | DWORD | 4 | +4 | +4 | ポーリング動作を構成するフラグの組み合わせ。 |
| fDisableCardEmulation | BOOLEAN | 1 | +8 | +8 | カードエミュレーションを無効化するか否かを示す。 |
| ucNfcIPMode | BYTE | 1 | +9 | +9 | NFC-IP(P2P)のサポートモードを示す値。 |
| fNfcIPTgtModeDisable | BOOLEAN | 1 | +10 | +10 | NFC-IPターゲットモードを無効化するか否か。 |
| ucNfcIPTgtMode | BYTE | 1 | +11 | +11 | NFC-IPターゲットモードの構成値を示す。 |
| ucNfcCEMode | BYTE | 1 | +12 | +12 | カードエミュレーションモードの構成値を示す。 |
| ucBailoutConfig | BYTE | 1 | +13 | +13 | 技術検出時の早期打ち切り(ベイルアウト)設定。 |
| ucSystemCode | BYTE | 2 | +14 | +14 | FeliCa等で用いるシステムコードを示す値。 |
| ucRequestCode | BYTE | 1 | +16 | +16 | ポーリング時に送出するリクエストコードを示す値。 |
| ucTimeSlotNumber | BYTE | 1 | +17 | +17 | ポーリングのタイムスロット数を示す値。 |
| eRfDiscoveryMode | NFC_RF_DISCOVERY_MODE | 4 | +20 | +20 | RFディスカバリの動作モードを示す列挙値。 |
各言語での定義
#include <windows.h>
// NFC_RF_DISCOVERY_CONFIG (x64 24 / x86 24 バイト)
typedef struct NFC_RF_DISCOVERY_CONFIG {
WORD usTotalDuration;
DWORD ulPollConfig;
BOOLEAN fDisableCardEmulation;
BYTE ucNfcIPMode;
BOOLEAN fNfcIPTgtModeDisable;
BYTE ucNfcIPTgtMode;
BYTE ucNfcCEMode;
BYTE ucBailoutConfig;
BYTE ucSystemCode[2];
BYTE ucRequestCode;
BYTE ucTimeSlotNumber;
NFC_RF_DISCOVERY_MODE eRfDiscoveryMode;
} NFC_RF_DISCOVERY_CONFIG;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct NFC_RF_DISCOVERY_CONFIG
{
public ushort usTotalDuration;
public uint ulPollConfig;
[MarshalAs(UnmanagedType.U1)] public bool fDisableCardEmulation;
public byte ucNfcIPMode;
[MarshalAs(UnmanagedType.U1)] public bool fNfcIPTgtModeDisable;
public byte ucNfcIPTgtMode;
public byte ucNfcCEMode;
public byte ucBailoutConfig;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)] public byte[] ucSystemCode;
public byte ucRequestCode;
public byte ucTimeSlotNumber;
public int eRfDiscoveryMode;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure NFC_RF_DISCOVERY_CONFIG
Public usTotalDuration As UShort
Public ulPollConfig As UInteger
<MarshalAs(UnmanagedType.U1)> Public fDisableCardEmulation As Boolean
Public ucNfcIPMode As Byte
<MarshalAs(UnmanagedType.U1)> Public fNfcIPTgtModeDisable As Boolean
Public ucNfcIPTgtMode As Byte
Public ucNfcCEMode As Byte
Public ucBailoutConfig As Byte
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=2)> Public ucSystemCode() As Byte
Public ucRequestCode As Byte
Public ucTimeSlotNumber As Byte
Public eRfDiscoveryMode As Integer
End Structureimport ctypes
from ctypes import wintypes
class NFC_RF_DISCOVERY_CONFIG(ctypes.Structure):
_fields_ = [
("usTotalDuration", ctypes.c_ushort),
("ulPollConfig", wintypes.DWORD),
("fDisableCardEmulation", ctypes.c_byte),
("ucNfcIPMode", ctypes.c_ubyte),
("fNfcIPTgtModeDisable", ctypes.c_byte),
("ucNfcIPTgtMode", ctypes.c_ubyte),
("ucNfcCEMode", ctypes.c_ubyte),
("ucBailoutConfig", ctypes.c_ubyte),
("ucSystemCode", ctypes.c_ubyte * 2),
("ucRequestCode", ctypes.c_ubyte),
("ucTimeSlotNumber", ctypes.c_ubyte),
("eRfDiscoveryMode", ctypes.c_int),
]#[repr(C)]
pub struct NFC_RF_DISCOVERY_CONFIG {
pub usTotalDuration: u16,
pub ulPollConfig: u32,
pub fDisableCardEmulation: u8,
pub ucNfcIPMode: u8,
pub fNfcIPTgtModeDisable: u8,
pub ucNfcIPTgtMode: u8,
pub ucNfcCEMode: u8,
pub ucBailoutConfig: u8,
pub ucSystemCode: [u8; 2],
pub ucRequestCode: u8,
pub ucTimeSlotNumber: u8,
pub eRfDiscoveryMode: i32,
}import "golang.org/x/sys/windows"
type NFC_RF_DISCOVERY_CONFIG struct {
usTotalDuration uint16
ulPollConfig uint32
fDisableCardEmulation byte
ucNfcIPMode byte
fNfcIPTgtModeDisable byte
ucNfcIPTgtMode byte
ucNfcCEMode byte
ucBailoutConfig byte
ucSystemCode [2]byte
ucRequestCode byte
ucTimeSlotNumber byte
eRfDiscoveryMode int32
}type
NFC_RF_DISCOVERY_CONFIG = record
usTotalDuration: Word;
ulPollConfig: DWORD;
fDisableCardEmulation: ByteBool;
ucNfcIPMode: Byte;
fNfcIPTgtModeDisable: ByteBool;
ucNfcIPTgtMode: Byte;
ucNfcCEMode: Byte;
ucBailoutConfig: Byte;
ucSystemCode: array[0..1] of Byte;
ucRequestCode: Byte;
ucTimeSlotNumber: Byte;
eRfDiscoveryMode: Integer;
end;const NFC_RF_DISCOVERY_CONFIG = extern struct {
usTotalDuration: u16,
ulPollConfig: u32,
fDisableCardEmulation: u8,
ucNfcIPMode: u8,
fNfcIPTgtModeDisable: u8,
ucNfcIPTgtMode: u8,
ucNfcCEMode: u8,
ucBailoutConfig: u8,
ucSystemCode: [2]u8,
ucRequestCode: u8,
ucTimeSlotNumber: u8,
eRfDiscoveryMode: i32,
};type
NFC_RF_DISCOVERY_CONFIG {.bycopy.} = object
usTotalDuration: uint16
ulPollConfig: uint32
fDisableCardEmulation: uint8
ucNfcIPMode: uint8
fNfcIPTgtModeDisable: uint8
ucNfcIPTgtMode: uint8
ucNfcCEMode: uint8
ucBailoutConfig: uint8
ucSystemCode: array[2, uint8]
ucRequestCode: uint8
ucTimeSlotNumber: uint8
eRfDiscoveryMode: int32struct NFC_RF_DISCOVERY_CONFIG
{
ushort usTotalDuration;
uint ulPollConfig;
ubyte fDisableCardEmulation;
ubyte ucNfcIPMode;
ubyte fNfcIPTgtModeDisable;
ubyte ucNfcIPTgtMode;
ubyte ucNfcCEMode;
ubyte ucBailoutConfig;
ubyte[2] ucSystemCode;
ubyte ucRequestCode;
ubyte ucTimeSlotNumber;
int eRfDiscoveryMode;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; NFC_RF_DISCOVERY_CONFIG サイズ: 24 バイト(x64)
dim st, 6 ; 4byte整数×6(構造体サイズ 24 / 4 切り上げ)
; usTotalDuration : WORD (+0, 2byte) wpoke st,0,値 / 値 = wpeek(st,0)
; ulPollConfig : DWORD (+4, 4byte) st.1 = 値 / 値 = st.1 (lpoke/lpeek も可)
; fDisableCardEmulation : BOOLEAN (+8, 1byte) poke st,8,値 / 値 = peek(st,8)
; ucNfcIPMode : BYTE (+9, 1byte) poke st,9,値 / 値 = peek(st,9)
; fNfcIPTgtModeDisable : BOOLEAN (+10, 1byte) poke st,10,値 / 値 = peek(st,10)
; ucNfcIPTgtMode : BYTE (+11, 1byte) poke st,11,値 / 値 = peek(st,11)
; ucNfcCEMode : BYTE (+12, 1byte) poke st,12,値 / 値 = peek(st,12)
; ucBailoutConfig : BYTE (+13, 1byte) poke st,13,値 / 値 = peek(st,13)
; ucSystemCode : BYTE (+14, 2byte) varptr(st)+14 を基点に操作(2byte:入れ子/配列)
; ucRequestCode : BYTE (+16, 1byte) poke st,16,値 / 値 = peek(st,16)
; ucTimeSlotNumber : BYTE (+17, 1byte) poke st,17,値 / 値 = peek(st,17)
; eRfDiscoveryMode : NFC_RF_DISCOVERY_MODE (+20, 4byte) st.5 = 値 / 値 = st.5 (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global NFC_RF_DISCOVERY_CONFIG
#field short usTotalDuration
#field int ulPollConfig
#field bool1 fDisableCardEmulation
#field byte ucNfcIPMode
#field bool1 fNfcIPTgtModeDisable
#field byte ucNfcIPTgtMode
#field byte ucNfcCEMode
#field byte ucBailoutConfig
#field byte ucSystemCode 2
#field byte ucRequestCode
#field byte ucTimeSlotNumber
#field int eRfDiscoveryMode
#endstruct
stdim st, NFC_RF_DISCOVERY_CONFIG ; NSTRUCT 変数を確保
st->usTotalDuration = 100
mes "usTotalDuration=" + st->usTotalDuration