// <Include>
///////////////////////////////////////////////////////////////////////////////
//
// THIS FILE IS AUTOMATICALLY GENERATED.  DO NOT MODIFY IT BY HAND.
//
///////////////////////////////////////////////////////////////////////////////
// </Include>

// <Include>
#pragma once
// </Include>

// <CDATA>

class CFileServiceProxy;
class CFileServiceEventSource;

// </CDATA>

// <ProxyBuilderDeclarations>
HRESULT CreateCFileServiceProxy(
                LPCWSTR pszDeviceAddress,
                LPCWSTR pszLocalAddress,
                CFileServiceProxy** ppProxyOut,
                IWSDXMLContext** ppContextOut);

HRESULT CreateCFileServiceProxyById(
                LPCWSTR pszDeviceAddress,
                LPCWSTR pszServiceId,
                LPCWSTR pszLocalAddress,
                CFileServiceProxy** ppProxyOut,
                IWSDXMLContext** ppContextOut);
// </ProxyBuilderDeclarations>

// <CDATA>

class CFileServiceProxy: public IFileServiceProxy
{
protected:
    ~CFileServiceProxy();
    LONG m_cRef;
    IWSDServiceProxy* m_genericProxy;

public:
    HRESULT STDMETHODCALLTYPE Init(IWSDServiceProxy* genericProxy);
    CFileServiceProxy();

// </CDATA>

// <IUnknownDeclarations>
    // 
    // IUnknown
    // 
    HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void **ppvObject);
    ULONG STDMETHODCALLTYPE AddRef();
    ULONG STDMETHODCALLTYPE Release();
// </IUnknownDeclarations>

// <FunctionDeclarations>
    HRESULT STDMETHODCALLTYPE
    GetFileList
    (   /* [out] */ GET_FILE_LIST_RESPONSE** parametersOut
    );

    HRESULT STDMETHODCALLTYPE
    GetFile
    (   /* [in] */ GET_FILE_REQUEST* parameters
    ,   /* [out] */ GET_FILE_RESPONSE** parametersOut
    );

// </FunctionDeclarations>

// <FunctionDeclarations>
    HRESULT STDMETHODCALLTYPE
    BeginGetFileList
    (   /* [in] */ IUnknown* AsyncState
    ,   /* [in] */ IWSDAsyncCallback* AsyncCallback
    ,   /* [out] */ IWSDAsyncResult** AsyncResultOut
    );

    HRESULT STDMETHODCALLTYPE
    EndGetFileList
    (   /* [in] */ IWSDAsyncResult* AsyncResult
    ,   /* [out] */ GET_FILE_LIST_RESPONSE** parametersOut
    );

    HRESULT STDMETHODCALLTYPE
    BeginGetFile
    (   /* [in] */ GET_FILE_REQUEST* parameters
    ,   /* [in] */ IUnknown* AsyncState
    ,   /* [in] */ IWSDAsyncCallback* AsyncCallback
    ,   /* [out] */ IWSDAsyncResult** AsyncResultOut
    );

    HRESULT STDMETHODCALLTYPE
    EndGetFile
    (   /* [in] */ IWSDAsyncResult* AsyncResult
    ,   /* [out] */ GET_FILE_RESPONSE** parametersOut
    );

// </FunctionDeclarations>

// <SubscriptionFunctionDeclarations>
    HRESULT STDMETHODCALLTYPE
    SubscribeToFileChangeEvent
    (    IFileServiceEventNotify* eventSink
    );

    HRESULT STDMETHODCALLTYPE
    UnsubscribeToFileChangeEvent
    (    void
    );

// </SubscriptionFunctionDeclarations>

// <CDATA>

};

// </CDATA>

// <EventSourceBuilderDeclarations>
HRESULT CreateCFileServiceEventSource(IWSDDeviceHost* pHost, LPCWSTR pszServiceId, CFileServiceEventSource** ppEventSourceOut);
// </EventSourceBuilderDeclarations>

// <CDATA>

class CFileServiceEventSource: public IFileServiceEventNotify
{
protected:
    ~CFileServiceEventSource();
    LONG m_cRef;
    IWSDDeviceHost* m_host;
    const WCHAR* m_serviceId;

public:
    HRESULT STDMETHODCALLTYPE Init(IWSDDeviceHost* pIWSDDeviceHost, const WCHAR* serviceId);
    CFileServiceEventSource();

// </CDATA>

// <IUnknownDeclarations>
    // 
    // IUnknown
    // 
    HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void **ppvObject);
    ULONG STDMETHODCALLTYPE AddRef();
    ULONG STDMETHODCALLTYPE Release();
// </IUnknownDeclarations>

// <FunctionDeclarations>
    HRESULT STDMETHODCALLTYPE
    FileChangeEvent
    (   /* [in] */ FILE_CHANGE_EVENT* result
    );

// </FunctionDeclarations>

// <CDATA>

};

// </CDATA>

