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?

Foi útil?

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).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top