Based on the documentation for GetProps() at
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/mobilesdk5/html/mob5lrfIItemGetProps.asp
I tried retrieving item properties both ways and either way, HRESULT
comes back successful but no values are retrieved:
// Allocate memory, then get item properties
// >>this always returns cbBuffer == 0 on 2nd GetProps() call
cbBuffer = 0;
hr = pItem->GetProps(rgPropId, 0, cProps, &prgPropvalUser,
&cbBuffer, NULL);
if(HRESULT_FROM_WIN32(ERROR_INSUFFICIENT_BUFFER) == hr)
{
prgPropvalUser = (CEPROPVAL *) LocalAlloc(0, cbBuffer);
}
// cbBuffer is set to the number of bytes required to hold the
data.
hr = pItem->GetProps(rgPropId, 0, cProps, (CEPROPVAL
**)&prgPropvalUser, &cbBuffer, NULL);
if(FAILED(hr) || 0 == cbBuffer)
{
goto Exit;
}
// Alternately, you can let Outlook Mobile allocate memory, then get
item properties.
//>>this consistently returns 0 in prgPropvalPoom and cbBuffer
cbBuffer = 0;
hr = pItem->GetProps(rgPropId, CEDB_ALLOWREALLOC, cProps,
&prgPropvalPoom, &cbBuffer, hHeap);
wsprintf(buffer, TEXT("%ld = pItem->GetProps() - 3; 0x%X, 0x%X"), hr,
prgPropvalPoom, cbBuffer);
MessageBox(hwndParent, buffer, L"Debuggery", MB_OK);
if(FAILED(hr) || NULL == prgPropvalPoom || 0 == cbBuffer)
{
...