| Server IP : 121.121.20.254 / Your IP : 216.73.216.237 Web Server : Microsoft-IIS/10.0 System : Windows NT WEB-SERVER 10.0 build 20348 (Windows Server 2022) AMD64 User : IUSR ( 0) PHP Version : 8.3.28 Disable Function : NONE MySQL : ON | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : C:/Program Files (x86)/Windows Kits/10/Include/10.0.26100.0/shared/ |
Upload File : |
/*++
Copyright (C) Microsoft Corporation. All rights reserved.
Module Name:
NFCDTADev.h
Abstract:
Header file for the NFC DTA device driver interface
--*/
#pragma once
#if (NTDDI_VERSION >= NTDDI_WINTHRESHOLD)
//
// Interface GUIDs
//
#ifdef DEFINE_GUID
// {7fd3f30b-5e49-4be1-b3aa-af06260d236a}
DEFINE_GUID(GUID_DEVINTERFACE_NFCDTA, 0x7fd3f30b, 0x5e49, 0x4be1, 0xb3, 0xaa, 0xaf, 0x06, 0x26, 0x0d, 0x23, 0x6a);
#endif
//
// NFC DTA DDI
//
#define IOCTL_NFCDTA_CONFIG_RF_DISCOVERY \
CTL_CODE(FILE_DEVICE_UNKNOWN, 0x0500, METHOD_BUFFERED, FILE_ANY_ACCESS) // Input: NFC_RF_DISCOVERY_CONFIG
#define IOCTL_NFCDTA_REMOTE_DEV_GET_NEXT \
CTL_CODE(FILE_DEVICE_UNKNOWN, 0x0501, METHOD_BUFFERED, FILE_ANY_ACCESS) // Output: NFC_REMOTE_DEV_INFO
#define IOCTL_NFCDTA_REMOTE_DEV_CONNECT \
CTL_CODE(FILE_DEVICE_UNKNOWN, 0x0502, METHOD_BUFFERED, FILE_ANY_ACCESS) // Input: NFC_REMOTE_DEV_HANDLE
#define IOCTL_NFCDTA_REMOTE_DEV_DISCONNECT \
CTL_CODE(FILE_DEVICE_UNKNOWN, 0x0503, METHOD_BUFFERED, FILE_ANY_ACCESS) // Input: NFC_REMOTE_DEVICE_DISCONNET
#define IOCTL_NFCDTA_REMOTE_DEV_TRANSCEIVE \
CTL_CODE(FILE_DEVICE_UNKNOWN, 0x0504, METHOD_BUFFERED, FILE_ANY_ACCESS) // Input: NFC_REMOTE_DEV_SEND_INFO Output: NFC_REMOTE_DEV_RECV_INFO
#define IOCTL_NFCDTA_REMOTE_DEV_RECV \
CTL_CODE(FILE_DEVICE_UNKNOWN, 0x0505, METHOD_BUFFERED, FILE_ANY_ACCESS) // Output: NFC_REMOTE_DEV_RECV_INFO
#define IOCTL_NFCDTA_REMOTE_DEV_SEND \
CTL_CODE(FILE_DEVICE_UNKNOWN, 0x0506, METHOD_BUFFERED, FILE_ANY_ACCESS) // Input: NFC_REMOTE_DEV_SEND_INFO
#define IOCTL_NFCDTA_REMOTE_DEV_CHECK_PRESENCE \
CTL_CODE(FILE_DEVICE_UNKNOWN, 0x0507, METHOD_BUFFERED, FILE_ANY_ACCESS) // Input: NFC_REMOTE_DEV_HANDLE
#define IOCTL_NFCDTA_CONFIG_P2P_PARAM \
CTL_CODE(FILE_DEVICE_UNKNOWN, 0x0508, METHOD_BUFFERED, FILE_ANY_ACCESS) // Input: NFC_P2P_PARAM_CONFIG
#define IOCTL_NFCDTA_SET_RF_CONFIG \
CTL_CODE(FILE_DEVICE_UNKNOWN, 0x0509, METHOD_BUFFERED, FILE_ANY_ACCESS) // Input: TLV-encoded BYTE array, 1st byte contains number of parameters
//
// NDEF
//
#define IOCTL_NFCDTA_REMOTE_DEV_NDEF_WRITE \
CTL_CODE(FILE_DEVICE_UNKNOWN, 0x0510, METHOD_BUFFERED, FILE_ANY_ACCESS) // Input: NFC_REMOTE_DEV_SEND_INFO
#define IOCTL_NFCDTA_REMOTE_DEV_NDEF_READ \
CTL_CODE(FILE_DEVICE_UNKNOWN, 0x0511, METHOD_BUFFERED, FILE_ANY_ACCESS) // Input: NFC_REMOTE_DEV_HANDLE Output: NFC_REMOTE_DEV_RECV_INFO
#define IOCTL_NFCDTA_REMOTE_DEV_NDEF_CONVERT_READ_ONLY \
CTL_CODE(FILE_DEVICE_UNKNOWN, 0x0512, METHOD_BUFFERED, FILE_ANY_ACCESS) // Input: NFC_REMOTE_DEV_HANDLE
#define IOCTL_NFCDTA_REMOTE_DEV_NDEF_CHECK \
CTL_CODE(FILE_DEVICE_UNKNOWN, 0x0513, METHOD_BUFFERED, FILE_ANY_ACCESS) // Input: NFC_REMOTE_DEV_HANDLE Output: NFC_NDEF_INFO
//
// LLCP
//
#define IOCTL_NFCDTA_LLCP_CONFIG CTL_CODE(FILE_DEVICE_UNKNOWN, 0x0520, METHOD_BUFFERED, FILE_ANY_ACCESS) // Input: NFC_LLCP_CONFIG
#define IOCTL_NFCDTA_LLCP_ACTIVATE \
CTL_CODE(FILE_DEVICE_UNKNOWN, 0x0521, METHOD_BUFFERED, FILE_ANY_ACCESS) // Input: NFC_REMOTE_DEV_HANDLE
#define IOCTL_NFCDTA_LLCP_DEACTIVATE \
CTL_CODE(FILE_DEVICE_UNKNOWN, 0x0522, METHOD_BUFFERED, FILE_ANY_ACCESS) // Input: NFC_REMOTE_DEV_HANDLE
#define IOCTL_NFCDTA_LLCP_DISCOVER_SERVICES \
CTL_CODE(FILE_DEVICE_UNKNOWN, 0x0523, METHOD_BUFFERED, FILE_ANY_ACCESS) // Input: NFC_LLCP_SERVICE_DISCOVER_REQUEST Output: NFC_LLCP_SERVICE_DISCOVER_SAP
#define IOCTL_NFCDTA_LLCP_LINK_STATUS_CHECK \
CTL_CODE(FILE_DEVICE_UNKNOWN, 0x0524, METHOD_BUFFERED, FILE_ANY_ACCESS) // Input: NFC_REMOTE_DEV_HANDLE
#define IOCTL_NFCDTA_LLCP_GET_NEXT_LINK_STATUS \
CTL_CODE(FILE_DEVICE_UNKNOWN, 0x0525, METHOD_BUFFERED, FILE_ANY_ACCESS) // Output: NFC_LLCP_LINK_STATUS
#define IOCTL_NFCDTA_LLCP_SOCKET_CREATE \
CTL_CODE(FILE_DEVICE_UNKNOWN, 0x0526, METHOD_BUFFERED, FILE_ANY_ACCESS) // Input: NFC_LLCP_SOCKET_INFO Output: NFC_LLCP_SOCKET_HANDLE
#define IOCTL_NFCDTA_LLCP_SOCKET_CLOSE \
CTL_CODE(FILE_DEVICE_UNKNOWN, 0x0527, METHOD_BUFFERED, FILE_ANY_ACCESS) // Input: NFC_LLCP_SOCKET_HANDLE
#define IOCTL_NFCDTA_LLCP_SOCKET_BIND \
CTL_CODE(FILE_DEVICE_UNKNOWN, 0x0528, METHOD_BUFFERED, FILE_ANY_ACCESS) // Input: NFC_LLCP_SOCKET_SERVICE_INFO
#define IOCTL_NFCDTA_LLCP_SOCKET_LISTEN \
CTL_CODE(FILE_DEVICE_UNKNOWN, 0x0529, METHOD_BUFFERED, FILE_ANY_ACCESS) // Input: NFC_LLCP_SOCKET_HANDLE Output: NFC_LLCP_SOCKET_HANDLE
#define IOCTL_NFCDTA_LLCP_SOCKET_ACCEPT \
CTL_CODE(FILE_DEVICE_UNKNOWN, 0x052a, METHOD_BUFFERED, FILE_ANY_ACCESS) // Input: NFC_LLCP_SOCKET_ACCEPT_INFO
#define IOCTL_NFCDTA_LLCP_SOCKET_CONNECT \
CTL_CODE(FILE_DEVICE_UNKNOWN, 0x052b, METHOD_BUFFERED, FILE_ANY_ACCESS) // Input: NFC_LLCP_SOCKET_CONNECT_INFO
#define IOCTL_NFCDTA_LLCP_SOCKET_DISCONNECT \
CTL_CODE(FILE_DEVICE_UNKNOWN, 0x052c, METHOD_BUFFERED, FILE_ANY_ACCESS) // Input: NFC_LLCP_SOCKET_HANDLE
#define IOCTL_NFCDTA_LLCP_SOCKET_RECV \
CTL_CODE(FILE_DEVICE_UNKNOWN, 0x052d, METHOD_BUFFERED, FILE_ANY_ACCESS) // Input: NFC_LLCP_SOCKET_HANDLE Output: NFC_LLCP_SOCKET_PAYLOAD
#define IOCTL_NFCDTA_LLCP_SOCKET_RECV_FROM \
CTL_CODE(FILE_DEVICE_UNKNOWN, 0x052e, METHOD_BUFFERED, FILE_ANY_ACCESS) // Input: NFC_LLCP_SOCKET_HANDLE Output: NFC_LLCP_SOCKET_PAYLOAD
#define IOCTL_NFCDTA_LLCP_SOCKET_SEND \
CTL_CODE(FILE_DEVICE_UNKNOWN, 0x052f, METHOD_BUFFERED, FILE_ANY_ACCESS) // Input: NFC_LLCP_SOCKET_PAYLOAD
#define IOCTL_NFCDTA_LLCP_SOCKET_SNED_TO \
CTL_CODE(FILE_DEVICE_UNKNOWN, 0x0530, METHOD_BUFFERED, FILE_ANY_ACCESS) // Input: NFC_LLCP_SOCKET_CL_PAYLOAD
#define IOCTL_NFCDTA_LLCP_SOCKET_GET_NEXT_ERROR \
CTL_CODE(FILE_DEVICE_UNKNOWN, 0x0531, METHOD_BUFFERED, FILE_ANY_ACCESS) // Input: NFC_LLCP_SOCKET_HANDLE Output: NFC_LLCP_SOCKET_ERROR_INFO
//
// SNEP Server
//
#define IOCTL_NFCDTA_SNEP_INIT_SERVER \
CTL_CODE(FILE_DEVICE_UNKNOWN, 0x0540, METHOD_BUFFERED, FILE_ANY_ACCESS) // Input: NFC_SNEP_SERVER_INFO Output: NFC_SNEP_SERVER_HANDLE
#define IOCTL_NFCDTA_SNEP_DEINIT_SERVER \
CTL_CODE(FILE_DEVICE_UNKNOWN, 0x0541, METHOD_BUFFERED, FILE_ANY_ACCESS) // Input: NFC_SNEP_SERVER_HANDLE
#define IOCTL_NFCDTA_SNEP_SERVER_GET_NEXT_CONNECTION \
CTL_CODE(FILE_DEVICE_UNKNOWN, 0x0542, METHOD_BUFFERED, FILE_ANY_ACCESS) // Input: NFC_SNEP_SERVER_HANDLE Output: NFC_SNEP_SERVER_CONNECTION_HANDLE
#define IOCTL_NFCDTA_SNEP_SERVER_ACCEPT \
CTL_CODE(FILE_DEVICE_UNKNOWN, 0x0543, METHOD_BUFFERED, FILE_ANY_ACCESS) // Input: NFC_SNEP_SERVER_ACCEPT_INFO
#define IOCTL_NFCDTA_SNEP_SERVER_GET_NEXT_REQUEST \
CTL_CODE(FILE_DEVICE_UNKNOWN, 0x0544, METHOD_BUFFERED, FILE_ANY_ACCESS) // Input: NFC_SNEP_SERVER_HANDLE Output: NFC_SNEP_SERVER_REQUEST
#define IOCTL_NFCDTA_SNEP_SERVER_SEND_RESPONSE \
CTL_CODE(FILE_DEVICE_UNKNOWN, 0x0545, METHOD_BUFFERED, FILE_ANY_ACCESS) // Input: NFC_SNEP_SERVER_RESPONSE_INFO Output: NFC_SNEP_SERVER_RESPONSE_INFO
//
// SNEP Client
//
#define IOCTL_NFCDTA_SNEP_INIT_CLIENT \
CTL_CODE(FILE_DEVICE_UNKNOWN, 0x0550, METHOD_BUFFERED, FILE_ANY_ACCESS) // Input: NFC_SNEP_CLIENT_INFO Output: NFC_SNEP_CLIENT_HANDLE
#define IOCTL_NFCDTA_SNEP_DEINIT_CLIENT \
CTL_CODE(FILE_DEVICE_UNKNOWN, 0x0551, METHOD_BUFFERED, FILE_ANY_ACCESS) // Input: NFC_SNEP_CLIENT_HANDLE
#define IOCTL_NFCDTA_SNEP_CLIENT_PUT \
CTL_CODE(FILE_DEVICE_UNKNOWN, 0x0552, METHOD_BUFFERED, FILE_ANY_ACCESS) // Input: NFC_SNEP_CLIENT_PUT_INFO
#define IOCTL_NFCDTA_SNEP_CLIENT_GET \
CTL_CODE(FILE_DEVICE_UNKNOWN, 0x0553, METHOD_BUFFERED, FILE_ANY_ACCESS) // Input: NFC_SNEP_CLIENT_GET_INFO Output: NFC_SNEP_CLIENT_DATA_BUFFER
//
// SE
//
#define IOCTL_NFCDTA_SE_ENUMERATE CTL_CODE(FILE_DEVICE_UNKNOWN, 0x0560, METHOD_BUFFERED, FILE_ANY_ACCESS) // Output: NFC_SE_LIST
#define IOCTL_NFCDTA_SE_SET_EMULATION_MODE \
CTL_CODE(FILE_DEVICE_UNKNOWN, 0x0561, METHOD_BUFFERED, FILE_ANY_ACCESS) // Input: NFC_SE_EMULATION_MODE_INFO
#define IOCTL_NFCDTA_SE_SET_ROUTING_TABLE \
CTL_CODE(FILE_DEVICE_UNKNOWN, 0x0562, METHOD_BUFFERED, FILE_ANY_ACCESS) // Input: NFC_SE_ROUTING_TABLE
#define IOCTL_NFCDTA_SE_GET_NEXT_EVENT \
CTL_CODE(FILE_DEVICE_UNKNOWN, 0x0563, METHOD_BUFFERED, FILE_ANY_ACCESS) // Output: NFC_SE_EVENT_INFO
typedef enum _NFC_RF_DISCOVERY_MODE
{
RfDiscoveryConfig,
RfDiscoveryStart,
RFDiscoveryResume
} NFC_RF_DISCOVERY_MODE,
*PNFC_RF_DISCOVERY_MODE;
typedef struct _NFC_RF_DISCOVERY_CONFIG
{
USHORT usTotalDuration;
ULONG ulPollConfig;
BOOLEAN fDisableCardEmulation;
UCHAR ucNfcIPMode;
BOOLEAN fNfcIPTgtModeDisable;
UCHAR ucNfcIPTgtMode;
UCHAR ucNfcCEMode;
UCHAR ucBailoutConfig;
UCHAR ucSystemCode[2];
UCHAR ucRequestCode;
UCHAR ucTimeSlotNumber;
NFC_RF_DISCOVERY_MODE eRfDiscoveryMode;
} NFC_RF_DISCOVERY_CONFIG, *PNFC_RF_DISCOVERY_CONFIG;
typedef enum _NFC_P2P_MODE
{
NfcDepDefault,
NfcDepPoll,
NfcDepListen
} NFC_P2P_MODE,
*PNFC_P2P_MODE;
#define MAX_ATR_LENGTH 48
typedef struct _NFC_P2P_PARAM_CONFIG
{
NFC_P2P_MODE eP2pMode;
_Field_range_(<=, MAX_ATR_LENGTH) BYTE cbGeneralBytes;
_Field_size_bytes_(cbGeneralBytes) BYTE pbGeneralBytes[MAX_ATR_LENGTH];
} NFC_P2P_PARAM_CONFIG, *PNFC_P2P_PARAM_CONFIG;
typedef enum _NFC_DEVICE_TYPE
{
NfcType1Tag,
NfcType2Tag,
NfcType3Tag,
NfcType4Tag,
NfcIP1Target,
NfcIP1Initiator,
NfcReader
} NFC_DEVICE_TYPE,
*PNFC_DEVICE_TYPE;
typedef BYTE NFC_RF_TECHNOLOGY;
typedef BYTE NFC_RF_PROTOCOL;
#define MAX_UID_SIZE 16
typedef HANDLE NFC_REMOTE_DEV_HANDLE, *PNFC_REMOTE_DEV_HANDLE;
typedef struct _NFC_REMOTE_DEV_INFO
{
NFC_REMOTE_DEV_HANDLE hRemoteDev;
NFC_DEVICE_TYPE eType;
NFC_RF_TECHNOLOGY eRFTech;
NFC_RF_PROTOCOL eProtocol;
_Field_range_(<=, MAX_UID_SIZE) BYTE cbUid;
_Field_size_bytes_(cbUid) BYTE pbUid[MAX_UID_SIZE];
} NFC_REMOTE_DEV_INFO, *PNFC_REMOTE_DEV_INFO;
typedef enum _NFC_RELEASE_TYPE
{
IdleMode,
SleepMode,
Discovery,
} NFC_RELEASE_TYPE,
*PNFC_RELEASE_TYPE;
typedef struct _NFC_REMOTE_DEVICE_DISCONNET
{
NFC_REMOTE_DEV_HANDLE hRemoteDev;
NFC_RELEASE_TYPE eReleaseType;
} NFC_REMOTE_DEVICE_DISCONNET, *PNFC_REMOTE_DEVICE_DISCONNET;
typedef struct _NFC_DATA_BUFFER
{
USHORT cbBuffer;
_Field_size_bytes_(cbBuffer) BYTE pbBuffer[ANYSIZE_ARRAY];
} NFC_DATA_BUFFER, *PNFC_DATA_BUFFER;
typedef struct _NFC_REMOTE_DEV_SEND_INFO
{
NFC_REMOTE_DEV_HANDLE hRemoteDev;
USHORT usTimeOut;
NFC_DATA_BUFFER sSendBuffer;
} NFC_REMOTE_DEV_SEND_INFO, *PNFC_REMOTE_DEV_SEND_INFO;
typedef struct _NFC_REMOTE_DEV_RECV_INFO
{
NFC_REMOTE_DEV_HANDLE hRemoteDev;
NFC_DATA_BUFFER sRecvBuffer;
} NFC_REMOTE_DEV_RECV_INFO, *PNFC_REMOTE_DEV_RECV_INFO;
typedef struct _NFC_NDEF_INFO
{
BOOLEAN fIsNdefFormatted;
BOOLEAN fIsReadOnly;
DWORD dwActualMessageLength;
DWORD dwMaxMessageLength;
} NFC_NDEF_INFO, *PNFC_NDEF_INFO;
typedef struct _LLCP_SOCKET_OPTION
{
USHORT uMIUX;
BYTE bRW;
} NFC_LLCP_SOCKET_OPTION, *PNFC_LLCP_SOCKET_OPTION;
#define MAX_LLCP_SERVICE_NAME_SIZE 256
typedef struct _NFC_LLCP_CONFIG
{
USHORT uMIU;
USHORT uWKS;
BYTE bLTO;
BYTE bOptions;
BOOLEAN fAutoActivate;
} NFC_LLCP_CONFIG, *PNFC_LLCP_CONFIG;
typedef struct _NFC_LLCP_SERVICE_NAME_ENTRY
{
_Field_range_(<=, MAX_LLCP_SERVICE_NAME_SIZE) DWORD cbServiceName;
_Field_size_bytes_(cbServiceName) BYTE pbServiceName[ANYSIZE_ARRAY];
} NFC_LLCP_SERVICE_NAME_ENTRY, *PNFC_LLCP_SERVICE_NAME_ENTRY;
typedef struct _NFC_LLCP_SERVICE_DISCOVER_REQUEST
{
NFC_REMOTE_DEV_HANDLE hRemoteDev;
DWORD NumberOfEntries;
_Field_size_(NumberOfEntries) NFC_LLCP_SERVICE_NAME_ENTRY ServiceNameEntries[ANYSIZE_ARRAY];
} NFC_LLCP_SERVICE_DISCOVER_REQUEST, *PNFC_LLCP_SERVICE_DISCOVER_REQUEST;
typedef struct _NFC_LLCP_SERVICE_DISCOVER_SAP
{
DWORD NumberOfEntries;
_Field_size_(NumberOfEntries) BYTE SAPEntries[ANYSIZE_ARRAY];
} NFC_LLCP_SERVICE_DISCOVER_SAP, *PNFC_LLCP_SERVICE_DISCOVER_SAP;
#define NFC_LLCP_SERVICE_DISCOVER_SAP_HEADER offsetof(NFC_LLCP_SERVICE_DISCOVER_SAP, SAPEntries)
typedef enum _NFC_LLCP_SOCKET_TYPE
{
ConnectionOriented,
Connectionless,
} NFC_LLCP_SOCKET_TYPE,
*PNFC_LLCP_SOCKET_TYPE;
typedef enum _NFC_LLCP_LINK_STATUS
{
LinkActivated,
LinkDeactivated
} NFC_LLCP_LINK_STATUS,
*PNFC_LLCP_LINK_STATUS;
typedef HANDLE NFC_LLCP_SOCKET_HANDLE, *PNFC_LLCP_SOCKET_HANDLE;
typedef struct _NFC_LLCP_SOCKET_INFO
{
NFC_LLCP_SOCKET_TYPE eSocketType;
NFC_LLCP_SOCKET_OPTION sSocketOption;
} NFC_LLCP_SOCKET_INFO, *PNFC_LLCP_SOCKET_INFO;
typedef struct _NFC_LLCP_SOCKET_SERVICE_INFO
{
NFC_LLCP_SOCKET_HANDLE hSocket;
BYTE bSAP;
NFC_LLCP_SERVICE_NAME_ENTRY sServiceName;
} NFC_LLCP_SOCKET_SERVICE_INFO, *PNFC_LLCP_SOCKET_SERVICE_INFO;
typedef struct _NFC_LLCP_SOCKET_PAYLOAD
{
NFC_LLCP_SOCKET_HANDLE hSocket;
BYTE bSAP;
NFC_DATA_BUFFER sPayload;
} NFC_LLCP_SOCKET_PAYLOAD, *PNFC_LLCP_SOCKET_PAYLOAD;
typedef struct _NFC_LLCP_SOCKET_ACCEPT_INFO
{
NFC_LLCP_SOCKET_HANDLE hSocket;
NFC_LLCP_SOCKET_OPTION sSocketOption;
} NFC_LLCP_SOCKET_ACCEPT_INFO, *PNFC_LLCP_SOCKET_ACCEPT_INFO;
typedef enum _NFC_LLCP_SOCKET_CONNECT_TYPE
{
NfcConnectBySap,
NfcConnectByUri
} NFC_LLCP_SOCKET_CONNECT_TYPE,
*PNFC_LLCP_SOCKET_CONNECT_TYPE;
typedef struct _NFC_LLCP_SOCKET_CONNECT_INFO
{
NFC_REMOTE_DEV_HANDLE hRemoteDev;
NFC_LLCP_SOCKET_HANDLE hSocket;
NFC_LLCP_SOCKET_CONNECT_TYPE eConnectType;
union
{
BYTE bSAP;
NFC_LLCP_SERVICE_NAME_ENTRY sServiceName;
};
} NFC_LLCP_SOCKET_CONNECT_INFO, *PNFC_LLCP_SOCKET_CONNECT_INFO;
typedef struct _NFC_LLCP_SOCKET_CL_PAYLOAD
{
NFC_LLCP_SOCKET_HANDLE hSocket;
BYTE bSAP;
NFC_DATA_BUFFER sPayload;
} NFC_LLCP_SOCKET_CL_PAYLOAD, *PNFC_LLCP_SOCKET_CL_PAYLOAD;
typedef enum _NFC_LLCP_SOCKET_ERROR
{
NfcLlcpErrorDisconnected,
NfcLlcpErrorFrameRejected,
NfcLlcpErrorBusyCondition,
NfcLlcpErrorNotBusyCondition,
} NFC_LLCP_SOCKET_ERROR,
*PNFC_LLCP_SOCKET_ERROR;
typedef struct _NFC_LLCP_SOCKET_ERROR_INFO
{
NFC_LLCP_SOCKET_HANDLE hSocket;
NFC_LLCP_SOCKET_ERROR eSocketError;
} NFC_LLCP_SOCKET_ERROR_INFO, *PNFC_LLCP_SOCKET_ERROR_INFO;
typedef enum _NFC_SNEP_SERVER_TYPE
{
DefaultSnepServer = 0,
ExtendedSnepServer
} NFC_SNEP_SERVER_TYPE,
*PNFC_SNEP_SERVER_TYPE;
typedef enum _NFC_SNEP_REQUEST_TYPE
{
SnepRequestGet = 0,
SnepRequestPut,
} NFC_SNEP_REQUEST_TYPE,
*PNFC_SNEP_REQUEST_TYPE;
#define MAX_SNEP_SERVER_NAME_SIZE 256
typedef HANDLE NFC_SNEP_SERVER_HANDLE, *PNFC_SNEP_SERVER_HANDLE;
typedef HANDLE NFC_SNEP_SERVER_CONNECTION_HANDLE, *PNFC_SNEP_SERVER_CONNECTION_HANDLE;
typedef NFC_LLCP_SOCKET_OPTION NFC_SNEP_SOCKET_OPTION, *PNFC_SNEP_SOCKET_OPTION;
typedef struct _NFC_LLCP_SERVICE_NAME_ENTRY NFC_SNEP_SERVICE_NAME, *PNFC_SNEP_SERVICE_NAME;
typedef struct _NFC_SNEP_SERVER_INFO
{
NFC_SNEP_SERVER_TYPE eServerType;
NFC_SNEP_SOCKET_OPTION sSocketOption;
USHORT usInboxSize;
BYTE bSAP;
NFC_SNEP_SERVICE_NAME sService;
} NFC_SNEP_SERVER_INFO, *PNFC_SNEP_SERVER_INFO;
typedef struct _NFC_SNEP_SERVER_ACCEPT_INFO
{
NFC_SNEP_SERVER_HANDLE hSnepServer;
NFC_SNEP_SERVER_CONNECTION_HANDLE hConnection;
NFC_SNEP_SOCKET_OPTION sSocketOption;
} NFC_SNEP_SERVER_ACCEPT_INFO, *PNFC_SNEP_SERVER_ACCEPT_INFO;
typedef struct _NFC_SNEP_SERVER_REQUEST
{
NFC_SNEP_SERVER_HANDLE hSnepServer;
NFC_SNEP_SERVER_CONNECTION_HANDLE hConnection;
NFC_SNEP_REQUEST_TYPE eRequestType;
NFC_DATA_BUFFER sRequestPayload;
} NFC_SNEP_SERVER_REQUEST, *PNFC_SNEP_SERVER_REQUEST;
typedef struct _NFC_SNEP_SERVER_RESPONSE_INFO
{
NFC_SNEP_SERVER_HANDLE hSnepServer;
NFC_SNEP_SERVER_CONNECTION_HANDLE hConnection;
DWORD dwResponseStatus;
NFC_DATA_BUFFER sResponsePayload;
} NFC_SNEP_SERVER_RESPONSE_INFO, *PNFC_SNEP_SERVER_RESPONSE_INFO;
#define NFC_SNEP_SERVER_RESPONSE_HEADER \
offsetof(NFC_SNEP_SERVER_RESPONSE_INFO, sResponsePayload) + offsetof(NFC_DATA_BUFFER, pbBuffer)
typedef HANDLE NFC_SNEP_CLIENT_HANDLE, *PNFC_SNEP_CLIENT_HANDLE;
typedef NFC_DATA_BUFFER NFC_SNEP_CLIENT_DATA_BUFFER, *PNFC_SNEP_CLIENT_DATA_BUFFER;
typedef struct _NFC_SNEP_CLIENT_INFO
{
NFC_REMOTE_DEV_HANDLE hRemoteDev;
NFC_SNEP_SERVER_TYPE eServerType;
NFC_SNEP_SOCKET_OPTION sSocketOption;
NFC_SNEP_SERVICE_NAME sService;
} NFC_SNEP_CLIENT_INFO, *PNFC_SNEP_CLIENT_INFO;
typedef struct _NFC_SNEP_CLIENT_PUT_INFO
{
NFC_SNEP_CLIENT_HANDLE hSnepClient;
NFC_DATA_BUFFER sPutPayload;
} NFC_SNEP_CLIENT_PUT_INFO, *PNFC_SNEP_CLIENT_PUT_INFO;
#define NFC_SNEP_CLIENT_PUT_HEADER offsetof(NFC_SNEP_CLIENT_PUT_INFO, sPutPayload) + offsetof(NFC_DATA_BUFFER, pbBuffer)
typedef struct _NFC_SNEP_CLIENT_GET_INFO
{
NFC_SNEP_CLIENT_HANDLE hSnepClient;
NFC_DATA_BUFFER sGetPayload;
} NFC_SNEP_CLIENT_GET_INFO, *PNFC_SNEP_CLIENT_GET_INFO;
#define NFC_SNEP_CLIENT_GET_HEADER offsetof(NFC_SNEP_CLIENT_GET_INFO, sGetPayload) + offsetof(NFC_DATA_BUFFER, pbBuffer)
typedef SECURE_ELEMENT_TYPE NFC_SE_TYPE;
typedef HANDLE NFC_SE_HANDLE;
typedef SECURE_ELEMENT_EVENT_TYPE NFC_SE_EVENT_TYPE;
typedef enum _NFC_SE_EMULATION_MODE
{
EmulationDisabled = 0,
EmulationEnabled = 1,
} NFC_SE_EMULATION_MODE,
*PNFC_SE_EMULATION_MODE;
typedef struct _NFC_SE_INFO
{
NFC_SE_HANDLE hSecureElement;
NFC_SE_TYPE eSecureElementType;
} NFC_SE_INFO, *PNFC_SE_INFO;
typedef struct _NFC_SE_LIST
{
DWORD NumberOfEndpoints;
_Field_size_(NumberOfEndpoints) NFC_SE_INFO EndpointList[ANYSIZE_ARRAY];
} NFC_SE_LIST, *PNFC_SE_LIST;
typedef struct _NFC_SE_EMULATION_MODE_INFO
{
NFC_SE_HANDLE hSecureElement;
NFC_SE_EMULATION_MODE eMode;
} NFC_SE_EMULATION_MODE_INFO, *PNFC_SE_EMULATION_MODE_INFO;
typedef SECURE_ELEMENT_ROUTING_TYPE NFC_SE_ROUTING_TABLE_TYPE;
typedef struct _NFC_SE_TECH_ROUTING_INFO
{
NFC_SE_HANDLE hSecureElement;
BYTE bPowerState;
BYTE eRfTechType;
} NFC_SE_TECH_ROUTING_INFO, *PNFC_SE_TECH_ROUTING_INFO;
typedef struct _NFC_SE_PROTO_ROUTING_INFO
{
NFC_SE_HANDLE hSecureElement;
BYTE bPowerState;
BYTE eRfProtocolType;
} NFC_SE_PROTO_ROUTING_INFO, *PNFC_SE_PROTO_ROUTING_INFO;
typedef struct _NFC_SE_AID_ROUTING_INFO
{
NFC_SE_HANDLE hSecureElement;
BYTE bPowerState;
_Field_range_(<=, ISO_7816_MAXIMUM_AID_LENGTH) DWORD cbAid;
_Field_size_bytes_(cbAid) BYTE pbAid[ISO_7816_MAXIMUM_AID_LENGTH];
} NFC_SE_AID_ROUTING_INFO, *PNFC_SE_AID_ROUTING_INFO;
typedef struct _NFC_SE_ROUTING_TABLE_ENTRY
{
NFC_SE_ROUTING_TABLE_TYPE eRoutingType;
union
{
NFC_SE_TECH_ROUTING_INFO TechRoutingInfo;
NFC_SE_PROTO_ROUTING_INFO ProtoRoutingInfo;
NFC_SE_AID_ROUTING_INFO AidRoutingInfo;
};
} NFC_SE_ROUTING_TABLE_ENTRY, *PNFC_SE_ROUTING_TABLE_ENTRY;
typedef struct _NFC_SE_ROUTING_TABLE
{
DWORD NumberOfEntries;
_Field_size_(NumberOfEntries) NFC_SE_ROUTING_TABLE_ENTRY TableEntries[ANYSIZE_ARRAY];
} NFC_SE_ROUTING_TABLE, *PNFC_SE_ROUTING_TABLE;
#define NFC_SE_ROUTING_TABLE_AND_ENTRIES(n) \
struct \
{ \
NFC_SE_ROUTING_TABLE Table; \
NFC_SE_ROUTING_TABLE_ENTRY ExtraEntries[n - 1]; \
}
typedef struct _NFC_SE_EVENT_INFO
{
NFC_SE_HANDLE hSecureElement;
NFC_SE_EVENT_TYPE eEventType;
DWORD cbEventData;
_Field_size_bytes_(cbEventData) BYTE pbEventData[ANYSIZE_ARRAY];
} NFC_SE_EVENT_INFO, *PNFC_SE_EVENT_INFO;
#endif // NTDDI_VERSION