最终版智能ic卡及智能密码钥匙密码应用接口规范国密.doc

上传人:文库蛋蛋多 文档编号:2390965 上传时间:2023-02-17 格式:DOC 页数:42 大小:900KB
返回 下载 相关 举报
最终版智能ic卡及智能密码钥匙密码应用接口规范国密.doc_第1页
第1页 / 共42页
最终版智能ic卡及智能密码钥匙密码应用接口规范国密.doc_第2页
第2页 / 共42页
最终版智能ic卡及智能密码钥匙密码应用接口规范国密.doc_第3页
第3页 / 共42页
最终版智能ic卡及智能密码钥匙密码应用接口规范国密.doc_第4页
第4页 / 共42页
最终版智能ic卡及智能密码钥匙密码应用接口规范国密.doc_第5页
第5页 / 共42页
点击查看更多>>
资源描述

《最终版智能ic卡及智能密码钥匙密码应用接口规范国密.doc》由会员分享,可在线阅读,更多相关《最终版智能ic卡及智能密码钥匙密码应用接口规范国密.doc(42页珍藏版)》请在三一办公上搜索。

1、智能IC卡及智能密码钥匙密码应用接口规范Smart Card and Smart TokenCryptography Application Interface Specification国家密码管理局2010年4月目 次前 言IV1范围12规范性引用文件13术语和定义14缩略语25结构模型25.1层次关系25.2设备的应用结构36数据类型定义46.1算法标识46.1.1分组密码算法标识46.1.2非对称密码算法标识56.1.3密码杂凑算法标识56.2基本数据类型56.3常量定义66.4复合数据类型66.4.1版本66.4.2设备信息66.4.3RSA公钥数据结构76.4.4RSA私钥数据结构

2、86.4.5ECC公钥数据结构86.4.6ECC私钥数据结构96.4.7ECC密文数据结构96.4.8ECC签名数据结构96.4.9分组密码参数106.4.10文件属性106.4.11权限类型116.4.12设备状态117接口函数117.1设备管理117.1.1概述117.1.2等待设备插拔事件117.1.3取消等待设备插拔事件127.1.4枚举设备127.1.5连接设备127.1.6断开连接127.1.7获取设备状态127.1.8设置设备标签127.1.9获取设备信息137.1.10锁定设备137.1.11解锁设备137.1.12设备命令传输137.2访问控制137.2.1概述137.2.2

3、修改设备认证密钥147.2.3设备认证147.2.4修改PIN147.2.5获取PIN信息147.2.6校验PIN157.2.7解锁PIN157.2.8清除应用安全状态157.3应用管理157.3.1概述157.3.2创建应用157.3.3枚举应用167.3.4删除应用167.3.5打开应用167.3.6关闭应用167.4文件管理177.4.1概述177.4.2创建文件177.4.3删除文件177.4.4枚举文件177.4.5获取文件属性187.4.6读文件187.4.7写文件187.5容器管理187.5.1概述187.5.2创建容器197.5.3删除容器197.5.4打开容器197.5.5关

4、闭容器197.5.6枚举容器197.6密码服务207.6.1概述207.6.2生成随机数217.6.3生成外部RSA密钥对217.6.4生成RSA签名密钥对217.6.5导入RSA加密密钥对217.6.6RSA签名227.6.7RSA验签227.6.8RSA生成并导出会话密钥227.6.9RSA外来公钥运算237.6.10RSA外来私钥运算237.6.11生成ECC签名密钥对237.6.12导入ECC加密密钥对247.6.13ECC签名247.6.14ECC验签247.6.15ECC生成并导出会话密钥247.6.16ECC外来公钥加密257.6.17ECC外来私钥解密257.6.18ECC外来

5、私钥签名257.6.19ECC外来公钥验签257.6.20ECC生成密钥协商参数并输出267.6.21ECC产生协商数据并计算会话密钥267.6.22ECC计算会话密钥267.6.23导出公钥277.6.24导入会话密钥277.6.25明文导入会话密钥277.6.26加密初始化287.6.27单组数据加密287.6.28多组数据加密287.6.29结束加密287.6.30解密初始化297.6.31单组数据解密297.6.32多组数据解密297.6.33结束解密307.6.34密码杂凑初始化307.6.35单组数据密码杂凑307.6.36多组数据密码杂凑307.6.37结束密码杂凑317.6.3

