Commit 2cfb02a5 authored by Huw D M Davies's avatar Huw D M Davies Committed by Alexandre Julliard

CLSIDFromString apparently also accepts ProgIDs as an input string.

parent 8b347b2a
...@@ -438,7 +438,7 @@ BOOL WINAPI IsEqualGUID32( ...@@ -438,7 +438,7 @@ BOOL WINAPI IsEqualGUID32(
/****************************************************************************** /******************************************************************************
* CLSIDFromString16 [COMPOBJ.20] * CLSIDFromString16 [COMPOBJ.20]
* Converts a unique identifier from it's string representation into * Converts a unique identifier from its string representation into
* the GUID struct. * the GUID struct.
* *
* Class id: DWORD-WORD-WORD-BYTES[2]-BYTES[6] * Class id: DWORD-WORD-WORD-BYTES[2]-BYTES[6]
...@@ -731,8 +731,12 @@ sizeof((i).ifr_name)+(i).ifr_addr.sa_len) ...@@ -731,8 +731,12 @@ sizeof((i).ifr_name)+(i).ifr_addr.sa_len)
/****************************************************************************** /******************************************************************************
* CLSIDFromString [OLE32.3] * CLSIDFromString [OLE32.3]
* Converts a unique identifier from it's string representation into * Converts a unique identifier from its string representation into
* the GUID struct. * the GUID struct.
*
* UNDOCUMENTED
* If idstr is not a valid CLSID string then it gets treated as a ProgID
*
* RETURNS * RETURNS
* the converted GUID * the converted GUID
*/ */
...@@ -744,6 +748,9 @@ HRESULT WINAPI CLSIDFromString( ...@@ -744,6 +748,9 @@ HRESULT WINAPI CLSIDFromString(
OLESTATUS ret = CLSIDFromString16(xid,id); OLESTATUS ret = CLSIDFromString16(xid,id);
HeapFree(GetProcessHeap(),0,xid); HeapFree(GetProcessHeap(),0,xid);
if(ret != S_OK) { /* It appears a ProgID is also valid */
ret = CLSIDFromProgID(idstr, id);
}
return ret; return ret;
} }
...@@ -1220,7 +1227,7 @@ HRESULT WINAPI CoRegisterClassObject( ...@@ -1220,7 +1227,7 @@ HRESULT WINAPI CoRegisterClassObject(
newClass->nextClass = firstRegisteredClass; newClass->nextClass = firstRegisteredClass;
/* /*
* Since we're making a copy of the object pointer, we have to increase it's * Since we're making a copy of the object pointer, we have to increase its
* reference count. * reference count.
*/ */
newClass->classObject = pUnk; newClass->classObject = pUnk;
...@@ -1391,7 +1398,7 @@ HRESULT WINAPI CoGetClassObject(REFCLSID rclsid, DWORD dwClsContext, ...@@ -1391,7 +1398,7 @@ HRESULT WINAPI CoGetClassObject(REFCLSID rclsid, DWORD dwClsContext,
} }
/* /*
* Ask the DLL for it's class object. (there was a note here about class * Ask the DLL for its class object. (there was a note here about class
* factories but this is good. * factories but this is good.
*/ */
return DllGetClassObject(rclsid, iid, ppv); return DllGetClassObject(rclsid, iid, ppv);
...@@ -1591,7 +1598,7 @@ HRESULT WINAPI CoCreateInstanceEx( ...@@ -1591,7 +1598,7 @@ HRESULT WINAPI CoCreateInstanceEx(
} }
/* /*
* Get the object and get it's IUnknown pointer. * Get the object and get its IUnknown pointer.
*/ */
hr = CoCreateInstance(rclsid, hr = CoCreateInstance(rclsid,
pUnkOuter, pUnkOuter,
......
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