SensorManager nullptr даже после инициализации Windows Sensor API - PullRequest
0 голосов
/ 11 декабря 2018

Я пытаюсь получить данные датчика, следуя примеру 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?Независимо от того, подключено ли сенсорное устройство, оно не должно правильно инициализироваться?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...