cdllbtrieve

Writing a replacement for a C DLL?


I'd like to write a very simple replacement for w3btrv7.dll so I can pass Btrieve API calls to another library (written in .NET and called via COM). Basically, I need to mimic the signature of the BTRCALL function in C. However, I'm not a C programmer... at all. I think I have a pretty good idea of how to write a DLL that exports functions, but beyond that, I'm lost.

The basic signature looks like this:

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

Operation Code - integer

Position Block - 128 byte array

Data Buffer - I can't find many details about this, but I assume it's a byte array whose length is specified by the Data Buffer Length parameter.

Data Buffer Length - Again, not much information, but I assume this is an integer that specifies the length of the previous byte array.

Key Buffer - A byte array with a maximum size of 255 bytes

Key Buffer Length - The length of the previous byte array

Key Number - 2-byte integer

Can anyone suggest a function in C that matches this signature?


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)
    

    You need the types.h include to get the int16_t type that specifies an exactly 2-byte (signed) integer.

    Note how the arrays don't have a size specified, that's why the sizes have to be in a separate parameter or known a priori (as with pos_block).