I try to use windows location manager and write th...
# kotlin-native
a
I try to use windows location manager and write the code (error checks exists by skiped):
Copy code
val pSensorManager = zeroValue<ISensorManager>().getPointer(memScope)
            CoCreateInstance(CLSID_SensorManager.ptr, null, CLSCTX_INPROC_SERVER.toUInt(), IID_ISensorManager.ptr, pSensorManager.reinterpret())
            pSensorManager.pointed.lpVtbl?.pointed?.let { sensorManagerVtbl: ISensorManagerVtbl ->
                println("----AddRef: ${sensorManagerVtbl.AddRef?.rawValue}") // looks like a ref: 0x7ffebe937468
                println("----GetSensorsByCategory: ${sensorManagerVtbl.GetSensorsByCategory?.rawValue}") // looks like a ref: 0x-45520ff300000000
                println("----GetSensorsByType: ${sensorManagerVtbl.GetSensorsByType?.rawValue}") // look like error: 0x-1
                sensorManagerVtbl.AddRef?.invoke(pSensorManager) // Error: User-mode data execution prevention (DEP) violation at location 0x7ffebe937468
                sensorManagerVtbl.GetSensorsByCategory?.invoke(pSensorManager, SENSOR_CATEGORY_LOCATION.ptr, pSensorCollection) // The same error
What do I wrong?
Maybe I miss in "pointer to null"? In C this code like
Copy code
IWbemLocator* wbemLocator = NULL;
CoCreateInstance(CLSID_WbemLocator, NULL, CLSCTX_INPROC_SERVER,
                           IID_IWbemLocator, (void **)&wbemLocator);
In kotlin I write
Copy code
val wbemLocator = zeroValue<IWbemLocator>().getPointer(memScope)
CoCreateInstance(CLSID_WbemLocator.ptr, null, CLSCTX_INPROC_SERVER,
                IID_IWbemLocator.ptr, wbemLocator.reinterpret())
Is it correct?
I've fixed it (see repo)