Pregunta

Me gustaría escribir un reemplazo muy simple para w3btrv7.dll para poder pasar las llamadas de API Btrieve a otra biblioteca (escrita en .NET y llamado Via Com). Básicamente, necesito imitar la firma de la función BTRCALL en C. Sin embargo, no soy un programador C ... en absoluto. Creo que tengo una idea bastante buena de cómo escribir una DLL que exporta funciones, pero más allá de eso, estoy perdido.

La firma básica se ve así:

int BTRCALL(Operation Code, Position Block, Data Buffer, Data Buffer Length, 
        Key Buffer, Key Buffer Length, Key Number)

Código de operación - entero

Bloque de posición - Array de 128 bytes

Buffer de datos - No puedo encontrar muchos detalles sobre esto, pero supongo que es una matriz de bytes cuya longitud es especificada por el parámetro de longitud del búfer de datos.

Longitud del búfer de datos - Nuevamente, no hay mucha información, pero supongo que este es un entero que especifica la longitud de la matriz de bytes anterior.

Búfer de llave - Una matriz de bytes con un tamaño máximo de 255 bytes

Longitud del búfer clave - La longitud de la matriz de bytes anterior

Número clave - Integer de 2 bytes

¿Alguien puede sugerir una función en C que coincida con esta firma?

¿Fue útil?

Solución

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

Necesita los tipos.h incluir para obtener el tipo int16_t que especifica un número entero exactamente de 2 bytes (firmado).

Tenga en cuenta cómo las matrices no tienen un tamaño especificado, es por eso que los tamaños tienen que estar en un parámetro separado o conocido a priori (como con POS_BLOCK).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top