Algılayıcı API Programlama Kılavuzu

Önemli

Bunun yerine UWP Algılayıcı API'sini kullanın.

COM tabanlı Algılayıcı API'si kullanım dışıdır ve yeni uygulamalarda kullanılmamalıdır. Ek özellik veya geliştirme planlanmıyor ve destek sınırlı olacak.

Bu bölümde, Algılayıcı API'si özelliklerinin nasıl kullanılacağı hakkında örnek kod da dahil olmak üzere bilgiler sağlanır. Çeşitli programlama arabirimleri hakkında arka plan bilgileri için bkz. Algılayıcı API hakkında.

Bu bölümdeki örnek kod, aşağıdaki ek eklenen üst bilgileri kullanır.

#include <windows.h>
#include <initguid.h>
#include <propkeydef.h>


#include <iostream>
#include <propvarutil.h>
#include <functiondiscoverykeys.h>
#include <assert.h>

Bu ek ilişkili kitaplık dosyalarına da bağlanmalısınız: Propsys.lib ve PortableDeviceGuids.lib.

Bu bölümdeki örnek kod, algılayıcı kategorileri, türleri ve veri alanları için aşağıdaki sabitleri kullanır. Bu sabitler, Windows Sürücü Seti'ndeki TimeSensor sürücü örneği tarafından tanımlanan özel değerlerdir. Algılayıcı platformu, bunlar gibi özel türleri tanımlamayı ve kullanmayı etkinleştirse de mümkün olduğunda platform tanımlı türler kullanmanız gerektiğini unutmayın.

// Define an object ID.
// {0D77BEE3-7169-42bf-8379-28F9A9B59A57}
DEFINE_GUID(SAMPLE_SENSOR_TIME_ID, 
0xd77bee3, 0x7169, 0x42bf, 0x83, 0x79, 0x28, 0xf9, 0xa9, 0xb5, 0x9a, 0x57);

// Define a custom category.
// {062A5C3B-44C1-4ad1-8EFC-0F65B2E4AD48}
DEFINE_GUID(SAMPLE_SENSOR_CATEGORY_DATE_TIME, 
0x62a5c3b, 0x44c1, 0x4ad1, 0x8e, 0xfc, 0xf, 0x65, 0xb2, 0xe4, 0xad, 0x48);

// Define a custom type.
// {5F199A84-409F-4e35-B2DD-F9C79F5318A0}
DEFINE_GUID(SAMPLE_SENSOR_TYPE_TIME, 
0x5f199a84, 0x409f, 0x4e35, 0xb2, 0xdd, 0xf9, 0xc7, 0x9f, 0x53, 0x18, 0xa0);

// Time sensor fields.
// Because these are related, each field uses the same GUID, but changes the PID.
// {340946F2-9A77-42b0-8176-57D4DF00E5CA}
DEFINE_PROPERTYKEY(SAMPLE_SENSOR_DATA_TYPE_HOUR, 
0x340946f2, 0x9a77, 0x42b0, 0x81, 0x76, 0x57, 0xd4, 0xdf, 0x0, 0xe5, 0xca, PID_FIRST_USABLE); // PID = 2

DEFINE_PROPERTYKEY(SAMPLE_SENSOR_DATA_TYPE_MINUTE, 
0x340946f2, 0x9a77, 0x42b0, 0x81, 0x76, 0x57, 0xd4, 0xdf, 0x0, 0xe5, 0xca, PID_FIRST_USABLE + 1); // PID = 3

DEFINE_PROPERTYKEY(SAMPLE_SENSOR_DATA_TYPE_SECOND, 
0x340946f2, 0x9a77, 0x42b0, 0x81, 0x76, 0x57, 0xd4, 0xdf, 0x0, 0xe5, 0xca, PID_FIRST_USABLE + 2); // PID = 4

Bu bölümdeki örnek kod aşağıdaki değişkenleri kullanır.

HRESULT hr = S_OK;

// Sensor interface pointers
ISensorManager* pSensorManager = NULL;    
ISensorCollection* pSensorColl = NULL;
ISensor* pSensor = NULL; 
ISensorDataReport* pReport = NULL;

// Time sensor data field variables
ULONG ulHour, ulMinute, ulSecond = 0;

Bu bölümdeki örnek kod, COM arabirim işaretçilerini serbest bırakmak için aşağıdaki işlevi kullanır.

template <class T> void SafeRelease(T **ppT)
{
    if (*ppT)
    {
        (*ppT)->Release();
        *ppT = NULL;
    }
}

Bu Bölümde

Algılayıcı API'sinin Hakkında