926 lines
38 KiB
C++
926 lines
38 KiB
C++
/*
|
|
*
|
|
* CBitAnswer 类的定义,开发人员可以直接调用操作授权
|
|
*
|
|
* BitAnswer Ltd. (C) 2009 - ?. All rights reserved.
|
|
*
|
|
*/
|
|
#pragma once
|
|
#include <string>
|
|
//using namespace std;
|
|
|
|
#if !defined(WITH_AKSTYPES) && !defined(WITH_OEFTYPES)
|
|
#if defined(_MSC_VER) || defined(__WATCOMC__) || defined(__BORLANDC__)
|
|
typedef unsigned __int64 BIT_UINT64;
|
|
typedef signed __int64 BIT_INT64;
|
|
#else
|
|
typedef unsigned long long BIT_UINT64;
|
|
typedef signed long long BIT_INT64;
|
|
#endif
|
|
#if defined(_MSC_VER)
|
|
typedef unsigned long BIT_UINT32;
|
|
typedef signed long BIT_INT32;
|
|
#else
|
|
typedef unsigned int BIT_UINT32;
|
|
typedef signed int BIT_INT32;
|
|
#endif
|
|
typedef unsigned short BIT_USHORT;
|
|
typedef signed short BIT_SHORT;
|
|
typedef unsigned char BIT_UCHAR;
|
|
typedef char BIT_CHAR;
|
|
typedef const char *BIT_PCSTR;
|
|
#endif
|
|
|
|
typedef void *BIT_HANDLE;
|
|
typedef void BIT_VOID;
|
|
typedef enum BIT_ERROR_CODES BIT_STATUS;
|
|
|
|
#if defined(_WIN32) || defined(WIN32) || defined(_MSC_VER) || defined(__BORLANDC__)
|
|
#define BIT_CALLCONV __stdcall
|
|
#else
|
|
#define BIT_CALLCONV
|
|
#endif
|
|
|
|
#if _MSC_VER >= 1900
|
|
#pragma comment(lib, "legacy_stdio_definitions.lib")
|
|
#endif
|
|
|
|
#ifdef _WIN64
|
|
#ifdef _MT
|
|
#ifdef _DLL
|
|
#pragma comment(lib, "00003564_000029CA_md_x64.lib")
|
|
#else
|
|
#pragma comment(lib, "00003564_000029CA_mt_x64.lib")
|
|
#endif
|
|
#else
|
|
#pragma comment(lib, "00003564_000029CA_mt_x64.lib")
|
|
#endif
|
|
#elif defined(_WIN32) || defined(WIN32)
|
|
#ifdef _MT
|
|
#ifdef _DLL
|
|
#pragma comment(lib, "00003564_000029CA_md.lib")
|
|
#else
|
|
#pragma comment(lib, "00003564_000029CA_mt.lib")
|
|
#endif
|
|
#else
|
|
#pragma comment(lib, "00003564_000029CA_mt.lib")
|
|
#endif
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
/** BITANSWER 下面部分不要修改 */
|
|
|
|
/** The Application Data is confidential information, please keep it carefully! */
|
|
static BIT_UCHAR m_application_data[] = {
|
|
0x40,0x80,0xbc,0x0c,0x96,0xd3,0x29,0x2f,0xa8,0x06,0xcd,0x14,0xe7,0x6d,0xba,0xe8,
|
|
0xec,0x0d,0x92,0xc1,0x33,0xc3,0x95,0x34,0xfa,0x12,0xc1,0x76,0x79,0x39,0x4d,0xa6,
|
|
0x7d,0xe2,0x7e,0xdf,0x3b,0xc4,0x84,0x25,0xf2,0x8e,0x9a,0x9a,0x7f,0x35,0x39,0x81,
|
|
0x56,0xd4,0xd5,0x75,0xc9,0xd9,0x47,0x46,0x7d,0xb0,0x57,0xb5,0x72,0xe3,0x88,0x1e,
|
|
0x47,0x6e,0x8b,0xd2,0x56,0x0a,0x92,0xa7,0xd9,0x20,0x7e,0x4a,0x80,0x96,0x40,0x88,
|
|
0x8a,0xbf,0x1f,0x77,0x72,0x44,0x14,0xc0,0xe9,0x05,0x79,0x29,0x87,0x03,0x63,0x40,
|
|
0xe4,0xe7,0x67,0x1b,0x56,0x76,0x24,0x48,0x92,0x0c,0x3c,0xe5,0xa2,0x65,0x4f,0x71,
|
|
0x26,0x04,0x48,0xe2,0x5e,0x32,0xd7,0xea,0x27,0x68,0xeb,0xac,0x51,0x19,0xa0,0x8a,
|
|
0x95,0x99,0x20,0x98,0xf6,0x5a,0x7a,0x2b,0xf7,0x07,0x95,0x6d,0xdd,0x3d,0x40,0x81,
|
|
0xb5,0xfd,0x6a,0x45,0xcb,0x66,0x80,0xac,0xb9,0xac,0xf8,0x86,0xf0,0x60,0xa1,0x4c,
|
|
0xdf,0x0f,0x5a,0x33,0x72,0x28,0x7a,0xc2,0x35,0xb7,0x94,0x18,0x28,0x5c,0xed,0x88,
|
|
0x26,0x58,0x65,0x64,0xfa,0xfa,0xda,0x32,0x02,0x28,0x58,0x22,0x44,0xd2,0xcd
|
|
};
|
|
|
|
typedef enum _FEATURE_TYPE
|
|
{
|
|
BIT_FEATURE_CONVERT = 0x03,
|
|
BIT_FEATURE_READ_ONLY = 0x04,
|
|
BIT_FEATURE_READ_WRITE = 0x05,
|
|
BIT_FEATURE_CRYPTION = 0x09,
|
|
BIT_FEATURE_USER = 0x0a,
|
|
BIT_FEATURE_UNIFIED = 0x0b,
|
|
BIT_FEATURE_NONE = 0xFFFFFFFF,
|
|
} FEATURE_TYPE;
|
|
|
|
typedef enum _LOGIN_MODE
|
|
{
|
|
BIT_MODE_LOCAL = 0x01,
|
|
BIT_MODE_REMOTE = 0x02,
|
|
BIT_MODE_AUTO = 0x03,
|
|
BIT_MODE_AUTO_CACHE = 0x07
|
|
} LOGIN_MODE;
|
|
|
|
#define LOGIN_MODE_CACHE 4
|
|
#define LOGIN_MODE_USB 8
|
|
#define LOGIN_MODE_PROCESS 0x10
|
|
|
|
typedef enum _BINDING_TYPE
|
|
{
|
|
BINDING_EXISTING = 0,
|
|
BINDING_LOCAL = 1,
|
|
BINDING_USB_STORAGE = 2
|
|
} BINDING_TYPE;
|
|
|
|
typedef enum _BIT_INFO_TYPE
|
|
{
|
|
BIT_INFO_SERVER_ADDRESS = 0,
|
|
BIT_INFO_SN = 1,
|
|
BIT_INFO_SN_FEATURE = 2,
|
|
BIT_INFO_SN_LICENSE = 3,
|
|
BIT_INFO_UPDATE_ERROR = 4,
|
|
BIT_INFO_CONFIG = 5,
|
|
BIT_INFO_TOKEN_LIST = 7
|
|
} BIT_INFO_TYPE;
|
|
#pragma pack(1)
|
|
|
|
typedef struct _BIT_DATE_TIME
|
|
{
|
|
BIT_USHORT year;
|
|
BIT_UCHAR month;
|
|
BIT_UCHAR dayOfMonth;
|
|
BIT_UCHAR hour;
|
|
BIT_UCHAR minute;
|
|
BIT_UCHAR second;
|
|
BIT_UCHAR unused;
|
|
} BIT_DATE_TIME, *PBIT_DATE_TIME;
|
|
|
|
typedef struct _BIT_FEATURE_INFO
|
|
{
|
|
BIT_UINT32 featureId;
|
|
FEATURE_TYPE type;
|
|
BIT_CHAR featureName[128];
|
|
BIT_DATE_TIME endDateTime;
|
|
BIT_UINT32 expirationDays;
|
|
BIT_UINT32 users;
|
|
} BIT_FEATURE_INFO, *PBIT_FEATURE_INFO;
|
|
|
|
#pragma pack()
|
|
|
|
/**
|
|
* @defgroup Run-time API Status Codes
|
|
*
|
|
* @{
|
|
*/
|
|
typedef enum BIT_ERROR_CODES
|
|
{
|
|
BIT_SUCCESS = 0x0000,
|
|
|
|
/** client side error */
|
|
BIT_ERR_NETWORK = 0x0101,
|
|
BIT_ERR_WRONG_HANDLE = 0x0102,
|
|
BIT_ERR_INVALID_PARAMETER = 0x0103,
|
|
BIT_ERR_BUFFER_SMALL = 0x0104,
|
|
BIT_ERR_APPLICATION_DATA = 0x0105,
|
|
BIT_ERR_HEARTBEAT_THREAD = 0x0106,
|
|
BIT_ERR_SERVER_BUSY = 0x0107,
|
|
BIT_ERR_SERVER_DOWN = 0x0108,
|
|
BIT_ERR_RETURN_NULL = 0x0109,
|
|
BIT_ERR_CMD_TYPE = 0x010A,
|
|
BIT_ERR_BADSTRING = 0x010B,
|
|
BIT_ERR_HANDLE_NULL = 0x010C,
|
|
BIT_ERR_INVALID_OFF_LINE_SN = 0x010E,
|
|
BIT_ERR_OFF_LINE_SN_DENIED = 0x010F,
|
|
BIT_ERR_SN_FILE_NOT_FOUND = 0x0110,
|
|
BIT_ERR_OFF_LINE_SN_SIGNATURE = 0x0111,
|
|
BIT_ERR_RUN_TIME_ERROR = 0x0112,
|
|
BIT_ERR_CHECK_THREAD = 0x0113,
|
|
BIT_ERR_LICENSE_NOT_FOUND = 0x0114,
|
|
BIT_ERR_UNEXPECTED = 0x0115,
|
|
BIT_ERR_DOWNLOAD_UNCOMPLETE = 0x0116,
|
|
BIT_ERR_POINTS_OVER = 0x0117,
|
|
BIT_ERR_TLV_BUF_OVER = 0x0118,
|
|
BIT_ERR_MORE_USB_DISK = 0x0119,
|
|
BIT_ERR_NO_USB_DISK = 0x011A,
|
|
BIT_ERR_GET_MID = 0x011B,
|
|
BIT_ERR_SN_INVALID = 0x011C,
|
|
BIT_ERR_TIME_TAMPER = 0x011D,
|
|
BIT_ERR_NOT_ENCRYPTED = 0x011E,
|
|
BIT_ERR_KEY_NOT_MATCH = 0x011F,
|
|
BIT_ERR_BINDINGPOLICY_NOT_MATCHED = 0x0120,
|
|
BIT_ERR_LOAD_EXTENSION_FAILED = 0x0121,
|
|
BIT_ERR_MALLOC_FAILED = 0x0122,
|
|
BIT_ERR_REVOKED = 0x0123,
|
|
BIT_ERR_EXTENSION_EXIST = 0x0124,
|
|
BIT_ERR_INIT_DBPATH = 0x0125,
|
|
BIT_ERR_LOCAL_HOST_NULL = 0x0126,
|
|
BIT_ERR_WRONG_SERVER_TYPE = 0x0127,
|
|
BIT_ERR_SOAP = 0x0128,
|
|
BIT_ERR_UDP = 0x0129,
|
|
BIT_ERR_UPDATE_CODE = 0x012A,
|
|
BIT_ERR_UPDATE_INFO_VERSION = 0x012B,
|
|
BIT_ERR_TYPE_NOT_MATCHED = 0x012C,
|
|
BIT_ERR_INVALID_URL = 0x012D,
|
|
BIT_ERR_UPDATE_INFO_FORMAT = 0x012E,
|
|
BIT_ERR_SN_EMPTY = 0x012F,
|
|
|
|
BIT_ERR_SN_ENTRY_NOT_FOUND = 0x0131,
|
|
BIT_ERR_FUNCTION_NOT_SUPPORT = 0x0132,
|
|
|
|
BIT_ERR_ACCESS_ERROR = 0x0151,
|
|
BIT_ERR_ACCESS_DENIED = 0x0152,
|
|
BIT_ERR_ACCESS_NOT_FOUND = 0x0153,
|
|
|
|
BIT_ERR_TOKEN_NOT_SUPPORT = 0x0181,
|
|
BIT_ERR_TOKEN_NOT_FOUND = 0x0182,
|
|
BIT_ERR_TOKEN_ACCESS_FAILED = 0x0183,
|
|
BIT_ERR_TOKEN_READ_FAILED = 0x0184,
|
|
BIT_ERR_TOKEN_WRITE_FAILED = 0x0185,
|
|
BIT_ERR_TOKEN_NOT_INIT = 0x0186,
|
|
BIT_ERR_TOKEN_ALREADY_INIT = 0x0187,
|
|
|
|
/** server side error */
|
|
BIT_ERR_NEED_LOGIN = 0x0201,
|
|
BIT_ERR_NULL_PARAMETER = 0x0202,
|
|
BIT_ERR_SRV_INVALID_PARAMETER = 0x0203,
|
|
BIT_ERR_UNKNOWN_EXCEPTION = 0x0204,
|
|
BIT_ERR_UNKNOWN_VAR = 0x0205,
|
|
BIT_ERR_PRODUCT_DISABLED = 0x0206,
|
|
BIT_ERR_DEVELOPER_DISABLED = 0x0207,
|
|
BIT_ERR_WEB_SERVICE_STOP = 0x0208,
|
|
BIT_ERR_PRODUCT_NOT_MATCH = 0x020A,
|
|
BIT_ERR_SERVER_KICKOUT = 0x0212,
|
|
BIT_ERR_SERVER_DENY = 0x0213,
|
|
BIT_ERR_OVER_USERS_IN_IP = 0x0214,
|
|
|
|
BIT_ERR_STRING_LENGH = 0x0301,
|
|
BIT_ERR_BADCOMMAND = 0x0302,
|
|
BIT_ERR_CMD_LENGTH = 0x0303,
|
|
|
|
BIT_ERR_FEATURE_ADDR = 0x0501,
|
|
BIT_ERR_FEATURE_ZERO = 0x0502,
|
|
BIT_ERR_FEATURE_NOT_FOUND = 0x0503,
|
|
BIT_ERR_FEATURE_TYPE_NOT_MATCH = 0x0504,
|
|
BIT_ERR_FEATURE_TYPE_PARAM = 0x0505,
|
|
BIT_ERR_FEATURE_EXPIRATION = 0x0509,
|
|
|
|
BIT_ERR_DATA_NOT_FOUND = 0x0601,
|
|
BIT_ERR_DATA_INDEX_OVER_LENGTH = 0x0602,
|
|
BIT_ERR_DATA_OVER_MAX_SIZE = 0x0603,
|
|
BIT_ERR_DATA_OVER_MAX_COUNT = 0x0604,
|
|
|
|
BIT_ERR_SN_LICENSE_EXPIRATION = 0x0701,
|
|
BIT_ERR_SN_USER_NUMBER_OVER = 0x0702,
|
|
BIT_ERR_SN_VOLUME_NUMBER_OVER = 0x0703,
|
|
BIT_ERR_SN_EXECUTION_COUNTER_OVER = 0x0704,
|
|
BIT_ERR_SN_DISABLED = 0x0705,
|
|
BIT_ERR_SN_NOT_FOUND = 0x0706,
|
|
BIT_ERR_SN_OVER_MAX_SESSION_COUNT = 0x0707,
|
|
BIT_ERR_SN_EXECUTE_MORE_COMMAND = 0x0708,
|
|
BIT_ERR_SN_DISABLED_FOR_ATTACK = 0x0709,
|
|
BIT_ERR_MISSING_USB = 0x070D,
|
|
BIT_ERR_SN_INVALID_FORMAT = 0x070E,
|
|
BIT_ERR_CAPACITY_EXHAUSTED = 0x0712,
|
|
BIT_ERR_CAPACITY_NOT_USED = 0x0713,
|
|
BIT_ERR_SN_TYPE_NOT_MATCH = 0x0714,
|
|
BIT_ERR_SN_OFFLINE_EXPIRED = 0x0780,
|
|
BIT_ERR_SN_MID_CHECK = 0x0781,
|
|
BIT_ERR_MACHINE_DISABLED = 0x0782,
|
|
BIT_ERR_NO_AVAILABLE_SN = 0x0783,
|
|
BIT_ERR_NO_AVAILABLE_MODULE = 0x0784,
|
|
BIT_ERR_DEMO_UPDATE = 0x0785,
|
|
BIT_ERR_VM_DISABLED = 0x0786,
|
|
BIT_ERR_SN_INVALID_STATUS = 0x0787,
|
|
|
|
BIT_ERR_OFF_LINE_ERR = 0x0801,
|
|
BIT_ERR_OFF_LINE = 0x0802,
|
|
BIT_ERR_DOWNLOAD_OVER = 0x0803,
|
|
BIT_ERR_SIGNATURE = 0x0804,
|
|
BIT_ERR_OFF_LINE_UPDATE_AGAIN = 0x0806,
|
|
BIT_ERR_WRONG_LOCAL_TIME = 0x0807,
|
|
BIT_ERR_NO_AVAILABLE_UPDATE = 0x0808,
|
|
BIT_ERR_LOCAL_SERVICE_UPDATE = 0x0809,
|
|
|
|
BIT_ERR_PRODUCT_NOT_FOUND = 0x0901,
|
|
BIT_ERR_DEVELOPER_NOT_FOUND = 0x0902,
|
|
BIT_ERR_INVALID_MID_FROMAT = 0x0903,
|
|
BIT_ERR_COMMAND_NOT_SUPPORT = 0x0904,
|
|
BIT_ERR_VERSION_NOT_SUPPORT = 0x0905,
|
|
BIT_ERR_BINDING_INFO = 0x0906,
|
|
BIT_ERR_CMD_DATA_LENGTH = 0x0907,
|
|
BIT_ERR_TABLE_SIGN = 0x090A,
|
|
BIT_ERR_NOT_INIT = 0x090B,
|
|
|
|
/** for bit service */
|
|
BIT_ERR_BIT_SERVICER_SIGN = 0x0A01,
|
|
BIT_ERR_CONFIG_FILE = 0x0A03,
|
|
BIT_ERR_INVALID_USER = 0x0A04,
|
|
BIT_ERR_OLD_PASSWORD_WRONG = 0x0A06,
|
|
BIT_ERR_PASSWORD_NOT_MATCHED = 0x0A07,
|
|
BIT_ERR_UPLOAD_FAILURE = 0x0A09,
|
|
BIT_ERR_LOAD_EXTENTION = 0x0A11,
|
|
BIT_ERR_PAGE_NOT_FOUND = 0x0A12,
|
|
BIT_ERR_SN_EXISTED = 0x0A13,
|
|
BIT_ERR_OLD_EXTENTION = 0x0A14,
|
|
BIT_ERR_SRV_ROLE_INVALID = 0x0A15,
|
|
BIT_ERR_SRV_ROLE_EXIST = 0x0A16
|
|
}BIT_STATUS;
|
|
|
|
#define BIT_DATA_ITEM_NAME_MAX_LEN 128
|
|
#define BIT_DATA_ITEM_MAX_LEN 1024
|
|
#define BIT_CIPH_DATA_MAX_LEN 256
|
|
|
|
|
|
/**
|
|
* @defgroup SESSION_TYPE of session information in XML or plain format
|
|
*
|
|
* @{
|
|
*/
|
|
typedef enum _SESSION_TYPE
|
|
{
|
|
XML_TYPE_SN_INFO = 3,
|
|
XML_TYPE_FEATURE_INFO = 4,
|
|
BIT_SERVER_ADDRESS = 0x101,
|
|
BIT_SERVER_TIME = 0x201,
|
|
BIT_CONTROL_TYPE = 0x302,
|
|
BIT_VOLUME_NUMBER = 0x303,
|
|
BIT_START_DATE = 0x304,
|
|
BIT_END_DATE = 0x305,
|
|
BIT_EXPIRATION_DAYS = 0x306,
|
|
BIT_USAGE_NUMBER = 0x307,
|
|
BIT_CONSUMED_USAGE_NUMBER = 0x308,
|
|
BIT_ACTIVATE_DATE = 0x30A,
|
|
BIT_USER_LIMIT = 0x30B,
|
|
BIT_LAST_UPDATE_DATE = 0x30C,
|
|
BIT_MAX_OFFLINE_MINUTES = 0x30D,
|
|
BIT_NEXT_CONNECT_DATE = 0x30E,
|
|
BIT_MID_BINARY = 0x1001
|
|
} SESSION_TYPE;
|
|
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
/**
|
|
* @defgroup The Basic Run-time API
|
|
*
|
|
* @{
|
|
*/
|
|
BIT_STATUS BIT_CALLCONV Bit_Login(
|
|
BIT_PCSTR szURL,
|
|
BIT_PCSTR szSN,
|
|
BIT_UCHAR *pApplicationData,
|
|
BIT_HANDLE *pHandle,
|
|
LOGIN_MODE mode);
|
|
|
|
BIT_STATUS BIT_CALLCONV Bit_LoginEx(
|
|
BIT_PCSTR szURL,
|
|
BIT_PCSTR szSN,
|
|
BIT_UINT32 featureId,
|
|
BIT_PCSTR szReserved,
|
|
BIT_UCHAR *pApplicationData,
|
|
BIT_HANDLE *pHandle,
|
|
LOGIN_MODE mode);
|
|
|
|
BIT_STATUS BIT_CALLCONV Bit_Logout(
|
|
BIT_HANDLE handle);
|
|
|
|
BIT_STATUS BIT_CALLCONV Bit_ReadFeature(
|
|
BIT_HANDLE handle,
|
|
BIT_UINT32 featureId,
|
|
BIT_UINT32 *pFeatureValue);
|
|
|
|
BIT_STATUS BIT_CALLCONV Bit_WriteFeature(
|
|
BIT_HANDLE handle,
|
|
BIT_UINT32 featureId,
|
|
BIT_UINT32 featureValue);
|
|
|
|
BIT_STATUS BIT_CALLCONV Bit_ConvertFeature(
|
|
BIT_HANDLE handle,
|
|
BIT_UINT32 featureId,
|
|
BIT_UINT32 para1,
|
|
BIT_UINT32 para2,
|
|
BIT_UINT32 para3,
|
|
BIT_UINT32 para4,
|
|
BIT_UINT32 *pResult);
|
|
|
|
BIT_STATUS BIT_CALLCONV Bit_EncryptFeature(
|
|
BIT_HANDLE handle,
|
|
BIT_UINT32 featureId,
|
|
BIT_VOID *pPlainBuffer,
|
|
BIT_VOID *pCipherBuffer,
|
|
BIT_UINT32 dataBufferSize);
|
|
|
|
BIT_STATUS BIT_CALLCONV Bit_DecryptFeature(
|
|
BIT_HANDLE handle,
|
|
BIT_UINT32 featureId,
|
|
BIT_VOID *pCipherBuffer,
|
|
BIT_VOID *pPlainBuffer,
|
|
BIT_UINT32 dataBufferSize);
|
|
|
|
BIT_STATUS BIT_CALLCONV Bit_QueryFeature(
|
|
BIT_HANDLE handle,
|
|
BIT_UINT32 featureId,
|
|
BIT_UINT32 *pCapacity);
|
|
|
|
BIT_STATUS BIT_CALLCONV Bit_ReleaseFeature(
|
|
BIT_HANDLE handle,
|
|
BIT_UINT32 featureId,
|
|
BIT_UINT32 *pCapacity);
|
|
|
|
BIT_STATUS BIT_CALLCONV Bit_SetDataItem(
|
|
BIT_HANDLE handle,
|
|
BIT_PCSTR szDataItemName,
|
|
BIT_VOID *pDataItemValue,
|
|
BIT_UINT32 dataItemValueSize);
|
|
|
|
BIT_STATUS BIT_CALLCONV Bit_RemoveDataItem(
|
|
BIT_HANDLE handle,
|
|
BIT_PCSTR szDataItemName);
|
|
|
|
BIT_STATUS BIT_CALLCONV Bit_GetDataItem(
|
|
BIT_HANDLE handle,
|
|
BIT_PCSTR szDataItemName,
|
|
BIT_VOID *pDataItemValue,
|
|
BIT_UINT32 *pDataItemValueSize);
|
|
|
|
BIT_STATUS BIT_CALLCONV Bit_GetDataItemNum(
|
|
BIT_HANDLE handle,
|
|
BIT_UINT32 *pNum);
|
|
|
|
BIT_STATUS BIT_CALLCONV Bit_GetDataItemName(
|
|
BIT_HANDLE handle,
|
|
BIT_UINT32 index,
|
|
BIT_CHAR *pDataItemName,
|
|
BIT_UINT32 *pDataItemNameSize);
|
|
|
|
BIT_STATUS BIT_CALLCONV Bit_GetFeatureInfo(
|
|
BIT_HANDLE handle,
|
|
BIT_UINT32 featureId,
|
|
BIT_FEATURE_INFO *pFeatureInfo);
|
|
|
|
BIT_STATUS BIT_CALLCONV Bit_GetSessionInfo(
|
|
BIT_HANDLE handle,
|
|
SESSION_TYPE type,
|
|
BIT_CHAR *pSessionInfo,
|
|
BIT_UINT32 *pSessionInfoSize);
|
|
|
|
BIT_STATUS BIT_CALLCONV Bit_GetRequestInfo(
|
|
BIT_PCSTR szSN,
|
|
BIT_UCHAR *pApplicationData,
|
|
BINDING_TYPE type,
|
|
BIT_CHAR *pRequestInfo,
|
|
BIT_UINT32 *pRrequestInfoSize);
|
|
|
|
BIT_STATUS BIT_CALLCONV Bit_Revoke(
|
|
BIT_PCSTR szURL,
|
|
BIT_PCSTR szSN,
|
|
BIT_UCHAR *pApplicationData,
|
|
BIT_CHAR *pRevocationInfo,
|
|
BIT_UINT32 *pRevocationInfoSize);
|
|
|
|
BIT_STATUS BIT_CALLCONV Bit_GetUpdateInfo(
|
|
BIT_PCSTR szURL,
|
|
BIT_PCSTR szSN,
|
|
BIT_UCHAR *pApplicationData,
|
|
BIT_PCSTR pRequestInfo,
|
|
BIT_CHAR *pUpdateInfo,
|
|
BIT_UINT32 *pUpdateInfoSize);
|
|
|
|
BIT_STATUS BIT_CALLCONV Bit_ApplyUpdateInfo(
|
|
BIT_UCHAR *pApplicationData,
|
|
BIT_PCSTR pUpdateInfo,
|
|
BIT_CHAR *pReceiptInfo,
|
|
BIT_UINT32 *pReceiptInfoSize);
|
|
|
|
BIT_STATUS BIT_CALLCONV Bit_UpdateOnline(
|
|
BIT_PCSTR szURL,
|
|
BIT_PCSTR szSN,
|
|
BIT_UCHAR *pApplicationData);
|
|
|
|
BIT_STATUS BIT_CALLCONV Bit_SetRootPath(
|
|
BIT_PCSTR szPath);
|
|
|
|
BIT_STATUS BIT_CALLCONV Bit_GetProductPath(
|
|
BIT_UCHAR *pApplicationData,
|
|
BIT_CHAR *buf,
|
|
BIT_UINT32 lenBuf);
|
|
|
|
BIT_STATUS BIT_CALLCONV Bit_SetLocalServer(
|
|
BIT_UCHAR *pApplicationData,
|
|
BIT_PCSTR szHostName,
|
|
BIT_UINT32 nPort,
|
|
BIT_UINT32 nTimeoutSeconds);
|
|
|
|
BIT_STATUS BIT_CALLCONV Bit_SetProxy(
|
|
BIT_UCHAR *pApplicationData,
|
|
BIT_PCSTR szHostName,
|
|
BIT_UINT32 nPort,
|
|
BIT_PCSTR szUserID,
|
|
BIT_PCSTR szPassword);
|
|
|
|
BIT_STATUS BIT_CALLCONV Bit_GetInfo(
|
|
BIT_PCSTR szSN,
|
|
BIT_UCHAR *pApplicationData,
|
|
BIT_INFO_TYPE type,
|
|
BIT_CHAR *pInfo,
|
|
BIT_UINT32 *pInfoSize);
|
|
|
|
BIT_STATUS BIT_CALLCONV Bit_GetVersion(
|
|
BIT_UINT32 *pVersion);
|
|
|
|
BIT_STATUS BIT_CALLCONV Bit_RemoveSn(
|
|
BIT_PCSTR szSN,
|
|
BIT_UCHAR *pApplicationData);
|
|
|
|
BIT_STATUS BIT_CALLCONV Bit_CheckOutSn(
|
|
BIT_PCSTR szURL,
|
|
BIT_UINT32 featureId,
|
|
BIT_UCHAR *pApplicationData,
|
|
BIT_UINT32 nDurationDays);
|
|
|
|
BIT_STATUS BIT_CALLCONV Bit_CheckOutFeatures(
|
|
BIT_PCSTR szURL,
|
|
BIT_UCHAR *pApplicationData,
|
|
BIT_UINT32 *pFeatureList,
|
|
BIT_UINT32 nFeatureInList,
|
|
BIT_UINT32 nDurationDays);
|
|
|
|
BIT_STATUS BIT_CALLCONV Bit_CheckIn(
|
|
BIT_PCSTR szURL,
|
|
BIT_UINT32 featureId,
|
|
BIT_UCHAR *pApplicationData);
|
|
|
|
BIT_STATUS BIT_CALLCONV Bit_TestBitService(
|
|
BIT_PCSTR szURL,
|
|
BIT_PCSTR szSN,
|
|
BIT_UINT32 featureId,
|
|
BIT_UCHAR *pApplicationData);
|
|
|
|
// 以上部分不要修改
|
|
#ifdef __cplusplus
|
|
} // extern "C"
|
|
#endif
|
|
|
|
class CBitAnswer
|
|
{
|
|
private:
|
|
BIT_HANDLE m_handle;
|
|
BIT_UINT32 m_ref;
|
|
BIT_PCSTR m_sn;
|
|
LOGIN_MODE m_mode;
|
|
|
|
public:
|
|
CBitAnswer(void);
|
|
~CBitAnswer(void);
|
|
|
|
/**
|
|
* 进行授权登陆,获取操作句柄。必须在除升级函数之外的其它操作前执行。根据登录模式的不同可能需要连接授权服务器。
|
|
* 成功调用一次Login后,对应要调用一次Logout
|
|
* 如果多次调用Login,没有调用Logout,除了第一次Login之外,其他的Login不会真正的连接授权文件或服务器
|
|
* 对于同一台机器,当登陆到云授权时,最大允许10个进程处于Login状态
|
|
* 参数:
|
|
* szSN - [IN] 授权码(SN),由比特平台产生。无论是单机授权还是集团授权,当SN不为NULL时,都表示只登陆这个授权码
|
|
* 当SN为空时,根据配置文件会按照以下顺序查找:
|
|
* 先查本地单机授权码,
|
|
* 然后查找云授权码(如果本机记住云授权码)
|
|
* 最后查找集团授权码,如果集团服务中存在多个授权码,均可用,服务会根据使用情况自动分配用户数
|
|
* mode - [IN] 登陆模式。 包含以下类型:
|
|
* BIT_MODE_LOCAL // 登陆本地授权,即单机离线授权码、浮动授权码和演示授权码
|
|
* BIT_MODE_REMOTE // 登陆授权,如果授权码失效,会自动连接服务器,并返回连接服务器的错误码
|
|
* BIT_MODE_AUTO // 登陆服务器,并自动升级授权
|
|
* 返回:
|
|
* 如果返回值为零,表示此函数调用成功。如果非零,可以根据返回值,从错误码表中查看具体的错误原因。
|
|
*/
|
|
BIT_STATUS Login(BIT_PCSTR szSN, LOGIN_MODE mode);
|
|
|
|
/**
|
|
* 指定特征项进行授权登录,不连接授权服务器
|
|
*
|
|
* 参数:
|
|
* szSN - [IN] 同Login
|
|
* featureId - [IN] 特征项ID
|
|
* mode - [IN] 同Login
|
|
*/
|
|
BIT_STATUS LoginEx(BIT_PCSTR szSN, BIT_UINT32 featureId, LOGIN_MODE mode);
|
|
|
|
/**
|
|
* 此函数用于释放上下文句柄,退出登录状态。
|
|
* 返回:
|
|
* 如果返回值为零,表示此函数调用成功。如果非零,可以根据返回值,从错误码表中查看具体的错误原因。
|
|
*/
|
|
BIT_STATUS Logout();
|
|
|
|
/**
|
|
* 此函数用于读取特征项的数据内容,可用于“只读”和“读写”特征类型。
|
|
* 参数:
|
|
* featureId - [IN] 产品的特征项ID。
|
|
* pFeatureValue - [OUT] 特征项数据缓存区地址,用于存储读出的数据。
|
|
* 返回:
|
|
* 如果返回值为零,表示此函数调用成功。如果非零,可以根据返回值,从错误码表中查看具体的错误原因。
|
|
*/
|
|
BIT_STATUS ReadFeature(BIT_UINT32 featureId, BIT_UINT32 *pFeatureValue);
|
|
|
|
/**
|
|
* 此函数用于更新“读写”类型的特征项的数据内容。
|
|
* 参数:
|
|
* featureId - [IN] 产品的特征项ID。
|
|
* featureValue - [IN] 特征项数据值。
|
|
* 返回:
|
|
* 如果返回值为零,表示此函数调用成功。如果非零,可以根据返回值,从错误码表中查看具体的错误原因。
|
|
*/
|
|
BIT_STATUS WriteFeature(BIT_UINT32 featureId, BIT_UINT32 featureValue);
|
|
|
|
/**
|
|
* 此函数用于使用“算法”类型的特征项对输入参数进行变换操作,得到唯一对应的4字节结果。
|
|
* 参数:
|
|
* featureId - [IN] 产品的特征项ID。
|
|
* para1 - [IN] 变换输入因子1
|
|
* para2 - [IN] 变换输入因子2
|
|
* para3 - [IN] 变换输入因子3
|
|
* para4 - [IN] 变换输入因子4
|
|
* pResult - [OUT] 变换结果。
|
|
* 返回:
|
|
* 如果返回值为零,表示此函数调用成功。如果非零,可以根据返回值,从错误码表中查看具体的错误原因。
|
|
*/
|
|
BIT_STATUS ConvertFeature(BIT_UINT32 featureId, BIT_UINT32 para1, BIT_UINT32 para2, BIT_UINT32 para3, BIT_UINT32 para4, BIT_UINT32 * pResult);
|
|
|
|
/**
|
|
* 此函数用于使用“密钥”类型的特征项对输入的明文进行加密,返回密文结果。
|
|
* 参数:
|
|
* featureId - [IN] 产品的特征项ID。
|
|
* pPlainBuffer - [IN] 数据缓存区地址,用于存储明文数据。
|
|
* pCipherBuffer - [OUT] 数据缓存区地址,用于存储密文数据。
|
|
* bufferSize - [IN] 数据长度,最大长度为256字节。
|
|
* 返回:
|
|
* 如果返回值为零,表示此函数调用成功。如果非零,可以根据返回值,从错误码表中查看具体的错误原因。
|
|
*/
|
|
BIT_STATUS EncryptFeature(BIT_UINT32 featureId, BIT_UCHAR * pPlainBuffer, BIT_UCHAR * pCipherBuffer, BIT_UINT32 bufferSize);
|
|
|
|
/**
|
|
* 此函数用于使用“密钥”类型的特征项对输入的密文进行解密,返回明文结果。
|
|
* 参数:
|
|
* featureId - [IN] 产品的特征项ID。
|
|
* pCipherBuffer - [IN] 数据缓存区地址,用于存储密文数据。
|
|
* pPlainBuffer - [OUT] 数据缓存区地址,用于存储明文数据。
|
|
* bufferSize - [IN] 数据长度,最大长度为256字节。
|
|
* 返回:
|
|
* 如果返回值为零,表示此函数调用成功。如果非零,可以根据返回值,从错误码表中查看具体的错误原因。
|
|
*/
|
|
BIT_STATUS DecryptFeature(BIT_UINT32 featureId, BIT_UCHAR * pCipherBuffer, BIT_UCHAR * pPlainBuffer, BIT_UINT32 bufferSize);
|
|
|
|
/**
|
|
* 获取“用户”类型特征项的用户数,并返回剩余容量。如没有可分配用户数,则返回1810错误。
|
|
* 参数:
|
|
* featureId - [IN] 产品的特征项ID。
|
|
* pCapacity - [OUT] 特征项剩余容量。
|
|
* 返回:
|
|
* 如果返回值为零,表示此函数调用成功。如果非零,可以根据返回值,从错误码表中查看具体的错误原因。
|
|
*/
|
|
BIT_STATUS QueryFeature(BIT_UINT32 featureId, BIT_UINT32 *pCapacity);
|
|
|
|
/**
|
|
* 释放“用户”类型特征项的用户数,并返回剩余容量。
|
|
* 参数:
|
|
* featureId - [IN] 产品的特征项ID。
|
|
* pCapacity - [OUT] 特征项剩余容量。
|
|
* 返回:
|
|
* 如果返回值为零,表示此函数调用成功。如果非零,可以根据返回值,从错误码表中查看具体的错误原因。
|
|
*/
|
|
BIT_STATUS ReleaseFeature(BIT_UINT32 featureId, BIT_UINT32 *pCapacity);
|
|
|
|
/**
|
|
* 创建或更新配置项。如果相同名称的配置项存在,则会更新其中的数据;否则将添加新的授权码配置项。
|
|
* 参数:
|
|
* szDataItemName - [IN] 数据项名称,名称最大长度为128字节。
|
|
* pDataItemValue - [IN] 数据项数据缓存区地址,数据最大长度为1024字节。
|
|
* dataItemValueSize - [IN] 数据项长度。
|
|
* 返回:
|
|
* 如果返回值为零,表示此函数调用成功。如果非零,可以根据返回值,从错误码表中查看具体的错误原因。
|
|
*/
|
|
BIT_STATUS SetDataItem(BIT_PCSTR szDataItemName, BIT_PCSTR szDataValue);
|
|
|
|
/**
|
|
* 删除指定的配置项。该操作无法删除在比特平台上设置的产品配置项或模版配置项。
|
|
* 参数:
|
|
* szDataItemName - [IN] 数据项名称,名称最大长度为128字节。
|
|
* 返回:
|
|
* 如果返回值为零,表示此函数调用成功。如果非零,可以根据返回值,从错误码表中查看具体的错误原因。
|
|
*/
|
|
BIT_STATUS RemoveDataItem(BIT_PCSTR szDataItemName);
|
|
|
|
/**
|
|
* 读取指定的配置项数据。
|
|
* 参数:
|
|
* szDataItemName - [IN] 数据项名称,名称最大长度为128字节。
|
|
* dataValue - [OUT] 数据项数据缓存区地址,数据最大长度为1024字节。
|
|
* 返回:
|
|
* 如果返回值为零,表示此函数调用成功。如果非零,可以根据返回值,从错误码表中查看具体的错误原因。
|
|
*/
|
|
BIT_STATUS GetDataItem(BIT_PCSTR szDataItemName, std::string& dataValue);
|
|
|
|
/**
|
|
* 此函数用于获取可访问配置项的数量,一般用于配置项的枚举操作。
|
|
* 参数:
|
|
* pNumber - [OUT] 可访问的数据项总数,包括了所有可以访问到的产品、模版及授权码的数据项。
|
|
* 返回:
|
|
* 如果返回值为零,表示此函数调用成功。如果非零,可以根据返回值,从错误码表中查看具体的错误原因。
|
|
*/
|
|
BIT_STATUS GetDataItemNum(BIT_UINT32 *pNumber);
|
|
|
|
/**
|
|
* 根据配置项索引获取其名称,一般用于配置项的枚举操作。
|
|
* 参数:
|
|
* index - [IN] 数据项索引。
|
|
* dataName - [OUT] 用于存储数据项名称的存储区地址。
|
|
* 返回:
|
|
* 如果返回值为零,表示此函数调用成功。如果非零,可以根据返回值,从错误码表中查看具体的错误原因。
|
|
*/
|
|
BIT_STATUS GetDataItemName(BIT_UINT32 index, std::string &dataName);
|
|
|
|
/**
|
|
* 获取当前会话信息。根据获取的内容不同,此函数返回的数据可能是XML格式或非XML格式。
|
|
* 参数:
|
|
* type - [IN] 获取会话信息类型。
|
|
* sessionInfo - [OUT] 返回的结果存放位置。
|
|
* 返回:
|
|
* 如果返回值为零,表示此函数调用成功。如果非零,可以根据返回值,从错误码表中查看具体的错误原因。
|
|
*/
|
|
BIT_STATUS GetSessionInfo(SESSION_TYPE type, std::string &sessionInfo);
|
|
|
|
/**
|
|
* 获取当前运行环境的升级请求码,用于发起本地授权激活及升级请求。
|
|
* 参数:
|
|
* szSN - [IN] 授权码(SN),由比特平台产生,不能为空,必须输入
|
|
* type - [IN] 本地授权绑定类型。 包含以下类型:
|
|
* BINDING_EXISTING // 使用当前绑定类型,仅适用于授权码已经存在于本机或USB存储器
|
|
* BINDING_LOCAL // 使用本机指纹进行绑定
|
|
* BINDING_USB_STORAGE // 使用USB存储器进行绑定
|
|
* requestInfo - [OUT] 用于存储请求码的存储区地址。
|
|
* 返回:
|
|
* 如果返回值为零,表示此函数调用成功。如果非零,可以根据返回值,从错误码表中查看具体的错误原因。
|
|
*/
|
|
BIT_STATUS GetRequestInfo(BIT_PCSTR szSN, BINDING_TYPE type, std::string& requestInfo);
|
|
|
|
/**
|
|
* 使用请求码与授权服务器进行连接,获取升级码。本函数需要进行网络连接。
|
|
* 参数:
|
|
* szSN - [IN] 授权码(SN),由比特平台产生。
|
|
* pRequestInfo - [IN] 由获取请求码函数得到的请求码。
|
|
* updateInfo - [OUT] 由授权服务器获得的本地授权升级码。
|
|
* 返回:
|
|
* 如果返回值为零,表示此函数调用成功。如果非零,可以根据返回值,从错误码表中查看具体的错误原因。
|
|
*/
|
|
BIT_STATUS GetUpdateInfo(BIT_PCSTR szSN, BIT_PCSTR requestInfo, std::string &updateInfo);
|
|
|
|
/**
|
|
* 应用升级码完成本地授权激活或升级。本函数必须在获取请求码的同一环境下执行。
|
|
* 参数:
|
|
* pUpdateInfo - [IN] 由授权服务器获得的本地授权升级码。
|
|
* receiptInfo - [OUT] 确认码,记录升级状态,可由比特平台进行解析。为NULL表示不返回确认码
|
|
* 返回:
|
|
* 如果返回值为零,表示此函数调用成功。如果非零,可以根据返回值,从错误码表中查看具体的错误原因。
|
|
*/
|
|
BIT_STATUS ApplyUpdateInfo(BIT_PCSTR pUpdateInfo, std::string& receiptInfo);
|
|
|
|
/**
|
|
* 此函数用于与授权服务器在线连接,自动完成本地授权的升级操作。本函数需要进行网络连接。
|
|
* 参数:
|
|
* szSN - [IN] 授权码(SN),为空表示升级第一个可用的授权码,但是如果授权码是迁出状态,不能为空
|
|
* 返回:
|
|
* 如果返回值为零,表示此函数调用成功。如果非零,可以根据返回值,从错误码表中查看具体的错误原因。
|
|
*/
|
|
BIT_STATUS UpdateOnline(BIT_PCSTR szSN);
|
|
|
|
/**
|
|
* 此函数用于完成授权的在线迁出,迁出以后,其他机器就可以用了。本函数需要进行网络连接。
|
|
* 参数:
|
|
* szSN - [IN] 授权码(SN),为空表示迁出第一个可用的授权码。
|
|
* 返回:
|
|
* 如果返回值为零,表示此函数调用成功。如果非零,可以根据返回值,从错误码表中查看具体的错误原因。
|
|
*/
|
|
BIT_STATUS RevokeOnline(BIT_PCSTR szSN);
|
|
|
|
/**
|
|
* 此函数用于与产生授权的离线迁出请求码。本函数可能需要进行网络连接。
|
|
* 参数:
|
|
* szSN - [IN] 授权码(SN),不能为空
|
|
* revokeInfo - [OUT] 存放迁出请求码的存储区地址
|
|
* 返回:
|
|
* 如果返回值为零,表示此函数调用成功。如果非零,可以根据返回值,从错误码表中查看具体的错误原因。
|
|
*/
|
|
BIT_STATUS Revoke(BIT_PCSTR szSN, std::string& revokeInfo);
|
|
|
|
/**
|
|
* 此函数用于获取授权码或集团服务等的相关信息,调用前不需要登录。
|
|
* 参数:
|
|
* szSerialNum - [IN] 授权码
|
|
* type - [IN] 获取信息类型。
|
|
* info - [OUT] 存放信息结果的存储区地址
|
|
* 返回:
|
|
* 如果返回值为零,表示此函数调用成功。如果非零,可以根据返回值,从错误码表中查看具体的错误原因。
|
|
*/
|
|
BIT_STATUS GetInfo(BIT_PCSTR szSN, BIT_INFO_TYPE type, std::string& info);
|
|
|
|
/**
|
|
* 此函数用于设置集团服务的地址和端口。
|
|
* 参数:
|
|
* szHostName - [IN] 集团服务器的地址,可以为域名或IP
|
|
* nPort - [IN] 集团服务器的端口
|
|
* nTimeoutSeconds - [IN] 连接服务器超时时间,单位秒
|
|
* 返回:
|
|
* 如果返回值为零,表示此函数调用成功。如果非零,可以根据返回值,从错误码表中查看具体的错误原因。
|
|
*/
|
|
BIT_STATUS SetLocalServer(BIT_PCSTR szHostName, BIT_UINT32 nPort, BIT_UINT32 nTimeoutSeconds);
|
|
|
|
/**
|
|
* 此函数用于设置代理服务的地址和端口。
|
|
* 参数:
|
|
* szHostName - [IN] 代理服务器的地址,可以为域名或IP
|
|
* nPort - [IN] 代理服务器的端口
|
|
* szUserID - [IN] 连接代理服务器的用户名
|
|
* szPassword - [IN] 连接代理服务器的密码
|
|
* 返回:
|
|
* 如果返回值为零,表示此函数调用成功。如果非零,可以根据返回值,从错误码表中查看具体的错误原因。
|
|
*/
|
|
BIT_STATUS SetProxy(BIT_PCSTR szHostName, BIT_UINT32 nPort, BIT_PCSTR szUserID, BIT_PCSTR szPassword);
|
|
|
|
/**
|
|
* 此函数用于获取授权存储目录
|
|
* 参数:
|
|
* path - [OUT] 产品的存储路径
|
|
* 返回:
|
|
* 如果返回值为零,表示此函数调用成功。如果非零,可以根据返回值,从错误码表中查看具体的错误原因。
|
|
*/
|
|
BIT_STATUS GetProductPath(std::string &path);
|
|
|
|
/**
|
|
* 此函数用于删除本地授权。
|
|
* 参数:
|
|
* szSN - [IN] 授权码
|
|
* 返回:
|
|
* 如果返回值为零,表示此函数调用成功。如果非零,可以根据返回值,从错误码表中查看具体的错误原因。
|
|
*/
|
|
BIT_STATUS RemoveSn(BIT_PCSTR szSN);
|
|
|
|
/**
|
|
* 获取授权信息及使用环境信息,数据以XML格式返回。调用此函数前客户端不需要执行登录操作。
|
|
* 参数:
|
|
* szSN - [IN] 授权码(SN)字符串
|
|
* type - [IN] 获取信息类型。 包含以下类型:
|
|
* BIT_INFO_SERVER_ADDRESS // 获取局域网内的集团授权服务器地址列表
|
|
* BIT_INFO_SN // 获取本机已激活的授权码列表
|
|
* BIT_INFO_SN_FEATURE // 获取本机已激活授权码的特征项列表
|
|
* BIT_INFO_SN_LICENSE // 获取本机已激活授权码的授权信息
|
|
* BIT_INFO_UPDATE_ERROR // 获取指定授权码的升级错误详细信息。是否存在详细信息由授权码类型及错误类型决定
|
|
* pInfo - [OUT] 用于存储返回XML信息数据的存储区地址。
|
|
* pInfoSize - [IN/OUT] 输入的存储区长度。
|
|
* 返回:
|
|
* 如果返回值为零,表示此函数调用成功。如果非零,可以根据返回值,从错误码表中查看具体的错误原因。
|
|
*/
|
|
BIT_STATUS GetInfo(BIT_PCSTR szSN, BIT_INFO_TYPE type, BIT_CHAR *pInfo, BIT_UINT32 *pInfoSize);
|
|
|
|
/**
|
|
* 获取客户端安全库版本号。
|
|
* 参数:
|
|
* pVersion - [OUT] 客户端安全库版本号。
|
|
* 返回:
|
|
* 如果返回值为零,表示此函数调用成功。如果非零,可以根据返回值,从错误码表中查看具体的错误原因。
|
|
*/
|
|
BIT_STATUS GetVersion(BIT_UINT32 *pVersion);
|
|
|
|
/**
|
|
* 从集团授权服务器借出一个完整的授权码,以允许客户端脱离集团服务器单独使用。
|
|
* 被借出的集团授权码必须具有可借出属性,并在客户端成功借出后减少一个可用用户数。
|
|
* 被借出的用户数在到期后将自动返还给集团服务器。
|
|
* 参数:
|
|
* szURL - [IN] 集团授权服务器地址,包括端口。如输入NULL,则使用配置文件地址;如输入 * 号,则使用广播查找地址。
|
|
* featureId - [IN] 指定借出授权码需要包含的特征项ID,为 0 则寻找第一个可借出授权码。
|
|
* nDurationDays - [IN] 借出时间,单位为天。借出时间不能超过被借出集团授权的强制认证周期或有效期。
|
|
* 返回:
|
|
* 如果返回值为零,表示此函数调用成功。如果非零,可以根据返回值,从错误码表中查看具体的错误原因。
|
|
*/
|
|
BIT_STATUS CheckOutSn(BIT_PCSTR szURL, BIT_UINT32 featureId, BIT_UINT32 nDurationDays);
|
|
|
|
/**
|
|
* 从集团授权服务器借出一组特征项,这些特征项必须包含在同一个授权码中。
|
|
* 被借出的集团授权码必须具有可借出属性,并在客户端成功借出后减少一个可用用户数。
|
|
* 被借出的用户数在到期后将自动返还给集团服务器。
|
|
* 参数:
|
|
* szURL - [IN] 集团授权服务器地址,包括端口。如输入NULL,则使用配置文件地址;如输入 * 号,则使用广播查找地址。
|
|
* pFeatureList - [IN] 要借出的特征项列表。
|
|
* nFeatureInList - [IN] 要借出的特征项数量。
|
|
* nDurationDays - [IN] 借出时间,单位为天。借出时间不能超过被借出集团授权的强制认证周期或有效期。
|
|
* 返回:
|
|
* 如果返回值为零,表示此函数调用成功。如果非零,可以根据返回值,从错误码表中查看具体的错误原因。
|
|
*/
|
|
BIT_STATUS CheckOutFeatures(BIT_PCSTR szURL, BIT_UINT32 *pFeatureList, BIT_UINT32 nFeatureInList, BIT_UINT32 nDurationDays);
|
|
|
|
/**
|
|
* 提前返还从集团授权服务器借出的授权。要提前返还授权,该授权码必须具有允许提前返还属性。
|
|
* 参数:
|
|
* szURL - [IN] 集团授权服务器地址,包括端口。如输入NULL,则使用配置文件地址;如输入 * 号,则使用广播查找地址。
|
|
* featureId - [IN] 指定要返还授权码需要包含的特征项ID,为 0 则寻找第一个可返还授权码。
|
|
* 返回:
|
|
* 如果返回值为零,表示此函数调用成功。如果非零,可以根据返回值,从错误码表中查看具体的错误原因。
|
|
*/
|
|
BIT_STATUS CheckIn(BIT_PCSTR szURL, BIT_UINT32 featureId);
|
|
|
|
/**
|
|
* 测试集团授权和特征项是否可用,不会占用授权码或特征项的用户数。
|
|
* 参数:
|
|
* szURL - [IN] 集团授权服务器地址,包括端口。
|
|
* szSN - [IN] 授权码(SN),为空表示不指定授权码。
|
|
* featureId - [IN] 指定要测试的特征项,为 0 则不检查特征项。
|
|
* 返回:
|
|
* 如果返回值为零,表示指定的授权码和特征项可用。如果非零,可以根据返回值,从错误码表中查看具体的错误原因。
|
|
*/
|
|
BIT_STATUS TestBitService(BIT_PCSTR szURL, BIT_PCSTR szSN, BIT_UINT32 featureId);
|
|
};
|