Sign In| Join
Get Help:Ask a Question in our Forums|Report a Bug|More Help Resources
Last post May 21, 2012 11:45 AM by Dino He - MSFT
0 Points
5 Posts
May 18, 2012 01:28 PM|LINK
Hi,
Is there a way to filter the results of an IADsContainer using a wildcard? Given the code below,
taken from MSDN, is there a way to request that only users starting with, let's say, test* be returned?
I know it's possible using ldap calls, but I can't find any references using IADS.
Thanks.
IADsContainer *pCont; IADs *pChild; IADs *pADs; HRESULT hr = ADsGetObject(L"LDAP://OU=Sales,DC=Fabrikam,DC=COM", IID_IADsContainer, (void**)&pCont); if(FAILED(hr)){goto Cleanup;} LPWSTR pszArray[] = { L"adminDescription" }; DWORD dwNumber = sizeof(pszArray)/sizeof(LPWSTR); hr = ADsBuildVarArrayStr( pszArray, dwNumber, &var); if(FAILED(hr)){goto Cleanup;} hr = pCont->put_Hints( var ); if(FAILED(hr)){goto Cleanup;} VariantClear(&var); hr = pCont->QueryInterface(IID_IADs, (void**)pADs); if(FAILED(hr)){goto Cleanup;} hr = pADs->Get(CComBSTR("adminDescription"), var); LPWSTR pszUsers = {L"user"}; dwNumber = sizeof(pszUsers)/sizeof(LPWSTR); hr = ADsBuildVarArrayStr(pszUsers, dwNumber, &var); hr = pCont->put_Filter( var ); VariantClear(&var); // Enumerate user objects in the container. IEnumVARIANT *pEnum = NULL; hr = ADsBuildEnumerator(pCont, &pEnum); pCont->Release(); // Not required when users are enumerated. ULONG lFetch; VariantClear(&var); while (SUCCEEDED(ADsEnumerateNext(pEnum, 1, &var, &lFetch)) && lFetch==1) { hr = V_DISPATCH(&var)->QueryInterface(IID_IADs, (void**)&pChild) if(SUCCEEDED(hr)) { BSTR bstrName; pChild->get_Name(&bstrName); printf(" %S\n", bstrName); SysFreeString(bstrName); pChild->Release(); } VariantClear(&var); } Cleanup: if(pADs) pADs->Release(); if(pCont) pCont->Release(); if(pChild) pChild->Release(); VariantClear(&var);
Star
8068 Points
1023 Posts
Microsoft
May 21, 2012 11:45 AM|LINK
Hi
Sorry this is asp.net LDAP forum.
You may get more professional answer in C++ forum.
funkycold
0 Points
5 Posts
Is it possible to filter an IADsContainer using a wildcard?
May 18, 2012 01:28 PM|LINK
IADsContainer *pCont; IADs *pChild; IADs *pADs; HRESULT hr = ADsGetObject(L"LDAP://OU=Sales,DC=Fabrikam,DC=COM", IID_IADsContainer, (void**)&pCont); if(FAILED(hr)){goto Cleanup;} LPWSTR pszArray[] = { L"adminDescription" }; DWORD dwNumber = sizeof(pszArray)/sizeof(LPWSTR); hr = ADsBuildVarArrayStr( pszArray, dwNumber, &var); if(FAILED(hr)){goto Cleanup;} hr = pCont->put_Hints( var ); if(FAILED(hr)){goto Cleanup;} VariantClear(&var); hr = pCont->QueryInterface(IID_IADs, (void**)pADs); if(FAILED(hr)){goto Cleanup;} hr = pADs->Get(CComBSTR("adminDescription"), var); LPWSTR pszUsers = {L"user"}; dwNumber = sizeof(pszUsers)/sizeof(LPWSTR); hr = ADsBuildVarArrayStr(pszUsers, dwNumber, &var); hr = pCont->put_Filter( var ); VariantClear(&var); // Enumerate user objects in the container. IEnumVARIANT *pEnum = NULL; hr = ADsBuildEnumerator(pCont, &pEnum); pCont->Release(); // Not required when users are enumerated. ULONG lFetch; VariantClear(&var); while (SUCCEEDED(ADsEnumerateNext(pEnum, 1, &var, &lFetch)) && lFetch==1) { hr = V_DISPATCH(&var)->QueryInterface(IID_IADs, (void**)&pChild) if(SUCCEEDED(hr)) { BSTR bstrName; pChild->get_Name(&bstrName); printf(" %S\n", bstrName); SysFreeString(bstrName); pChild->Release(); } VariantClear(&var); } Cleanup: if(pADs) pADs->Release(); if(pCont) pCont->Release(); if(pChild) pChild->Release(); VariantClear(&var);Dino He - MS...
Star
8068 Points
1023 Posts
Microsoft
Re: Is it possible to filter an IADsContainer using a wildcard?
May 21, 2012 11:45 AM|LINK
Hi
Sorry this is asp.net LDAP forum.
You may get more professional answer in C++ forum.
If you have any feedback about my replies, please contact msdnmg@microsoft.com
Microsoft One Code Framework