6、8消息鉴别码运算初始化317.6.39单组数据消息鉴别码运算317.6.40多组数据消息鉴别码运算327.6.41结束消息鉴别码运算327.6.42关闭密码对象句柄328设备的安全要求328.1设备使用阶段328.2权限管理328.2.1权限分类328.2.2权限使用328.2.3设备认证338.2.4PIN码安全要求338.3密钥安全要求338.4设备抗攻击要求33附录A (规范性附录) 错误代码定义和说明34前 言本规范涉及的密码算法按照国家密码管理部门的要求使用。本规范的附录A为规范性附录。本规范由国家密码管理局提出并归口。本规范起草单位:北京海泰方圆科技有限公司、北京握奇智能科技有限公

7、司、北京大明五洲科技有限公司、恒宝股份有限公司、深圳市明华澳汉科技股份有限公司、武汉天喻信息产业股份有限公司、北京飞天诚信科技有限公司、华翔腾数码科技有限公司。本规范主要起草人:石玉平、柳增寿、胡俊义、管延军、项莉、雷继业、胡鹏、赵再兴、段晓毅、刘玉峰、刘伟丰、陈吉、何永福、李高锋、黄东杰、王建承、汪雪林、赵李明。本规范责任专家:刘平、郭宝安。智能IC卡及智能密码钥匙密码应用接口规范1 范围本规范规定了基于PKI密码体制的智能IC卡及智能密码钥匙密码应用接口,描述了密码应用接口的函数、数据类型、参数的定义和设备的安全要求。本规范适用于智能IC卡及智能密码钥匙产品的研制、使用和检测。2 规范性引

8、用文件下列文件中的条款通过本规范的引用而成为本规范的条款。凡是注日期的引用文件,其随后所有的修改单(不包括勘误的内容)或修订版均不适用于本规范,然而,鼓励根据本规范达成协议的各方研究是否可使用这些的最新版本。凡是不注日期的引用文件,其最新版本适用于本规范。GB/T AAAAA公钥密码基础设施应用技术体系 SM2算法使用规范3 术语和定义以下术语和定义适用于本规范。3.1应用 application包括容器、设备认证密钥和文件的一种结构,具备独立的权限管理。3.2容器 container特指密钥容器,是一个用于存放非对称密钥对和会话密钥的逻辑对象。3.3设备 device智能IC卡及智能密码钥匙

9、的统称。3.4设备认证 device authentication智能IC卡或智能密码钥匙对应用程序的认证。3.5设备认证密钥 device authentication key用于设备认证的密钥。3.6设备标签 label设备的别名,可以由用户进行设定并存储于设备内部。3.7消息鉴别码 message authentication code (MAC)消息鉴别算法的输出。3.8管理员PIN Administrator PIN管理员的密码,为ASCII字符串。3.9用户PIN User PIN用户的个人密码,为ASCII字符串。3.10智能IC卡 smart card含CPU的IC卡,这里指能

10、完成密码功能的IC卡。3.11智能密码钥匙smart token能完成密码功能和安全存储的终端密码产品,一般采用USB接口。3.12SM1算法 SM1 algorithm一种国家商用密码分组加密算法,分组长度为128比特,密钥长度为128比特。3.13SM2算法 SM2 algorithm一种国家商用密码非对称密码算法,密钥长度为256比特。3.14SM3算法 SM3 algorithm一种国家商用密码密码杂凑算法,输出长度为256比特。3.15SMS4算法 SMS4 algorithm一种国家商用密码分组加密算法,分组长度为128比特,密钥长度为128比特。3.16SSF33算法 SSF33

