Ureader.com  
Microsoft software help and Community
   home   |   control panel login   |   archive   |  
 
platform
active.directory
adsi
adsi.iis-admin
base
com_ole
complus_mts
component_svcs
database
directx
gdi
graphics_mm
internet.client
internet.server
internet.server.isapi-dev
localization
mapi
messaging
msi
mslayerforunicode
multimedia
networking
networking.ipv6
sdk_install
security
shell
telephony.tapi_2
telephony.tapi_3
telephony.tsp
telephony.wte
tools
ui
ui_shell
win_base_svcs
win16
  
 
date: Thu, 3 Jul 2008 10:22:20 +0530,    group: microsoft.public.platformsdk.mapi        back       


Free Busy Provider crashes   
Hi All,



I am trying to implement the FreeBusy Provider for Outlook. Just to see if 
things work as expected i partially implemeted the interfacese. I.e. didnt 
fetched data from any valid source but just returned same data for every 
user.



Outlook does loads the DLL instanciates the IFreeBusySupport object calls 
LoadFreeBusyData in which i return it a IFreeBusyData interface. Later using 
this interface it calls IFreeBusyData::EnumBlocks from which i return an 
interface for IEnumFBBlock. At this point outlook calls EnumBlocks two times 
and i retrun it the same interface for both the calls.



Then Outlook calls IEnumFBBlock::Next from this I just populate the first 
FBBlock_1 and returns S_FALSE. And Outlook crashes just after the call 
returns. It crashes every time at the same address for every profile. the 
address is "0x3044747b" the call is from OUTLLIB.DLL, I know this is not of 
any help but still..



Here is the implementation for the Next function.



HRESULT EnumFBBlock::Next(LONG celt, FBBlock_1 *pblk, LONG *pcfetch)

{

    memset(pblk, 0, sizeof(FBBlock_1) * 32);

    pblk[0].m_fbstatus = fbOutOfOffice;

    SYSTEMTIME sysStTime = {0}, sysEdTime = {0};

    FILETIME fileStTime = {0}, fileEdTime = {0};

    //start time

    GetSystemTime(&sysStTime);

    sysStTime.wHour += 6;

    SystemTimeToFileTime(&sysStTime, &fileStTime);

    FileTimeToRTime(&fileStTime, &pblk[0].m_tmStart);

    //end time

    GetSystemTime(&sysEdTime);

    sysEdTime.wHour += 7;

    SystemTimeToFileTime(&sysEdTime, &fileEdTime);

    FileTimeToRTime(&fileEdTime, &pblk[0].m_tmEnd);

    *pcfetch = 1;

    return S_FALSE;

}

Any idea what might be going wrong here.

Regards,

Huzaifa
date: Thu, 3 Jul 2008 10:22:20 +0530   author:   huzaifa kagazwala

Google
 
Web ureader.com


    COPYRIGHT 2007, YARDI TECHNOLOGY LIMITED, ALL RIGHT RESERVE  |   contact us