Well, in the first place, there's no such thing as a BYTE * (in C), except as defined by a macro or typedef. One would like to know how it was defined in order to make a sensible conversion. One COULD make the conversion unilaterally and generally expect to get away with it in most systems, since, in most (not all) systems, pointers are merely straightforward memory addresses. Just use a cast.