#ifndef PABTEST_H #define PABTEST_H //#define TESTPASS // Set the provider to either PAB or WAB //#define PAB #ifndef PAB #define WAB #endif #include #include #ifdef WAB // // WAB Headers // #include #endif #ifdef PAB // // MAPI headers // #include #include #include #include //#include #include #include #include #include #endif //MAPI Headers that are needed for WAB #include #include #include #include #include #include #include #include #include #include LRESULT CALLBACK WndProc (HWND hwnd, UINT message, UINT wParam, LONG lParam); // Foreign Address Book Provider MAPIUID //#define MUIDFAB {0x45,0xef,0xe6,0xe0,0xfd,0xd8,0x11,0xce,0xa4,0x88,0x00,0xaa,0x00,0x47,0xfa,0xa4} // Test for PT_ERROR property tag #define PROP_ERROR(prop) (prop.ulPropTag == PROP_TAG(PT_ERROR, PROP_ID(prop.ulPropTag))) // Blank tags #define IN #define OUT #define BIG_BUF 256 #define MAX_BUF 1000 #define SML_BUF 50 #define MAXMENU 20 #define MAXSTRING 64 #define INIFILENAME "c:\\Pabtests.ini" // Flag used only in sample code shell toswitch between operations // using and not-using UI #define SAMPWAB_ADDRESS_UI 0x00000001 #define BUFFERSIZE 1024 #define BUFFERSIZE2 2003 #define BUFFERSIZE3 4096 #define PATTERN 0xA5 // 1 byte test pattern for verifying memory #define INVALIDPTR 0xfeeefeee #define AUTONUM_OFF 0xFFFF HRESULT OpenPABID( IN LPADRBOOK lpAdrBook, OUT ULONG *lpcbEidPAB, OUT LPENTRYID *lppEidPAB, OUT LPABCONT *lppPABCont, OUT ULONG *lpulObjType); #ifdef PAB BOOL MapiUnInit(IN LPMAPISESSION); BOOL MapiInitLogon(OUT LPMAPISESSION *); #endif BOOL GetPropsFromIniBufEntry(LPSTR,ULONG,char (*)[BIG_BUF]); HRESULT HrCreateEntryListFromID(LPWABOBJECT, IN ULONG , // count of bytes in Entry ID IN LPENTRYID , // pointer to Entry ID OUT LPENTRYLIST FAR *); // pointer to address variable of Entry // list BOOL GetAB(OUT LPADRBOOK*); BOOL ValidateAdrList(LPADRLIST, ULONG); BOOL PabCreateEntry(); BOOL PabDeleteEntry(); BOOL PabEnumerateAll(); BOOL ClearPab(int); BOOL CreateOneOff(); BOOL PABResolveName(); BOOL PABSetProps(); BOOL PABQueryInterface(); BOOL PABPrepareRecips(); BOOL PABCopyEntries(); BOOL PABRunBVT(); BOOL PABAllocateBuffer(); BOOL PABAllocateMore(); BOOL PABFreeBuffer(); BOOL PAB_IABOpenEntry(); BOOL PAB_IABContainerCreateEntry(); BOOL PAB_IMailUserSetGetProps(); BOOL PAB_IMailUserSaveChanges(); BOOL PAB_IABContainerResolveNames(); BOOL PAB_IABContainerOpenEntry(); BOOL PAB_IABAddress(); BOOL PAB_AddMultipleEntries(); BOOL PAB_IABResolveName(); BOOL PAB_IABNewEntry_Details(); BOOL ThreadManager(); BOOL ThreadStress(LPVOID); BOOL Performance(); BOOL PAB_IDLSuite(); BOOL NamedPropsSuite(); BOOL AllocateAdrList(LPWABOBJECT, int, int, LPADRLIST *); BOOL FreeAdrList(LPWABOBJECT, LPADRLIST *); BOOL FreePartAdrList(IN LPADRLIST *); BOOL GrowAdrList(UINT, UINT, LPADRLIST *); BOOL ParseIniBuffer(LPSTR, UINT, LPSTR); BOOL VerifyBuffer(DWORD **, DWORD); BOOL DisplayAdrList(LPADRLIST, ULONG); BOOL VerifyResolvedAdrList(LPADRLIST, char*); BOOL CALLBACK SetIniFile(HWND,UINT, WPARAM, LONG); BOOL LogIt(HRESULT, int, char *); BOOL PropError(ULONG, ULONG); BOOL FindProp(LPADRENTRY, ULONG, unsigned int*); BOOL FreeEntryList(LPWABOBJECT, IN LPENTRYLIST *); BOOL FreeRows(LPWABOBJECT, LPSRowSet far*); BOOL DisplayRows(LPSRowSet lpRows); BOOL FindPropinRow(LPSRow, ULONG, unsigned int*); BOOL DeleteWABFile(); BOOL MyRegOpenKeyEx(HKEY, char*, REGSAM, HKEY*); BOOL CreateMultipleEntries(IN UINT, OUT DWORD*); HRESULT HrCreateEntryListFromRows(LPWABOBJECT, LPSRowSet far*, LPENTRYLIST FAR *); void GenerateRandomPhoneNumber(char **lppPhone); void GenerateRandomText(char **lppPhone, UINT); void CreateProps(LPTSTR, LPTSTR, SPropValue**, ULONG*, UINT, char**, char**); BOOL CompareProps(SPropValue*, ULONG, SPropValue*, ULONG); BOOL DisplayProp(SPropValue *, ULONG, ULONG); void GenerateRandomBoolean(unsigned short *); void GenerateRandomLong(long *); void GenerateRandomBinary(SBinary *, UINT); struct EntryID { char* lpDisplayName; ULONG cb; LPBYTE lpb; }; struct PropTableEntry { ULONG ulPropTag; //MAPI Property ID char* lpszPropTag; //String version of the prop name for lookup in ini file // void* lpValue; //ptr to the value if supplied or NULL if don't use or create random UINT unSize; //size of rand value to create or 0 if don't use or value supplied in lpValue }; #endif