📄 obeximpl.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 + -