bool IsItemInArray(IShellItem *psi, IObjectArray *poaRemoved) { UINT cItems; if (FAILED(poaRemoved->GetCount(&cItems))) return false; bool fRet = false; for (UINT i = 0; !fRet && i < cItems; i++) { ATL::CComPtr<IShellItem> psiCompare; if (FAILED(poaRemoved->GetAt(i, IID_PPV_ARGS(&psiCompare)))) continue; int iOrder; fRet = SUCCEEDED(psiCompare->Compare(psi, SICHINT_CANONICAL, &iOrder)) && (0 == iOrder); } return fRet; }