Platform SDK: Active Directory, ADSI, and Directory Services |
The LDAP API provides a simple syntax-checking function. Note that it only checks the syntax and not the existence of the properties specified in the filter.
The following function checks the syntax of the query filter and returns S_OK if the filter is valid or S_FALSE if it is not.
HRESULT CheckFilterSyntax( LPOLESTR szServer, // NULL binds to a DC in the current domain. LPOLESTR szFilter) // Filter to check. { HRESULT hr = S_OK; DWORD dwReturn; LDAP *hConnect = NULL; //Connection handle if (!szFilter) return E_POINTER; // LDAP_PORT is the default port, 389 hConnect = ldap_open(szServer, LDAP_PORT); // Bind using the preferred authentication method on Windows 2000 // and the calling thread's security context. dwReturn = ldap_bind_s( hConnect, NULL, NULL, LDAP_AUTH_NEGOTIATE ); if (dwReturn==LDAP_SUCCESS) { dwReturn = ldap_check_filter(hConnect, szFilter); if (dwReturn==LDAP_SUCCESS) hr = S_OK; else hr = S_FALSE; } // Unbind to free the connection. ldap_unbind( hConnect ); return hr; }