You mean like 0x41 == semaphore... ?

They are enumerations in C++ - that means the compiler puts them into the smallest possible datatype. If I remember these things correctly, they are all less than 0xFF - so they are unsigned char in C++, Byte in VB. Assuming I'm right use Byte datatypes.

Watch out for C expecting pointers. like myDll(char *i) - this expects a pointer. You can pass them either way. but they have to match what C wants:

(ByVal Iocode as Byte)
(ByRef Iocode as Byte)

Be sure to use hex codes to assign them in VB:
Iocode = &H41, for example.

That what you meant?