Escrevendo um substituto para uma dll C?
Pergunta
Gostaria de escrever um substituto muito simples para W3BTRV7.DLL para que eu possa passar as chamadas da API da BTRIEVE para outra biblioteca (escrita no .NET e chamado via COM). Basicamente, preciso imitar a assinatura da função btrcall em C. no entanto, eu não sou um programador C ... de forma alguma. Acho que tenho uma boa idéia de como escrever uma DLL que exporta funções, mas além disso, estou perdido.
A assinatura básica é assim:
int BTRCALL(Operation Code, Position Block, Data Buffer, Data Buffer Length,
Key Buffer, Key Buffer Length, Key Number)
Código de operação - Inteiro
Bloco de posição - 128 bytes matriz
Buffer de dados - Não consigo encontrar muitos detalhes sobre isso, mas presumo que seja uma matriz de bytes cujo comprimento é especificado pelo parâmetro de comprimento do buffer de dados.
Comprimento do buffer de dados - Novamente, não há muita informação, mas presumo que este seja um número inteiro que especifica o comprimento da matriz de bytes anterior.
Buffer de chave - Uma matriz de bytes com um tamanho máximo de 255 bytes
Comprimento do buffer de chave - A duração da matriz de bytes anterior
Número da chave - 2 bytes inteiros
Alguém pode sugerir uma função em C que corresponda a essa assinatura?
Solução
#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)
Você precisa dos tipos.
Observe como as matrizes não têm um tamanho especificado, é por isso que os tamanhos precisam estar em um parâmetro separado ou a priori conhecido (como com POS_block).