質問
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のように)にある必要があります。
所属していません StackOverflow