11、 algorithm一种国家商用密码分组加密算法,分组长度为128比特,密钥长度为128比特。4 缩略语下列缩略语适用于本规范:API应用编程接口(Application Programming Interface)PKI公钥基础设施(Public Key Infrastructure)PKCS#1公钥密码使用标准系列规范中的第1部分,定义RSA公开密钥算法加密和签名机制(the Public-Key Cryptography Standard Part 1)PKCS#5公钥密码使用标准系列规范中的第5部分,描述一种利用从口令派生出来的安全密钥加密字符串的方法(the Public-Key C

12、ryptography Standard Part 5)PIN个人身份识别码(Personal Identification Number)MAC消息鉴别码(Message Authentication Code)ECC椭圆曲线密码算法(Elliptic Curve Cryptography)5 结构模型5.1 层次关系智能IC卡及智能密码钥匙密码应用接口位于智能IC卡及智能密码钥匙应用程序与设备之间,如图1所示。图1接口在应用层次关系中的位置5.2 设备的应用结构一个设备中存在设备认证密钥和多个应用,应用之间相互独立。设备的逻辑结构如图2所示。图2 设备逻辑结构应用由管理员PIN、用户PIN

13、、文件和容器组成,可以存在多个文件和多个容器。每个应用维护各自的与管理员PIN和用户PIN相关的权限状态。应用的逻辑结构如图3所示。图3 应用逻辑结构图容器中存放加密密钥对、签名密钥对和会话密钥。其中加密密钥对用于保护会话密钥,签名密钥对用于数字签名和验证,会话密钥用于数据加解密和MAC运算。其中,签名密钥对由内部产生,加密密钥对由外部产生并安全导入,会话密钥可由内部产生或者由外部产生并安全导入。6 数据类型定义6.1 算法标识6.1.1 分组密码算法标识分组密码算法标识包含密码算法的类型和加密模式。分组密码算法标识的编码规则为:从低位到高位,第0位到第7位按位表示分组密码算法工作模式,第8位

14、到第31位按位表示分组密码算法类型,分组密码算法的标识如表1所示。表 1 分组密码算法标识表标签标识符描述SGD_SM1_ECB0x00000101SM1算法ECB加密模式SGD_SM1_CBC0x00000102SM1算法CBC加密模式SGD_SM1_CFB0x00000104SM1算法CFB加密模式SGD_SM1_OFB0x00000108SM1算法OFB加密模式SGD_SM1_MAC0x00000110SM1算法MAC运算SGD_SSF33_ECB0x00000201SSF33算法ECB加密模式SGD_SSF33_CBC0x00000202SSF33算法CBC加密模式SGD_SSF33_

15、CFB0x00000204SSF33算法CFB加密模式SGD_SSF33_OFB0x00000208SSF33算法OFB加密模式SGD_SSF33_MAC0x00000210SSF33算法MAC运算SGD_SMS4_ECB0x00000401SMS4算法ECB加密模式SGD_SMS4_CBC0x00000402SMS4算法CBC加密模式SGD_SMS4_CFB0x00000404SMS4算法CFB加密模式SGD_SMS4_OFB0x00000408SMS4算法OFB加密模式SGD_SMS4_MAC0x00000410SMS4算法MAC运算6.1.2 非对称密码算法标识非对称密码算法标识仅定义了

16、密码算法的类型,在使用非对称算法进行数字签名运算时,可将非对称密码算法标识符与密码杂凑算法标识符进行“或”运算后使用,如“RSA with SHA1”可表示为SGD_RSA | SGD_SHA1,即0x00010002,“|”表示“或”运算。非对称密码算法标识的编码规则为:从低位到高位,第0位到第7位为0,第8位到第15位按位表示非对称密码算法的算法协议,如果所表示的非对称算法没有相应的算法协议则为0,第16位到第31位按位表示非对称密码算法类型,非对称密码算法的标识如表2所示。表 2 非对称密码算法标识表标签标识符描述SGD_RSA0x00010000RSA算法SGD_SM2_10x0002

