libIDCertificateLoader.h 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272
  1. #pragma once
  2. #ifdef LIBIDCERTIFICATELOADER_EXPORTS
  3. #define LIBSUBDEVICELOADER_API __declspec(dllexport)
  4. #else
  5. #define LIBSUBDEVICELOADER_API __declspec(dllimport)
  6. #pragma comment(lib, "libIDCertificateLoader.lib")
  7. #endif
  8. #include <windows.h>
  9. #include "IDCerClass.h"
  10. #ifdef __cplusplus
  11. extern "C" {
  12. #endif
  13. //二代身份证信息结构(需要支持外国人永久居留证请使用IDCerInfoEx)
  14. //请务必按照各字段指定格式返回数据
  15. struct Bridge_IDCerInfo
  16. {
  17. struct Name {
  18. CHAR data[MAX_IDCER_INFO_SIZE];
  19. DWORD dwSize;
  20. }name;
  21. struct Sex {
  22. CHAR data[MAX_IDCER_SIMPLE_INFO_SIZE];
  23. DWORD dwSize;
  24. }sex;
  25. struct Nation {
  26. CHAR data[MAX_IDCER_SIMPLE_INFO_SIZE];
  27. DWORD dwSize;
  28. }nation;
  29. struct Birthday {//format:1986年10月07日
  30. CHAR data[MAX_IDCER_SIMPLE_INFO_SIZE];
  31. DWORD dwSize;
  32. }birthday;
  33. struct Address {
  34. CHAR data[MAX_IDCER_INFO_SIZE];
  35. DWORD dwSize;
  36. }address;
  37. struct Idno {
  38. CHAR data[MAX_IDCER_SIMPLE_INFO_SIZE];
  39. DWORD dwSize;
  40. }idno;
  41. struct Department {
  42. CHAR data[MAX_IDCER_INFO_SIZE];
  43. DWORD dwSize;
  44. }department;
  45. struct StartDate {//format:2010.08.09
  46. CHAR data[MAX_IDCER_SIMPLE_INFO_SIZE];
  47. DWORD dwSize;
  48. }startDate;
  49. struct EndDate { //format:2020.08.09
  50. CHAR data[MAX_IDCER_SIMPLE_INFO_SIZE];
  51. DWORD dwSize;
  52. }endDate;
  53. struct NewAddress {
  54. CHAR data[MAX_IDCER_INFO_SIZE];
  55. DWORD dwSize;
  56. }newAddress;
  57. struct PhotoPath {
  58. CHAR data[MAX_IDCER_PHOTO_PATH];
  59. DWORD dwSize;
  60. }photoPath;
  61. };
  62. //二代证信息结构(支持外国人永久居留证)
  63. //请务必按照各字段指定格式返回数据
  64. struct Bridge_IDCerInfoEx
  65. {
  66. struct Name {//中文姓名
  67. CHAR data[MAX_IDCER_INFO_SIZE];
  68. DWORD dwSize;
  69. }name;
  70. struct Sex {//性别
  71. CHAR data[MAX_IDCER_SIMPLE_INFO_SIZE];
  72. DWORD dwSize;
  73. }sex;
  74. struct Nation {//民族(二代证专用)
  75. CHAR data[MAX_IDCER_SIMPLE_INFO_SIZE];
  76. DWORD dwSize;
  77. }nation;
  78. struct Birthday {//出生日期,格式:1986年10月07日
  79. CHAR data[MAX_IDCER_SIMPLE_INFO_SIZE];
  80. DWORD dwSize;
  81. }birthday;
  82. struct Address {//住址(二代证专用)
  83. CHAR data[MAX_IDCER_INFO_SIZE];
  84. DWORD dwSize;
  85. }address;
  86. struct Idno {//证件号码,二代证指身份证号,外国人指永久居留证号
  87. CHAR data[MAX_IDCER_SIMPLE_INFO_SIZE];
  88. DWORD dwSize;
  89. }idno;
  90. struct Department {//二代证指签发机关,外国人指当次申请受理机关代码
  91. CHAR data[MAX_IDCER_INFO_SIZE];
  92. DWORD dwSize;
  93. }department;
  94. struct StartDate {//有效期起始日(签发日)格式:2010.08.09
  95. CHAR data[MAX_IDCER_SIMPLE_INFO_SIZE];
  96. DWORD dwSize;
  97. }startDate;
  98. struct EndDate { //有效期截止日(终止日)格式:2020.08.09
  99. CHAR data[MAX_IDCER_SIMPLE_INFO_SIZE];
  100. DWORD dwSize;
  101. }endDate;
  102. struct NewAddress {//最新地址,二代证专用
  103. CHAR data[MAX_IDCER_INFO_SIZE];
  104. DWORD dwSize;
  105. }newAddress;
  106. struct PhotoPath {
  107. CHAR data[MAX_IDCER_PHOTO_PATH];
  108. DWORD dwSize;
  109. }photoPath;
  110. struct EnglishName {//英文姓名,外国人专用
  111. CHAR data[MAX_IDCER_INFO_SIZE];
  112. DWORD dwSize;
  113. }englishName;
  114. struct Nationality {//国籍或地区代码,外国人专用
  115. CHAR data[IDCER_EIGHT_BYTE_SIZE];
  116. DWORD dwSize;
  117. }nationality;
  118. struct IdVersion {//证件版本号,外国人专用
  119. CHAR data[IDCER_EIGHT_BYTE_SIZE];
  120. DWORD dwSize;
  121. }idVersion;
  122. struct IdType {//证件类型标识,外国人取值'I',二代证为空
  123. CHAR data[IDCER_EIGHT_BYTE_SIZE];
  124. DWORD dwSize;
  125. }idType;
  126. struct Reserved {//保留字段,外国人专用
  127. CHAR data[IDCER_EIGHT_BYTE_SIZE];
  128. DWORD dwSize;
  129. }reserved;
  130. struct TXZCode {//通行证号码(港澳台居住证)
  131. CHAR data[MAX_IDCER_SIMPLE_INFO_SIZE];
  132. DWORD dwSize;
  133. }txzCode;
  134. struct IssuedSN {//签发次数(港澳台居住证)
  135. CHAR data[IDCER_EIGHT_BYTE_SIZE];
  136. DWORD dwSize;
  137. }issuedSN;
  138. struct Reserved2 {//备用2(港澳台居住证)
  139. CHAR data[MAX_IDCER_SIMPLE_INFO_SIZE];
  140. DWORD dwSize;
  141. }reserved2;
  142. struct Reserved3 {//备用3(港澳台居住证)
  143. CHAR data[MAX_IDCER_SIMPLE_INFO_SIZE];
  144. DWORD dwSize;
  145. }reserved3;
  146. struct Reserved4 {//备用4(港澳台居住证)
  147. CHAR data[MAX_IDCER_SIMPLE_INFO_SIZE];
  148. DWORD dwSize;
  149. }reserved4;
  150. struct Reserved5 {//备用5(港澳台居住证)
  151. CHAR data[MAX_IDCER_SIMPLE_INFO_SIZE];
  152. DWORD dwSize;
  153. }reserved5;
  154. };
  155. struct Bridge_IDCerInfoEx2
  156. {
  157. struct Name {//中文姓名
  158. CHAR data[MAX_IDCER_INFO_SIZE];
  159. DWORD dwSize;
  160. }name;
  161. struct Sex {//性别
  162. CHAR data[MAX_IDCER_SIMPLE_INFO_SIZE];
  163. DWORD dwSize;
  164. }sex;
  165. struct Nation {//民族(二代证专用)
  166. CHAR data[MAX_IDCER_SIMPLE_INFO_SIZE];
  167. DWORD dwSize;
  168. }nation;
  169. struct Birthday {//出生日期,原始格式:19861007
  170. CHAR data[MAX_IDCER_SIMPLE_INFO_SIZE];
  171. DWORD dwSize;
  172. }birthday;
  173. struct Address {//住址(二代证专用)
  174. CHAR data[MAX_IDCER_INFO_SIZE];
  175. DWORD dwSize;
  176. }address;
  177. struct Idno {//证件号码,二代证指身份证号,外国人指永久居留证号
  178. CHAR data[2 * MAX_IDCER_SIMPLE_INFO_SIZE]; //拓展至64字节
  179. DWORD dwSize;
  180. }idno;
  181. struct Department {//二代证指签发机关,外国人指当次申请受理机关代码
  182. CHAR data[MAX_IDCER_INFO_SIZE];
  183. DWORD dwSize;
  184. }department;
  185. struct StartDate {//有效期起始日(签发日)原始格式:20200809
  186. CHAR data[MAX_IDCER_SIMPLE_INFO_SIZE];
  187. DWORD dwSize;
  188. }startDate;
  189. struct EndDate {//有效期截止日(终止日)原始格式:20200809
  190. CHAR data[MAX_IDCER_SIMPLE_INFO_SIZE];
  191. DWORD dwSize;
  192. }endDate;
  193. struct NewAddress {//最新地址,二代证专用
  194. CHAR data[MAX_IDCER_INFO_SIZE];
  195. DWORD dwSize;
  196. }newAddress;
  197. struct PhotoPath {
  198. CHAR data[MAX_IDCER_PHOTO_PATH];
  199. DWORD dwSize;
  200. }photoPath;
  201. struct EnglishName {//英文姓名,外国人专用
  202. CHAR data[MAX_IDCER_INFO_SIZE];
  203. DWORD dwSize;
  204. }englishName;
  205. struct Nationality {//国籍或地区代码,外国人专用
  206. CHAR data[IDCER_EIGHT_BYTE_SIZE];
  207. DWORD dwSize;
  208. }nationality;
  209. struct IdVersion {//证件版本号,外国人专用
  210. CHAR data[IDCER_EIGHT_BYTE_SIZE];
  211. DWORD dwSize;
  212. }idVersion;
  213. struct IdType {//证件类型标识,外国人取值'I',二代证为空
  214. CHAR data[IDCER_EIGHT_BYTE_SIZE];
  215. DWORD dwSize;
  216. }idType;
  217. struct Reserved {//保留字段,外国人专用
  218. CHAR data[IDCER_EIGHT_BYTE_SIZE];
  219. DWORD dwSize;
  220. }reserved;
  221. struct TXZCode {//通行证号码(港澳台居住证)
  222. CHAR data[MAX_IDCER_SIMPLE_INFO_SIZE];
  223. DWORD dwSize;
  224. }txzCode;
  225. struct IssuedSN {//签发次数(港澳台居住证)
  226. CHAR data[IDCER_EIGHT_BYTE_SIZE];
  227. DWORD dwSize;
  228. }issuedSN;
  229. struct Reserved2 {//备用2(港澳台居住证)
  230. CHAR data[MAX_IDCER_SIMPLE_INFO_SIZE];
  231. DWORD dwSize;
  232. }reserved2;
  233. struct Reserved3 {//备用3(港澳台居住证)
  234. CHAR data[MAX_IDCER_SIMPLE_INFO_SIZE];
  235. DWORD dwSize;
  236. }reserved3;
  237. struct Reserved4 {//备用4(港澳台居住证)
  238. CHAR data[MAX_IDCER_SIMPLE_INFO_SIZE];
  239. DWORD dwSize;
  240. }reserved4;
  241. struct Reserved5 {//备用5(港澳台居住证)
  242. CHAR data[MAX_IDCER_SIMPLE_INFO_SIZE];
  243. DWORD dwSize;
  244. }reserved5;
  245. };
  246. LIBSUBDEVICELOADER_API ErrorCodeEnum Bridge_LoadDevObject(const char* libraryPath);
  247. LIBSUBDEVICELOADER_API ErrorCodeEnum Bridge_ReleaseDevObject();
  248. //////////////////////////////////////////////////////////////////////////
  249. LIBSUBDEVICELOADER_API ErrorCodeEnum Bridge_GetDevCategory(DevCategoryInfo* pDevCategory);
  250. LIBSUBDEVICELOADER_API ErrorCodeEnum Bridge_Reset();
  251. LIBSUBDEVICELOADER_API ErrorCodeEnum Bridge_DevClose();
  252. LIBSUBDEVICELOADER_API ErrorCodeEnum Bridge_GetLastErr(DevErrorInfo* pDevErrInfo);
  253. //////////////////////////////////////////////////////////////////////////
  254. LIBSUBDEVICELOADER_API ErrorCodeEnum Bridge_DevOpen(DWORD dwPort);
  255. LIBSUBDEVICELOADER_API ErrorCodeEnum Bridge_IDCerRFControl(int bControl);
  256. LIBSUBDEVICELOADER_API ErrorCodeEnum Bridge_IDCerAuthenticate();
  257. LIBSUBDEVICELOADER_API ErrorCodeEnum Bridge_IDCerGetData(Bridge_IDCerInfo* idCerInfo);
  258. LIBSUBDEVICELOADER_API ErrorCodeEnum Bridge_IDCerGetDataEx(Bridge_IDCerInfoEx* idCerInfoEx);
  259. LIBSUBDEVICELOADER_API ErrorCodeEnum Bridge_ForceIDEject();
  260. LIBSUBDEVICELOADER_API ErrorCodeEnum Bridge_ScanIDAndSaveImage();
  261. LIBSUBDEVICELOADER_API ErrorCodeEnum Bridge_QueryCardPos(int* pos);
  262. LIBSUBDEVICELOADER_API ErrorCodeEnum Bridge_IDCerGetDataEx2(Bridge_IDCerInfoEx2* idCerInfoEx2);
  263. #ifdef __cplusplus
  264. } // extern "C" {
  265. #endif