//==============================================================================
//
// 项目名 :工业实时数据库
// 文件名 :KRTDBAPI.h
// 作 者 :DLJ(jack)
// 用 途 :工业实时数据库API开发接口定义
//
//==============================================================================
// 版本记录
//==============================================================================
//
// V0.9 - DLJ 2004/09/30 初始发布版本。
// V1.0 - DLJ 2005/02/20 简化接口,移除不太重要和暂时无法确定的接口,后续再修订。
// V1.1 - DLJ 2005/04/22 更改了性能监视相关接口。
// V1.2 - DLJ 2005/05/09 修改了回调接口及存储管理、安全部分的结构和接口。
// V1.3 - DLJ 2005/10/26 修改少量接口参数,删除少量无用的接口函数。
// V1.4 - DLJ 2006/06/08 调整了变量组相关函数,增加了用户/角色回调;修改了文件管理相关接口。
// V1.5 - DLJ 2006/07/13 修改了SQL相关接口的定义及实现。
// V1.6 - DLJ 2006/07/19 增加了变量数据和变量配置订阅的扩展版本。
// V1.7 - DLJ 2006/07/28 增加了数据回写接口及相应采集器回调函数。
// V1.8 - DLJ 2006/08/08 增加了枚举服务器端文件路径的函数。
// V1.9 - DLJ 2006/09/05 增加了测试计算脚本的函数和相应的回调函数,以及批量修改变量配置函数。
// V2.0 - DLJ 2006/09/07 增加了从采集器层次化浏览变量的接口及相应的回调函数。
// V3.0 - DLJ 2007/11/06 修改变量属性、采集器属性,增加Digital数据类型支持,变量数据查询优化。
//
//==============================================================================
//==============================================================================
#ifndef __KRTDBAPI__H__INCLUDED__
#define __KRTDBAPI__H__INCLUDED__
//==============================================================================
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <assert.h>
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <tchar.h>
#include <wtypes.h>
//==============================================================================
#pragma pack( push , BEFOREKRTDBAPI )
#pragma pack( 1 )
//==============================================================================
#ifdef __cplusplus
extern "C" {
#endif
//==============================================================================
//==============================================================================
//
// 宏定义
//
//==============================================================================
#define KDBAPI _stdcall
#define KWSTR(str) L##str
#define KOK(err) ( ((KDB_INT32)(err)) == 0 )
#define KER(err) ( ((KDB_INT32)(err)) != 0 )
//==============================================================================
//
// 数据类型
//
//==============================================================================
typedef char KDB_CHAR;
typedef wchar_t KDB_WCHAR;
typedef unsigned char KDB_BYTE;
typedef unsigned char KDB_OCTET;
typedef unsigned char KDB_BOOLEAN;
typedef float KDB_FLOAT32;
typedef double KDB_FLOAT64;
typedef signed char KDB_INT8;
typedef unsigned char KDB_UINT8;
typedef short KDB_INT16;
typedef unsigned short KDB_UINT16;
typedef long KDB_INT32;
typedef unsigned long KDB_UINT32;
typedef __int64 KDB_INT64;
typedef unsigned __int64 KDB_UINT64;
typedef void KDB_VOID;
typedef void* KDB_PTR;
typedef KDB_BYTE* KDB_BINARY;
typedef KDB_CHAR* KDB_STR;
typedef const KDB_CHAR* KDB_CSTR;
typedef KDB_WCHAR* KDB_WSTR;
typedef const KDB_WCHAR* KDB_CWSTR;
typedef KDB_STR* KDB_STR_ARRAY;
typedef KDB_WSTR* KDB_WSTR_ARRAY;
typedef long KDB_RET; /// API函数调用返回码
typedef KDB_PTR KDB_HANDLE; /// 连接句柄
typedef KDB_PTR KDB_RESULT; /// 查询结果
typedef KDB_PTR KDB_MULTIPLE_RESULT; /// 多结果集
typedef struct KDBValue* KDB_VARIANT; /// 可变数据类型
typedef KDB_PTR KDB_DATA_RECORDSET_HANDLE; /// 变量数据结果集句柄
typedef KDB_PTR KDB_TAG_RECORDSET_HANDLE; /// 变量属性结果集句柄
//==============================================================================
//
// 公共常量定义
//
//==============================================================================
/// <summary>
/// 用于订阅新增及所有数据项的特殊标志名。
/// </summary>
/// <seealso cref="KDBTagSubscribeProperties"/>
/// <seealso cref="KDBCollectorSubscribeProperties"/>
#define KDB_NEW_ITEM KWSTR( "$NewItem" )
#define KDB_ALL_ITEM KWSTR( "$AllItem" )
#define KDB_NEW_GROUP 0
/// <summary>
/// 标准的布尔常量
/// </summary>
enum KDBBoolean
{
KDB_FALSE = 0, /// 布尔假值
KDB_TRUE = 1, /// 布尔真值
};
/// <summary>
/// 错误代码
/// </summary>
typedef enum KDBErrorCode
{
KERR_OK = 0 , /// 没有错误
KERR_FAIL = -1 , /// 一般性错误
KERR_TIMEOUT = -2 , /// 超时错误
KERR_OUT_OF_MEMORY = -3 , /// 内存错误
KERR_NOT_CONNECTED = -4 , /// 没有或无法建立连接
KERR_ACCESS_DENIED = -5 , /// 访问被拒绝
KERR_NOT_SUPPORTED = -6 , /// 不支持的属性或方法
KERR_INVALID_USER = -7 , /// 无效用户或密码
KERR_INVALID_TAGNAME = -8 , /// 无效变量名
KERR_INVALID_ARG = -9, /// 无效参数
KERR_NO_DATA = -10, /// 数据不存在
KERR_LIC_INVALID = -11, /// 无效授权
KERR_LIC_TOO_MANY_TAGS = -12, /// 超过变量授权计数
KERR_LIC_TOO_MANY_USERS = -13, /// 超过用户授权计数
KERR_INVALID_COMMAND = -14, /// 无效命令
KERR_INVALID_DATA = -15, /// 无效数据
KERR_NETWORK_ERROR = -16, /// 网络错误
KERR_SYSTEM_ERROR = -17, /// 系统错误
KERR_NOT_FOUND = -18, /// 无法找到对象
KERR_SERVICE_NOT_RUNNING = -21, /// 服务不在运行状态
KERR_IO_PENDING = -22, /// IO未完成
KERR_BUFFER_TOO_SMALL = -23, /// 缓冲区太小
KERR_NO_MORE_DATA = -24, /// 没有更多的数据
KERR_DEADLOCK = -25, /// 发生了死锁
KERR_OUT_OF_SPACE = -26, /// 磁盘空间不足
KERR_ALREADY_EXIST = -27, /// 对象已经存在
KERR_DUPLICATE = -28, /// 发现重复项
KERR_OVERFLOW = -30, /// 发生了溢出
KERR_ABORTED = -31, /// 已经退出
KERR_RECORD_TOO_LONG = -32, /// 记录太长
KERR_KEY_TOO_LONG = -33, ///键值太长
KERR_LOAD_RESOURCE_FAIL = -34, /// 装载资源失败
KERR_SERVICE_STATUS_ERROR = -35, /// 服务状态错误
KERR_TOO_MANY_DATA_VERSIONS = -36, /// 超过允许的数据版本数
KERR_SQL_SYNTAX_ERROR = -37, /// SQL语法错误
KERR_DATA_OUT_OF_TIME_RANGE = -39, /// 数据超出时间范围
KERR_DATA_TYPE_ERROR = -40, /// 数据类型错误
KERR_CALLER_CANCEL = -41, /// 调用方取消
}KDB_ERROR_CODE;
/// <summary>
/// 连接控制选项
/// </summary>
typedef enum KDBConnectionFlags
{
// 网络传输协议
KCOF_PROTOCOL_AUTO = 0x00000001, /// 自动选择通讯协议(保留)
KCOF_PROTOCOL_TCPIP = 0x00000002, /// 使用TCP/IP协议(默认)
KCOF_PROTOCOL_SSL = 0x00000004, /// 使用SSL加密传输协议(保留)
KCOF_PROTOCOL_NAMED_PIPE = 0x00000008, /// 命名管道(保留)
KCOF_PROTOCOL_SHARED_MEMORY = 0x00000010, /// 共享内存,只适合本机的进程间通讯(保留)
KCOF_IS_COLLECTOR = 0x00000100, /// 是数据采集器
KCOF_CACHE_MODE_DEFAULT = 0x00000000, /// 默认模式(使用应用程序配置或全局配置)
KCOF_CACHE_MODE_DISABLE = 0x10000000, /// 禁用客户端缓存
KCOF_CACHE_MODE_DATAONLY = 0x20000000, /// 仅查询变量数据使用缓存
KCOF_CACHE_MODE_GATEWAY = 0x30000000, /// 带缓存的代理网关
KCOF_CACHE_MODE_MASK = 0x30000000, /// 缓存模式掩码
KCOF_NETWORK_GAP_NONE = 0x00000000, /// 正常非网闸模式
KCOF_NETWORK_GAP_1BIT = 0x40000000, /// 1BIT模式的单向网闸
KCOF_NETWORK_GAP_1BYTE = 0x80000000, /// 1BYTE模式的单向网闸(7B
KCOF_NETWORK_GAP_4BYTE = 0xC0000000, /// 4BYTE模式的单向网闸
KCOF_NETWORK_GAP_MASK = 0xC0000000, /// 网闸模式掩码
} KDB_CONNECTION_FLAGS;
//==============================================================================
//
// 历史数据相关常量定义
//
//==============================================================================
/// <summary>
/// 时区设置
/// </summary>
typedef enum KDBTimeZone
{
KTMZ_CIENT = 0, /// 客户端时区
KTMZ_SERVER = 1, /// 服务器端时区
- 1
- 2
前往页