17、0100椭圆曲线签名算法SGD_SM2_20x00020200椭圆曲线密钥交换协议SGD_SM2_30x00020400椭圆曲线加密算法6.1.3 密码杂凑算法标识密码杂凑算法标识符可以在进行密码杂凑运算或计算MAC时应用,也可以与非对称密码算法标识符进行“或”运算后使用,表示签名运算前对数据进行密码杂凑运算的算法类型。密码杂凑算法标识的编码规则为:从低位到高位,第0位到第7位表示密码杂凑算法,第8位到第31位为0,密码杂凑算法的标识如表3所示。表 3 密码杂凑算法标识表标签标识符描述SGD_SM30x00000001SM3密码杂凑算法SGD_SHA10x00000002SHA1密码杂凑算法S

18、GD_SHA2560x00000004SHA256密码杂凑算法6.2 基本数据类型本规范中的字节数组均为高位字节在前(Big-Endian)方式存储和交换。基本数据类型定义如表4所示:表 4 基本数据类型类型名称描述定义INT8有符号8位整数INT16有符号16位整数INT32有符号32位整数UINT8无符号8位整数UINT16无符号16位整数UINT32无符号32位整数BOOL布尔类型,取值为TRUE或FALSEBYTE字节类型,无符号8位整数typedef UINT8 BYTECHAR字符类型,无符号8位整数typedef UINT8 CHARSHORT短整数,有符号16位typedef

19、INT16 SHORTUSHORT无符号16位整数typedef UINT16 USHORTLONG 长整数,有符号32位整数typedef INT32 LONGULONG长整数,无符号32位整数typedef UINT32 ULONGUINT无符号32位整数typedef UINT32 UINTWORD字类型,无符号16位整数typedef UINT16 WORDDWORD双字类型,无符号32位整数typedef UINT32 DWORDFLAGS标志类型,无符号32位整数typedef UINT32 FLAGSLPSTR8位字符串指针,按照UTF8格式存储及交换typedef CHAR *

20、 LPSTRHANDLE 句柄,指向任意数据对象的起始地址typedef void * HANDLEDEVHANDLE设备句柄typedef HANDLE DEVHANDLEHAPPLICATION应用句柄typedef HANDLE HAPPLICATIONHCONTAINER容器句柄typedef HANDLE HCONTAINER6.3 常量定义数据常量标识定义了在规范中用到的常量的取值。数据常量标识的定义如表5所示。表 5 常量定义常量名取值描述TRUE0x00000001布尔值为真FALSE0x00000000布尔值为假DEVAPI_stdcall_stdcall函数调用方式ADMI

21、N_TYPE0管理员PIN类型USER_TYPE1用户PIN类型6.4 复合数据类型6.4.1 版本(1)类型定义typedef struct Struct_VersionBYTE major;BYTE minor;VERSION;(2)数据项描述参见表6:表 6 版本定义数据项类型意义备注majorBYTE主版本号主版本号和次版本号以“.”分隔,例如 Version 1.0,主版本号为1,次版本号为0;Version 2.10,主版本号为2,次版本号为10。minorBYTE次版本号6.4.2 设备信息(1)类型定义typedef struct Struct_DEVINFOVERSIONVe

22、rsion;CHARManufacturer64;CHARIssuer64;CHARLabel32;CHARSerialNumber32;VERSIONHWVersion;VERSIONFirmwareVersion;ULONGAlgSymCap;ULONGAlgAsymCap;ULONGAlgHashCap;ULONGDevAuthAlgId;ULONGTotalSpace;ULONGFreeSpace;BYTE Reserved64;DEVINFO,*PDEVINFO;(2)数据项描述参见表7:表 7 设备信息描述数据项类型意义备注VersionVERSION版本号数据结构版本号,本结构的

23、版本号为1.0ManufacturerCHAR数组设备厂商信息以 0为结束符的ASCII字符串IssuerCHAR数组发行厂商信息以 0为结束符的ASCII字符串LabelCHAR数组设备标签以 0为结束符的ASCII字符串SerialNumberCHAR数组序列号以 0为结束符的ASCII字符串HWVersionVERSION设备硬件版本 FirmwareVersionVERSION设备本身固件版本AlgSymCapULONG分组密码算法标识AlgAsymCapULONG非对称密码算法标识AlgHashCapULONG密码杂凑算法标识DevAuthAlgIdULONG设备认证使用的分组密码算

