⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 obeximpl.h

📁 symbian下基于Object Exchange (OBEX)的协议进行数据传输的源代码。
💻 H
字号:
// Obex.h: interface for the CObex class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_OBEX_H__62D822F6_ED0F_4644_B998_3AA80026ED7C__INCLUDED_)
#define AFX_OBEX_H__62D822F6_ED0F_4644_B998_3AA80026ED7C__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include "stdafx.h"
#include <obex.h>
#include <atlbase.h>

#define MAX_DEVS              16
#define BUFFSIZE              8192

#define	WM_OBEX_INFO	WM_USER + 2005
#define WM_OBEX_EVENT   WM_USER + 2006

#define DEV_FLAG_ADDRESS      0x00000001
#define DEV_FLAG_NAME         0x00000002
#define DEV_FLAG_TRANSPORT    0x00000004
#define DEV_FLAG_PORT         0x00000008
#define DEV_FLAG_UUID         0x00000010
#define DEV_FLAG_DEVBOUND     0x00000100

#define DEV_TRANS_IRDA        0x00010000
#define DEV_TRANS_BTOOTH      0x00020000

#define DEV_SERVICE_OBJPUSH   0x01000000
#define DEV_SERVICE_FTP       0x02000000
#define DEV_SERVICE_IRMCSYNC  0x04000000

// The GUID strings below are defined numerically in bt_sdp.h
/*
const TCHAR g_szIrMCSyncGuid[] = 
                        TEXT("{00001104-0000-1000-8000-00805f9b34fb}");
const TCHAR g_szObjPushGuid[] =  
                        TEXT("{00001105-0000-1000-8000-00805f9b34fb}");
const TCHAR g_szFtpGuid[] =      
                        TEXT("{00001106-0000-1000-8000-00805f9b34fb}");

const TCHAR g_szTransIrDA[] =      
                        TEXT("{30a7bc02-59b6-40bb-aa2b-89eb49ef274e}");
const TCHAR g_szTransBth[] =      
                        TEXT("{30a7bc03-59b6-40bb-aa2b-89eb49ef274e}");
*/
/*
// {F9ec7bc4-953c-11d2-984e-525400dc9e09}
GUID CLSID_FileExchange_NetOrder = {0xc47becf9, 0x3c95, 0xd211, 
                    {0x98, 0x4e, 0x52, 0x54, 0x00, 0xdc, 0x9e, 0x09}};
*/
typedef struct 
{
    DWORD dwFlags;
    TCHAR szName[256];
    TCHAR szAddr[32];
    DWORD dwTransport;
    DWORD dwPort;
    GUID guidService;
    IPropertyBag* pDevBag;
} OBEXDEVICEINFO, *POBEXDEVICEINFO;


class IObexSinkImpl : public IObexSink 
{

private:
    HWND m_hWnd;
    int m_lRef;

public:
    IObexSinkImpl(HWND hWnd) 
	{
        m_hWnd = hWnd;
        m_lRef = 0;
    }

    virtual ~IObexSinkImpl() {}

    HRESULT STDMETHODCALLTYPE Notify(OBEX_EVENT evtEvent, IUnknown *pUnk1, IUnknown *pUnk2) 
    {
        if (::IsWindow(m_hWnd)) 
		{
            pUnk1->AddRef();
            ::PostMessage (m_hWnd, WM_OBEX_EVENT, (WPARAM)evtEvent,(LPARAM)pUnk1);
        }
        return S_OK;
    }

    HRESULT STDMETHODCALLTYPE QueryInterface (REFIID riid, LPVOID *ppv)
    {

        if (IsEqualIID (riid, IID_IUnknown) || 
            IsEqualIID (riid, IID_IObexSink)) 
		{
            // Return pointer to object.
            *ppv = (IConnectionPoint *)this;     
            AddRef();                // Increment ref 
            return NOERROR;
        }
        *ppv = NULL;
        return (E_NOINTERFACE);
    }

    ULONG  STDMETHODCALLTYPE AddRef () 
	{
        ULONG cnt = (ULONG)InterlockedIncrement ((long *)&m_lRef);
        return cnt;
    }

    ULONG STDMETHODCALLTYPE Release () 
	{
        ULONG cnt = (ULONG)InterlockedDecrement ((long *)&m_lRef);
        if (cnt == 0) 
		{
            delete this;
            return 0;
        }
        return cnt;
    }
};

class CObex  
{
	// OBEX stuff
	CComPtr<IObex> m_pObex;
	CComPtr<IConnectionPointContainer> m_pContainer;
	CComPtr<IConnectionPoint> m_pConPoint;
	DWORD m_dwCookie;


public:
	HWND m_hWnd;
	OBEXDEVICEINFO m_oDevs[MAX_DEVS];

public:
	CObex();
	virtual ~CObex();

	int InitObex(HWND hWnd);
	void Shutdown();
	IObex* GetObex() { return m_pObex; }
	int SendFile(IObexDevice *pDevice, 
				 LPTSTR pszFileName, DWORD dwFlags);

	int ResetDevList();
	POBEXDEVICEINFO FindDevInfo(IPropertyBag* pDevBag);
};

#endif // !defined(AFX_OBEX_H__62D822F6_ED0F_4644_B998_3AA80026ED7C__INCLUDED_)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -