rtBuffer{Set/Get}DevicePointer type difference?

Perhaps this is a non-issue (haven’t done a lot of CUDA programming so far), but the device pointer arguments for rtBuffer{Set/Get}DevicePointer are void** and CUdeviceptr (a typedef for an unsigned int of sufficient size) respectively (see optix_cuda_interop.h).
Presumably the way to obtain a device pointer that is then passed to rtBufferSetDevicePointer is cudaHostGetDevicePointer(), which uses a void** argument. Why does the API make it necessary to convert that to CUdeviceptr when passing it to OptiX? Or, more likely, what am I missing? ;)

That’s the way it was written. The C++ API doesn’t exhibit this peculiarity.