Commit 631813bf authored by Dmitry Timoshkov's avatar Dmitry Timoshkov Committed by Alexandre Julliard

adsldp: Implement IParseDisplayName::ParseDisplayName.

parent af92668b
......@@ -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 =
......
......@@ -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)
{
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment