Вопрос

Я хотел бы написать очень простую замену для w3btrv7.dll, чтобы я мог передать вызовы API Btrieve в другую библиотеку (написанную в .NET и вызову через COM). По сути, мне нужно имитировать подпись функции Btrcall в C. Однако я не программист 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 Включите, чтобы получить тип int16_t, который определяет ровно 2-байтовое (подписанное) целое число.

Обратите внимание, как массивы не имеют указанного размера, поэтому размеры должны находиться в отдельном параметре или известно априори (как с Pos_block).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top