Sample Code

Windows Driver Samples/ WPD Basic Hardware Sample Driver (UMDF Version 1)/ C++/ WpdBaseDriver.h/

#pragma once

typedef struct tagSENSOR_INFO{
    unsigned char   deviceID;
    unsigned short  dataLength;
} SENSOR_INFO;

class WpdBaseDriver :
    public IUnknown
{
public:
    WpdBaseDriver();
    virtual ~WpdBaseDriver();

    HRESULT Initialize(_In_ IWDFDevice *pDevice);
    void    Uninitialize();

    HRESULT DispatchWpdMessage(_In_ IPortableDeviceValues* pParams,
                               _In_ IPortableDeviceValues* pResults);

    HRESULT ProcessReadData(_In_reads_(cbData) BYTE* pData, size_t cbData);

    RS232Target* GetRS232Target();

public: // IUnknown
    ULONG __stdcall AddRef();

    _At_(this, __drv_freesMem(Mem)) 
    ULONG __stdcall Release();

    HRESULT __stdcall QueryInterface(REFIID riid, void** ppv);

private:
    HRESULT OnGetObjectIDsFromPersistentUniqueIDs(_In_ IPortableDeviceValues* pParams,
                                                  _In_ IPortableDeviceValues* pResults);

    HRESULT PostSensorReadingEvent(LONGLONG llSensorData, DWORD dwUpdateInterval);

public:
        
    enum SensorType{
      UNKNOWN,  // Unknown
      COMPASS,  // Compass
      SENSIRON, // Temp/humidity sensor 
      FLEX,     // Flexiforce sensor
      PING,     // Ultrasonic ping 
      PIR,      // Passive infrared
      MEMSIC,   // 2-axis accelerometer 
      QTI,      // Light sensor
      PIEZO,    // Vibration Sensor 
      HITACHI,  // 3-axis accelerometer
    };

    SensorType   m_SensorType;  // enum value specifying sensor type

private:
    WpdObjectEnumerator            m_ObjectEnum;
    WpdObjectProperties            m_ObjectProperties;
    WpdCapabilities                m_Capabilities;

    ULONG                          m_cRef;
    RS232Connection                m_Connection;
    RS232Target                    m_Target;

    CComPtr<IWDFDevice>            m_pWDFDevice;
    CComPtr<IWpdSerializer>        m_pWpdSerializer;
    CComPtr<IPortableDeviceValues> m_pEventParams;
};

Our Services

  • What our customers say about us?

© 2011-2024 All Rights Reserved. Joya Systems. 4425 South Mopac Building II Suite 101 Austin, TX 78735 Tel: 800-DEV-KERNEL

Privacy Policy. Terms of use. Valid XHTML & CSS