24、法标识TotalSpaceULONG设备总空间大小FreeSpaceULONG用户可用空间大小ReservedBYTE保留扩展6.4.3 RSA公钥数据结构(1)类型定义typedef struct Struct_RSAPUBLICKEYBLOBULONGAlgID;ULONGBitLen;BYTEModulusMAX_RSA_MODULUS_LEN;BYTEPublicExponentMAX_RSA_EXPONENT_LEN;RSAPUBLICKEYBLOB, *PRSAPUBLICKEYBLOB;MAX_RSA_MODULUS_LEN为算法模数的最大长度;MAX_RSA_EXPONENT_

25、LEN为算法指数的最大长度。(2)数据项描述参见表8:表 8 RSA公钥数据结构数据项类型意义备注AlgIDULONG算法标识号BitLenULONG模数的实际位长度必须是8的倍数ModulusBYTE数组模数n = p * q实际长度为BitLen/8字节#define MAX_RSA_MODULUS_LEN 256#define MAX_RSA_EXPONENT_LEN 4PublicExponentBYTE数组公开密钥e一般为000100016.4.4 RSA私钥数据结构(1)类型定义typedef struct Struct_RSAPRIVATEKEYBLOBULONGAlgID;UL

26、ONGBitLen;BYTEModulusMAX_RSA_MODULUS_LEN;BYTEPublicExponentMAX_RSA_EXPONENT_LEN;BYTEPrivateExponentMAX_RSA_MODULUS_LEN;BYTEPrime1MAX_RSA_MODULUS_LEN/2;BYTEPrime2MAX_RSA_MODULUS_LEN/2;BYTEPrime1ExponentMAX_RSA_MODULUS_LEN/2;BYTEPrime2ExponentMAX_RSA_MODULUS_LEN/2;BYTECoefficientMAX_RSA_MODULUS_LEN/2;

27、RSAPRIVATEKEYBLOB, *PRSAPRIVATEKEYBLOB;MAX_RSA_MODULUS_LEN为RSA算法模数的最大长度;(2)数据项描述参见表9:表 9 RSA私钥数据结构数据项类型意义备注AlgIDULONG算法标识号BitLenULONG模数的实际位长度必须是8的倍数ModulusBYTE数组模数n = p * q实际长度为BitLen/8字节PublicExponentBYTE数组公开密钥e一般为00010001PrivateExponentBYTE数组私有密钥d实际长度为BitLen/8字节Prime1BYTE数组素数p实际长度为BitLen/16字节Prime

28、2BYTE数组素数q实际长度为BitLen/16字节Prime1ExponentBYTE数组d mod (p-1)的值实际长度为BitLen/16字节Prime2ExponentBYTE数组d mod (q -1)的值实际长度为BitLen/16字节CoefficientBYTE数组q模p的乘法逆元实际长度为BitLen/16字节6.4.5 ECC公钥数据结构(1)类型定义typedef struct Struct_ECCPUBLICKEYBLOBULONGBitLen;BYTEXCoordinateECC_MAX_XCOORDINATE_BITS_LEN/8;BYTEYCoordinateE

29、CC_MAX_YCOORDINATE_BITS_LEN/8;ECCPUBLICKEYBLOB, *PECCPUBLICKEYBLOB;ECC_MAX_XCOORDINATE_LEN为ECC算法X坐标的最大长度;ECC_MAX_YCOORDINATE_LEN为ECC算法Y坐标的最大长度。(2)数据项描述参见表10:表 10 ECC公钥数据结构数据项类型意义备注BitLenULONG模数的实际位长度必须是8的倍数XCoordinateBYTE数组曲线上点的X坐标有限域上的整数#define ECC_MAX_XCOORDINATE_BITS_LEN 512YCoordinateBYTE数组曲线上点的

