Я пытаюсь получить данные датчика, следуя примеру Windows Sensor API.
Код прост:
int main() {
printf("Starting SensorManager...\n");
HRESULT hr = S_OK;
// Sensor interface pointers
ISensorManager* pSensorManager = NULL;
ISensorCollection* pSensorColl = NULL;
// Create the sensor manager.
hr = CoCreateInstance(CLSID_SensorManager,
NULL, CLSCTX_INPROC_SERVER,
IID_PPV_ARGS(&pSensorManager));
if (pSensorManager == nullptr) {
printf("no sensor manager");
}
if (hr == HRESULT_FROM_WIN32(ERROR_ACCESS_DISABLED_BY_POLICY))
{
// Unable to retrieve sensor manager due to
// group policy settings. Alert the user.
printf("Failed getting sensor manager due to disabled policy...\n");
}
hr = pSensorManager->GetSensorsByType(SENSOR_TYPE_ACCELEROMETER_3D, &pSensorColl);
return 0;
}
CoCreateInstance
должен вернуть указатель ISensorManager
, который будетиспользоваться для доступа и извлечения датчиков.
Моя проблема с этим кодом в том, что pSensorManager
не инициализируется даже после CoCreateInstance()
.Я проверяю, является ли это nullptr
после, и действительно выводит сообщение об ошибке.Этот код прямо с веб-сайта Microsoft, поэтому я не могу понять, почему SensorManager
будет нулевым.
Я использую 1) Windows SDK 10
2) Windows Kits 10.0.17763
3) Visual Studio 2013.
Я правильно включил всезаголовочные файлы, чтобы я мог создать код.
Почему бы CoCreateInstance()
не инициализировать pSensorManager
?Независимо от того, подключено ли сенсорное устройство, оно не должно правильно инициализироваться?