adsldp: Implement IDirectorySearch::GetNextColumnName().
Signed-off-by: Dmitry Timoshkov <dmitry@baikal.ru> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
d2ab8296d4
commit
3adc9c5b21
|
@ -399,6 +399,7 @@ typedef struct
|
||||||
struct ldap_search_context
|
struct ldap_search_context
|
||||||
{
|
{
|
||||||
LDAPMessage *res, *entry;
|
LDAPMessage *res, *entry;
|
||||||
|
BerElement *ber;
|
||||||
ULONG count, pos;
|
ULONG count, pos;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1249,6 +1250,7 @@ static HRESULT WINAPI search_GetNextRow(IDirectorySearch *iface, ADS_SEARCH_HAND
|
||||||
return S_ADS_NOMORE_ROWS;
|
return S_ADS_NOMORE_ROWS;
|
||||||
|
|
||||||
ldap_ctx->pos++;
|
ldap_ctx->pos++;
|
||||||
|
ldap_ctx->ber = NULL;
|
||||||
|
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
@ -1259,10 +1261,33 @@ static HRESULT WINAPI search_GetPreviousRow(IDirectorySearch *iface, ADS_SEARCH_
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static HRESULT WINAPI search_GetNextColumnName(IDirectorySearch *iface, ADS_SEARCH_HANDLE res, LPWSTR *names)
|
static HRESULT WINAPI search_GetNextColumnName(IDirectorySearch *iface, ADS_SEARCH_HANDLE res, LPWSTR *name)
|
||||||
{
|
{
|
||||||
FIXME("%p,%p,%p: stub\n", iface, res, names);
|
LDAP_namespace *ldap = impl_from_IDirectorySearch(iface);
|
||||||
return E_NOTIMPL;
|
struct ldap_search_context *ldap_ctx = res;
|
||||||
|
WCHAR *attr;
|
||||||
|
|
||||||
|
TRACE("%p,%p,%p\n", iface, res, name);
|
||||||
|
|
||||||
|
if (!ldap->ld) return E_NOTIMPL;
|
||||||
|
|
||||||
|
if (!name || !ldap_ctx || !ldap_ctx->entry) return E_ADS_BAD_PARAMETER;
|
||||||
|
|
||||||
|
if (!ldap_ctx->ber)
|
||||||
|
attr = ldap_first_attributeW(ldap->ld, ldap_ctx->entry, &ldap_ctx->ber);
|
||||||
|
else
|
||||||
|
attr = ldap_next_attributeW(ldap->ld, ldap_ctx->entry, ldap_ctx->ber);
|
||||||
|
|
||||||
|
if (attr)
|
||||||
|
{
|
||||||
|
TRACE("=> %s\n", debugstr_w(attr));
|
||||||
|
*name = AllocADsStr(attr);
|
||||||
|
ldap_memfreeW(attr);
|
||||||
|
return *name ? S_OK : E_OUTOFMEMORY;
|
||||||
|
}
|
||||||
|
|
||||||
|
*name = NULL;
|
||||||
|
return S_ADS_NOMORE_COLUMNS;
|
||||||
}
|
}
|
||||||
|
|
||||||
static HRESULT WINAPI search_GetColumn(IDirectorySearch *iface, ADS_SEARCH_HANDLE res,
|
static HRESULT WINAPI search_GetColumn(IDirectorySearch *iface, ADS_SEARCH_HANDLE res,
|
||||||
|
|
|
@ -28,7 +28,9 @@ HRESULT WINAPI ADsBuildVarArrayStr(LPWSTR*,DWORD,VARIANT*);
|
||||||
HRESULT WINAPI ADsEnumerateNext(IEnumVARIANT*,ULONG,VARIANT*,ULONG*);
|
HRESULT WINAPI ADsEnumerateNext(IEnumVARIANT*,ULONG,VARIANT*,ULONG*);
|
||||||
HRESULT WINAPI ADsGetObject(LPCWSTR,REFIID,VOID**);
|
HRESULT WINAPI ADsGetObject(LPCWSTR,REFIID,VOID**);
|
||||||
HRESULT WINAPI ADsOpenObject(LPCWSTR,LPCWSTR,LPCWSTR,DWORD,REFIID,VOID**);
|
HRESULT WINAPI ADsOpenObject(LPCWSTR,LPCWSTR,LPCWSTR,DWORD,REFIID,VOID**);
|
||||||
|
LPWSTR WINAPI AllocADsStr(LPWSTR);
|
||||||
BOOL WINAPI FreeADsMem(LPVOID);
|
BOOL WINAPI FreeADsMem(LPVOID);
|
||||||
|
BOOL WINAPI FreeADsStr(LPWSTR);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue