| Server IP : 209.209.40.120 / Your IP : 216.73.217.112 Web Server : Microsoft-IIS/10.0 System : Windows NT NEWWWW 10.0 build 17763 (Windows Server 2019) i586 User : NEWWWW$ ( 0) PHP Version : 8.3.30 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : C:/Program Files (x86)/Windows Kits/10/Include/10.0.19041.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 _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