adsldp: Implement IParseDisplayName::ParseDisplayName.

Signed-off-by: Dmitry Timoshkov <dmitry@baikal.ru>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Dmitry Timoshkov 2020-03-10 15:42:55 +08:00 committed by Alexandre Julliard
parent af92668b23
commit 631813bf1a
2 changed files with 23 additions and 4 deletions

View file

@ -101,8 +101,28 @@ static ULONG WINAPI ldap_Release(IParseDisplayName *iface)
static HRESULT WINAPI ldap_ParseDisplayName(IParseDisplayName *iface, IBindCtx *bc,
LPOLESTR name, ULONG *eaten, IMoniker **mk)
{
FIXME("%p,%p,%s,%p,%p: stub\n", iface, bc, debugstr_w(name), eaten, mk);
return E_NOTIMPL;
HRESULT hr;
IADsOpenDSObject *ads_open;
IDispatch *disp;
TRACE("%p,%p,%s,%p,%p\n", iface, bc, debugstr_w(name), eaten, mk);
hr = LDAPNamespace_create(&IID_IADsOpenDSObject, (void **)&ads_open);
if (hr != S_OK) return hr;
hr = IADsOpenDSObject_OpenDSObject(ads_open, name, NULL, NULL, ADS_SECURE_AUTHENTICATION, &disp);
if (hr == S_OK)
{
hr = CreatePointerMoniker((IUnknown *)disp, mk);
if (hr == S_OK)
*eaten = wcslen(name);
IDispatch_Release(disp);
}
IADsOpenDSObject_Release(ads_open);
return hr;
}
static const IParseDisplayNameVtbl LDAP_PARSE_vtbl =

View file

@ -122,7 +122,6 @@ static void test_ParseDisplayName(void)
count = 0xdeadbeef;
hr = IParseDisplayName_ParseDisplayName(parse, bc, path, &count, &mk);
todo_wine
ok(hr == test[i].hr || hr == test[i].hr_ads_open, "%d: got %#x, expected %#x\n", i, hr, test[i].hr);
if (hr == S_OK)
{
@ -139,7 +138,7 @@ todo_wine
count = 0xdeadbeef;
hr = MkParseDisplayName(bc, test[i].path, &count, &mk);
todo_wine
todo_wine_if(i == 0 || i == 1 || i == 11 || i == 12)
ok(hr == test[i].hr, "%d: got %#x, expected %#x\n", i, hr, test[i].hr);
if (hr == S_OK)
{