Question

Je voudrais écrire un remplacement très simple pour w3btrv7.dll je peux passer des appels API Btrieve à une autre bibliothèque (écrit en .NET et appelé via COM). Fondamentalement, je dois imiter la signature de la fonction BTRCALL en C. Cependant, je ne suis pas un programmeur C ... du tout. Je pense avoir une assez bonne idée de la façon d'écrire une DLL qui exporte des fonctions, mais au-delà, je suis perdu.

La signature de base ressemble à ceci:

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

Code de l'opération - entier

Bloc Position - tableau de 128 octets

Mémoire tampon de données -. Je ne trouve pas beaucoup de détails à ce sujet, mais je suppose que c'est un tableau d'octets dont la longueur est spécifiée par le paramètre mémoire tampon de données de longueur

tampon de données Longueur - Encore une fois, pas beaucoup d'informations, mais je suppose que c'est un entier qui spécifie la longueur du tableau d'octets précédent

.

Tampon Key - Un tableau d'octets avec une taille maximale de 255 octets

Tampon clé Longueur - La longueur du tableau d'octets précédent

Numéro de clé - entier 2 octets

Quelqu'un peut-il proposer une fonction en C qui correspond à cette signature?

Était-ce utile?

La solution

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

Vous avez besoin de types.h inclure pour obtenir le type de int16_t qui spécifie un nombre entier de 2 octets exactement (signé).

Notez comment les tableaux ne sont pas une taille spécifiée, c'est pourquoi les tailles doivent être dans un paramètre séparé ou connu a priori (comme pos_block).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top