質問

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