我想为w3btrv7.dll编写一个非常简单的替代品,这样我就可以将btrieve api调用传递给另一个库(用.NET编写并通过com命名)。基本上,我需要模仿C中BTRCALL函数的签名。但是,我根本不是C程序员...。我认为我对如何编写导出功能的DLL有一个很好的主意,但是除此之外,我迷路了。

基本签名看起来像这样:

int BTRCALL(Operation Code, Position Block, Data Buffer, Data Buffer Length, 
        Key Buffer, Key Buffer Length, Key Number)

操作代码 - 整数

位置块 -128字节阵列

数据缓冲区 - 我找不到很多细节,但是我认为这是一个字节数组,其长度由数据缓冲区长度参数指定。

数据缓冲区长度 - 同样,没有太多信息,但是我认为这是一个整数,它指定了以前的字节数组的长度。

钥匙缓冲区 - 最大大小为255个字节的字节阵列

钥匙缓冲区长度 - 以前的字节数组的长度

钥匙号 - 2字节整数

谁能在C中建议与此签名匹配的功能?

有帮助吗?

解决方案

#include <types.h>
int BTRCALL(int op_code, char pos_block[], char data_buf[], int data_buf_len, char key_buf[], int key_buf_len, int16_t key_num)

您需要类型。H包含以获取指定完全2字节(签名)整数的INT16_T类型。

请注意,这些数组如何没有指定大小的大小,这就是为什么必须在单独的参数中或已知的先验参数(如pos_block)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top