2025-11-28 00:35:46 +09:00

68 lines
2.4 KiB
C++

// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
// PARTICULAR PURPOSE.
//
// Copyright (c) Microsoft Corporation. All rights reserved
//
// DimmerDeviceDCO.h
#ifndef __DimmerDevice_H_
#define __DimmerDevice_H_
// This is equal to the number of devices (root or embedded) in the description doc
#define NUM_TEMPLATE_UDNS_IN_DESCDOC 1
// This is equal to the maximum number of services in any device in the description doc
#define MAX_NOSERVICE_PER_DEVICE 1
////////////////////////////////////////////////////////////////
// UPNPDimmerDevice : class definition for the Device Control
// Implementation for the Dimmer Device
////////////////////////////////////////////////////////////////
class ATL_NO_VTABLE UPNPDimmerDevice:
public CComObjectRootEx<CComMultiThreadModel>,
public CComCoClass<UPNPDimmerDevice, &CLSID_UPNPSampleDimmerDevice>,
public IUPnPDeviceControl
{
private:
// variables used internally are declared
// String that stores the description doc that is passed by the
// Device Host during Intialize
BSTR descriptionDoc;
// table to hold mapping from template UDN's to the UDN's actually
// used by the DeviceHost when publishing the device
BSTR UDNmapping[NUM_TEMPLATE_UDNS_IN_DESCDOC][2];
// now for each of the Template UDN's we maintain a list of services
// in it and the IDispatch interface pointers the serviceIDDeviceMap
// table maps between devices (root or embedded) and the service Id's in the device
BSTR serviceIDDeviceMap[NUM_TEMPLATE_UDNS_IN_DESCDOC][MAX_NOSERVICE_PER_DEVICE];
// this table maps between the services in the device (root or embedded)
// and the IDispatch pointers
IDispatch* pDisPtrs[NUM_TEMPLATE_UDNS_IN_DESCDOC][MAX_NOSERVICE_PER_DEVICE];
public:
UPNPDimmerDevice();
~UPNPDimmerDevice();
STDMETHODIMP UPNPDimmerDevice::Initialize(_In_ BSTR bstrXMLDesc, _In_ BSTR deviceID, _In_ BSTR bstrInitString);
STDMETHODIMP UPNPDimmerDevice::GetServiceObject(_In_ BSTR bstrUDN, _In_ BSTR bstrServiceId, _Outptr_ IDispatch **ppdispService);
DECLARE_REGISTRY_RESOURCEID(IDR_UPNPDIMMERDEVICE)
DECLARE_PROTECT_FINAL_CONSTRUCT()
BEGIN_COM_MAP(UPNPDimmerDevice)
COM_INTERFACE_ENTRY(IUPnPDeviceControl)
END_COM_MAP()
};
#endif //__DimmerDevice_H_