30、Y坐标有限域上的整数#define ECC_MAX_YCOORDINATE_BITS_LEN 5126.4.6 ECC私钥数据结构(1)类型定义typedef struct Struct_ECCPRIVATEKEYBLOBULONGBitLen;BYTEPrivateKeyECC_MAX_MODULUS_BITS_LEN/8;ECCPRIVATEKEYBLOB, *PECCPRIVATEKEYBLOB;ECC_MAX_MODULUS_BITS_LEN为ECC算法模数的最大长度。(2)数据项描述参见表11:表 11 ECC私钥数据结构数据项类型意义备注BitLenULONG模数的实际位长度必须是

31、8的倍数PrivateKeyBYTE数组私有密钥有限域上的整数#define ECC_MAX_MODULUS_BITS_LEN 5126.4.7 ECC密文数据结构(1) 类型定义typedef struct Struct_ECCCIPHERBLOBBYTE XCoordinateECC_MAX_XCOORDINATE_BITS_LEN/8; BYTE YCoordinateECC_MAX_XCOORDINATE_BITS_LEN/8; BYTE HASH32; ULONGCipherLen;BYTE Cipher1; ECCCIPHERBLOB, *PECCCIPHERBLOB;(2)数据项

32、描述参见表12:表 12 ECC密文数据结构数据项类型意义备注XCoordinateBYTE数组与y组成椭圆曲线上的点(x,y)YCoordinateBYTE数组与x组成椭圆曲线上的点(x,y)HASHBYTE数组明文的杂凑值CipherLenULONG密文数据长度CipherBYTE数组密文数据实际长度为CipherLen6.4.8 ECC签名数据结构(1)类型定义typedef struct Struct_ECCSIGNATUREBLOBBYTE rECC_MAX_XCOORDINATE_BITS_LEN/8;BYTE sECC_MAX_XCOORDINATE_BITS_LEN/8; EC

33、CSIGNATUREBLOB, *PECCSIGNATUREBLOB;ECC_MAX_MODULUS_BITS_LEN为ECC算法模数的最大长度;(2)数据项描述参见表13:表 13 ECC签名数据结构数据项类型意义备注rBYTE数组签名结果的r部分sBYTE数组签名结果的s部分6.4.9 分组密码参数(1)类型定义typedef struct Struct_BLOCKCIPHERPARAMBYTEIVMAX_IV_LEN;ULONGIVLen;ULONGPaddingType;ULONGFeedBitLen; BLOCKCIPHERPARAM, *PBLOCKCIPHERPARAM;(2)数

34、据项描述参见表14:表 14 分组密码参数数据项类型意义备注IVBYTE数组初始向量,MAX_IV_LEN为初始化向量的最大长度#define MAX_IV_LEN 32IVLenULONG初始向量实际长度(按字节计算)PaddingTypeULONG填充方式,0表示不填充,1表示按照PKCS#5方式进行填充FeedBitLenULONG反馈值的位长度(按位计算)只针对OFB、CFB模式6.4.10 ECC加密密钥对保护结构(1)类型定义typedef struct SKF_ENVELOPEDKEYBLOBULONG Version; / 当前版本为 1ULONG ulSymmAlgID; /

35、 对称算法标识,限定ECB模式ULONG ulBits;/ 加密密钥对的密钥位长度BYTE cbEncryptedPriKey64; / 加密密钥对私钥的密文ECCPUBLICKEYBLOB PubKey; / 加密密钥对的公钥ECCCIPHERBLOB ECCCipherBlob; / 用保护公钥加密的对称密钥密文。ENVELOPEDKEYBLOB, *PENVELOPEDKEYBLOB;(2)数据项描述参见表15:表 15 分组密码参数数据项类型意义备注VersionULONG版本号,本版本为1ulSymmAlgIDULONG对称算法标识必须为ECB模式ulBitsULONG加密密钥对的密

