📄 devpcdmsync.cpp
字号:
//
// File:
// =====
// DevPCDMSync.cpp: Implementation file
//
// Description:
// ============
// This class represents the store object for your provider.
// This file also contains all the required dll exports.
//
#include "DevPCDMSync.h"
#include "DevPCDMSyncFldr.h"
CPCDMSyncStore _Store; // one & only global Store object
//
// ========================== MEMBERS ================================
//
CPCDMSyncStore::CPCDMSyncStore()
{
for(int i = 0; i < PCDMSYNC_NUM_FOLDERS; i++)
m_pFolders[i] = NULL;
//
// TODO: If you want to add new folders to the store,
// create & add them to the array here.
//
m_pFolders[0] = new CPCDMSyncFolder();
}
CPCDMSyncStore::~CPCDMSyncStore()
{
//
// TODO: Add any clean up code here
//
for(int i = 0; i < PCDMSYNC_NUM_FOLDERS; i++)
{
delete m_pFolders[i];
m_pFolders[i] = NULL;
}
}
BOOL CPCDMSyncStore::InitObjType(LPWSTR lpszObjType, IReplObjHandler **ppObjHandler, UINT uPartnerBit)
{
//
// Called by ActiveSync to initialize the store
// if lpszObjType == NULL, then we are uninitializing.
//
if(lpszObjType == NULL)
{
//
// Let all our folders clean-up
//
BOOL fRet = TRUE;
for(int i = 0; i < PCDMSYNC_NUM_FOLDERS; i++)
{
if(m_pFolders[i]->UnInitialize() == FALSE)
fRet = FALSE;
}
return fRet;
}
else
{
*ppObjHandler = NULL;
//
// Delegate to appropriate folder
//
CBaseFolder *pFolder = GetFolderByName(lpszObjType);
if(pFolder)
return pFolder->Initialize(ppObjHandler, uPartnerBit);
else
return FALSE;
}
}
BOOL CPCDMSyncStore::ObjectNotify(POBJNOTIFY pNotify)
{
if(pNotify == NULL)
return FALSE;
//
// Delegate to appropriate folder
//
CBaseFolder *pFolder = GetFolderByName(pNotify->szObjType);
if(pFolder)
return pFolder->ObjectNotify(pNotify);
else
return FALSE;
}
BOOL CPCDMSyncStore::GetObjTypeInfo(POBJTYPEINFO pInfo)
{
if(pInfo == NULL)
return FALSE;
//
// Delegate to appropriate folder
//
CBaseFolder *pFolder = GetFolderByName(pInfo->szObjType);
if(pFolder)
return pFolder->GetObjTypeInfo(pInfo);
else
return FALSE;
}
BOOL CPCDMSyncStore::ReportStatus(LPWSTR lpszObjType, UINT uCode, UINT uParam)
{
//
// TODO: Called to inform provider of sync events.
// Add code to handle these events.
//
switch(uCode)
{
case RSC_BEGIN_SYNC:
break;
case RSC_END_SYNC:
break;
}
return TRUE;
}
CBaseFolder* CPCDMSyncStore::GetFolderByName(LPWSTR wszName)
{
//
// Returns the ptr to the folder, given the name
// of the folder.
//
for(int i = 0; i < PCDMSYNC_NUM_FOLDERS; i++)
{
if(::wcscmp(m_pFolders[i]->GetName(), wszName) == 0)
return m_pFolders[i];
}
return NULL;
}
//
// ======================== DLL EXPORTS ===========================//
//
BOOL WINAPI DllMain(HANDLE hInstDll, ULONG ulReason, LPVOID lpReserved)
{
switch(ulReason)
{
case DLL_PROCESS_ATTACH:
break;
case DLL_PROCESS_DETACH:
break;
case DLL_THREAD_ATTACH:
break;
case DLL_THREAD_DETACH:
break;
}
return TRUE;
}
EXTERN_C BOOL InitObjType(LPWSTR lpszObjType, IReplObjHandler **ppObjHandler, UINT uPartnerBit)
{
//
// Delegate to our one & only store object
//
return _Store.InitObjType(lpszObjType, ppObjHandler, uPartnerBit);
}
EXTERN_C BOOL ObjectNotify(POBJNOTIFY pNotify)
{
//
// Delegate to our one & only store object
//
return _Store.ObjectNotify(pNotify);
}
EXTERN_C BOOL GetObjTypeInfo(POBJTYPEINFO pInfo)
{
//
// Delegate to our one & only store object
//
return _Store.GetObjTypeInfo(pInfo);
}
EXTERN_C BOOL ReportStatus(LPWSTR lpszObjType, UINT uCode, UINT uParam)
{
//
// Delegate to our one & only store object
//
return _Store.ReportStatus(lpszObjType, uCode, uParam);
}
//<BOOK_ADDON Chapter=9.3.2> *****************************************************************
EXTERN_C BOOL FindObjects(PFINDOBJINFO pFindObjInfo)
{
//
// Delegate to our one & only store object
//
return _Store.FindObjects(pFindObjInfo);
}
BOOL CPCDMSyncStore::FindObjects(PFINDOBJINFO pFindObjInfo)
{
if(pFindObjInfo == NULL)
return FALSE;
//
// Delegate to appropriate folder
//
CBaseFolder *pFolder = GetFolderByName(pFindObjInfo->szObjType);
if(pFolder)
return pFolder->FindObjects(pFindObjInfo);
else
return FALSE;
}
//</BOOK_ADDON Chapter=9.3.2> *****************************************************************
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -