Domanda

Mi piacerebbe scrivere un semplice sostituto per w3btrv7.dll in modo da poter passare le chiamate alle API Btrieve ad un'altra libreria (scritto in .NET e chiamata tramite COM). Fondamentalmente, ho bisogno di imitare la firma della funzione BTRCALL in C. Tuttavia, io non sono un programmatore C ... a tutti. Credo di avere una buona idea di come scrivere una DLL che esporta le funzioni, ma oltre a questo, mi sono perso.

La firma di base assomiglia a questo:

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

Codice Operazione - intero

posizione del blocco - 128 array di byte

Dati Buffer -. Non riesco a trovare molti dettagli su questo, ma suppongo che sia un array di byte la cui lunghezza è specificato dal parametro lunghezza buffer dati

Buffer dati Lunghezza - Anche in questo caso, non molte informazioni, ma si presuppone che questo è un numero intero che specifica la lunghezza della matrice di byte precedente

.

Key Buffer - Una matrice di byte con una dimensione massima di 255 byte

Chiave Buffer Length - La lunghezza del array di byte precedente

Numero chiave - integer a 2 byte

Qualcuno può suggerire una funzione in C che corrisponde a questa firma?

È stato utile?

Soluzione

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

È necessario il types.h includono per ottenere il tipo int16_t che specifica un esattamente 2 byte (firmato) intero.

Si noti come gli array non hanno una dimensione specificata, è per questo che le dimensioni devono essere in un parametro a parte o conosciuto a priori (come con pos_block).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top