36、钥位长cbEncryptedPrivKeyBYTE数组对称算法加密的加密私钥,加密私钥的原文为ECCPRIVATEKEYBLOB结构中的PrivateKey。其有效长度为原文的(ulBits + 7)/8PubKeyECCPUBLICKEYBLOB加密密钥对的公钥ECCCipherBlobECCCIPHERBLOB用保护公钥加密过的对称密钥密文6.4.11 文件属性(1)类型定义typedef struct Struct_FILEATTRIBUTECHARFileName32;ULONGFileSize;ULONGReadRights;ULONGWriteRights; FILEATTRIBU

37、TE, *PFILEATTRIBUTE;(2)数据项描述参见表16:表 16 文件属性数据项类型意义备注FileNameCHAR数组文件名以0结束的ASCII字符串,最大长度为32FileSizeULONG文件大小创建文件时定义的文件大小ReadRightsULONG读取权限读取文件需要的权限WriteRightsULONG写入权限写入文件需要的权限6.4.12 权限类型权限类型的定义参见表17:表 17 权限类型权限类型值说明SECURE_NEVER_ACCOUNT0x00000000不允许SECURE_ADM_ACCOUNT0x00000001管理员权限SECURE_USER_ACCOUN

38、T0x00000010用户权限SECURE_ANYONE_ACCOUNT0x000000FF任何人6.4.13 设备状态设备状态的定义参见表18:表 18 设备状态设备状态值说明DEV_ABSENT_STATE0x00000000设备不存在DEV_PRESENT_STATE0x00000001设备存在DEV_UNKNOW_STATE0x00000002设备状态未知7 接口函数7.1 设备管理7.1.1 概述设备管理主要完成设备的插拔事件处理、枚举设备、连接设备、断开连接、获取设备状态、设置设备标签、获取设备信息、锁定设备、解锁设备和设备命令传输等操作。设备管理系列函数如表19所示:表 19 设

39、备管理系列函数函数名称功能SKF_WaitForDevEvent等待设备插拔事件SKF_CancelWaitForDevEvent取消等待设备插拔事件SKF_EnumDev枚举设备SKF_ConnectDev连接设备SKF_DisconnectDev断开连接SKF_GetDevState获取设备状态SKF_SetLabel设置设备标签SKF_GetDevInfo获取设备信息SKF_LockDev锁定设备SKF_UnlockDev解锁设备SKF_Transmit设备命令传输7.1.2 等待设备插拔事件函数原型ULONG DEVAPI SKF_WaitForDevEvent(LPSTR szDev

40、Name,ULONG *pulDevNameLen, ULONG *pulEvent)功能描述该函数等待设备插入或者拔除事件。szDevName返回发生事件的设备名称。参数szDevName OUT 发生事件的设备名称。pulDevNameLenIN/OUT 输入/输出参数,当输入时表示缓冲区长度,输出时表示设备名称的有效长度,长度包含字符串结束符。pulEventOUT事件类型。1表示插入,2表示拔出。返回值SAR_OK:成功。其他:错误码。7.1.3 取消等待设备插拔事件函数原型ULONG DEVAPI SKF_CancelWaitForDevEvent()功能描述该函数取消等待设备插入或

41、者拔除事件。参数返回值SAR_OK:成功。其他:错误码。备注使本进程正在执行的SKF_WaitForDevEvent函数立即返回。7.1.4 枚举设备函数原型ULONG DEVAPI SKF_EnumDev(BOOL bPresent, LPSTR szNameList, ULONG *pulSize)功能描述获得当前系统中的设备列表。参数bPresentIN 为TRUE表示取当前设备状态为存在的设备列表。为FALSE表示取当前驱动支持的设备列表。szNameListOUT 设备名称列表。如果该参数为NULL,将由pulSize返回所需要的内存空间大小。每个设备的名称以单个0结束,以双0表示列表的结束。pulSizeIN,OUT 输入时表示设备名称列表的缓冲区长度,输出时表示szNameList所占用的空间大小。返回值SAR_OK:成功。其他:错误码。7.1.5 连接设备函数原型ULONG DEVAPI SKF_ConnectDev (LPSTR szName, DEVHANDLE *phDev)功能描述通过设备名称连接设备,返回设备的句柄。参数szNameIN 设备名称。phDevOUT 返回设备操

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号