Changeset 3170 for trunk/src/ole32/clsid.cpp
- Timestamp:
- Mar 19, 2000, 11:33:36 PM (25 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/ole32/clsid.cpp
r3167 r3170 1 /* $Id: clsid.cpp,v 1.1 0 2000-03-19 15:33:05davidr Exp $ */1 /* $Id: clsid.cpp,v 1.11 2000-03-19 22:32:12 davidr Exp $ */ 2 2 /* 3 3 * … … 332 332 } 333 333 334 // ---------------------------------------------------------------------- 335 // ReadClassStm 336 // ---------------------------------------------------------------------- 337 HRESULT WIN32API ReadClassStm(IStream *pStm, CLSID *rclsid) 338 { 339 ULONG nbByte; 340 HRESULT res; 341 342 dprintf(("OLE32: ReadClassStm")); 343 344 if (rclsid == NULL) 345 return E_INVALIDARG; 346 347 res = IStream_Read(pStm,(void*)rclsid,sizeof(CLSID),&nbByte); 348 349 if (FAILED(res)) 350 return res; 351 352 if (nbByte != sizeof(CLSID)) 353 return S_FALSE; 354 355 return S_OK; 356 } 357 358 // ---------------------------------------------------------------------- 359 // WriteClassStm 360 // ---------------------------------------------------------------------- 361 HRESULT WIN32API WriteClassStm(IStream *pStm, REFCLSID rclsid) 362 { 363 dprintf(("OLE32: WriteClassStm")); 364 365 if (rclsid == NULL) 366 return E_INVALIDARG; 367 368 return IStream_Write(pStm, rclsid, sizeof(CLSID), NULL); 369 } 370 371 // ---------------------------------------------------------------------- 372 // ProgIDFromCLSID 373 // ---------------------------------------------------------------------- 374 HRESULT WIN32API ProgIDFromCLSID(REFCLSID clsid, LPOLESTR *lplpszProgID) 375 { 376 oStringA tClsId(clsid); 377 oStringA szKey("CLSID\\"); 378 LONG lDataLen = 255; 379 oStringA szProgID(lDataLen, 1); 380 HKEY hKey; 381 HRESULT rc; 382 LPOLESTR tmp; 383 LPMALLOC pMllc; 384 385 dprintf(("OLE32: ProgIDFromCLSID")); 386 dprintf((" clsid = %s", (char *)tClsId)); 387 388 szKey += tClsId + "\\ProgID"; 389 390 // Open key... 391 if (RegOpenKeyA(HKEY_CLASSES_ROOT, szKey, &hKey)) 392 return REGDB_E_CLASSNOTREG; 393 394 // Get default string from the key... 395 rc = RegQueryValueA(hKey, NULL, szProgID, &lDataLen); 396 RegCloseKey(hKey); 397 if (rc != 0) 398 return REGDB_E_CLASSNOTREG; 399 400 if (CoGetMalloc(0, &pMllc)) // Singleton instance, no need to release 401 return E_OUTOFMEMORY; 402 403 tmp = (LPOLESTR)IMalloc_Alloc(pMllc, (strlen(szProgID) + 1) * 2); 404 if (tmp == NULL) 405 return E_OUTOFMEMORY; 406 407 AsciiToUnicode(szProgID, tmp); 408 *lplpszProgID = tmp; 409 410 return S_OK; 411 }
Note:
See TracChangeset
for help on using the changeset viewer.