00182 {
00183 BOOL ret = TRUE;
00184 struct OIDFunctionSet *set = hFuncSet;
00185 char *keyName;
00186 HKEY key;
00187 LSTATUS rc;
00188
00189 TRACE("(%p, %d, %p, %p)\n", hFuncSet, dwEncodingType, pwszDllList,
00190 pcchDllList);
00191
00192 keyName = CRYPT_GetKeyName(dwEncodingType, set->name, "DEFAULT");
00193 rc = RegCreateKeyExA(HKEY_LOCAL_MACHINE, keyName, 0, NULL, 0,
00194 KEY_READ, NULL, &key, NULL);
00195 if (!rc)
00196 {
00197 DWORD size = *pcchDllList * sizeof(WCHAR);
00198
00199 rc = RegQueryValueExW(key, DllW, NULL, NULL, (LPBYTE)pwszDllList,
00200 &size);
00201 if (!rc)
00202 *pcchDllList = size / sizeof(WCHAR);
00203 else
00204 {
00205
00206 if (pwszDllList && *pcchDllList)
00207 *pwszDllList = '\0';
00208 *pcchDllList = 1;
00209 }
00210 RegCloseKey(key);
00211 }
00212 else
00213 {
00214
00215 if (pwszDllList && *pcchDllList)
00216 *pwszDllList = '\0';
00217 *pcchDllList = 1;
00218 }
00219 CryptMemFree(keyName);
00220
00221 return ret;
00222 }