I find this strange:
&mut h as *mut _ as *mut _
What is going on here? &mut h as *mut _ as *mut _
What is going on here? &mut DeviceHandle -> *mut DeviceHandle -> *mut c_void
(with the pointer types being solved for automatically by the compiler)