my question is step 5.

I create a C3PO, try to get the SMTP address: xxx@yyy.com by display name:zzz.
there are more or less 8000 accounts info in my gw server.
1. i test using object API filter(NAME CONTAINS "zzz") to get it, it cost me 1500 ms per account, god.
2. i test using GW MAPI IAddressBook::ResolveName to get it, it cost 600 ms per account, a little progress, but it still too slowly.
3. i try to enumerate the address book via object API, i get the whole account but cost 2 more minutes, it is very good to average account. but the total cost is too much.
4. i open a thread to do step 3, then it crash... god, what's the problem... seems didn't support multi thread.
5. the question come, i want to test open a thread to enumerate the addresses via MAPI, but what should i do? is there any API like HrFindExchangeGlobalAddressList i can use ?