void InitMediaMananger(){ InitializeCriticalSection(&g_locker); HKEY hKey; LONG lRet; lRet = RegOpenKeyEx(HKEY_CURRENT_USER, REG_PATH, 0, KEY_QUERY_VALUE | KEY_SET_VALUE, &hKey ); if (lRet == ERROR_FILE_NOT_FOUND) { return ; } if( lRet != ERROR_SUCCESS ) { WarnLog("Faild(%d) to RegOpenKeyEx/n", lRet); return ; } for(int i = 0; ; i++) { wchar_t achGuid[256]; DWORD cchGuid = 256; struct MediaInfo info; if (RegEnumValue(hKey, i, achGuid, &cchGuid, NULL, NULL, NULL, NULL) != ERROR_SUCCESS) break; DWORD cbData = REG_SIZE; DWORD dwType = REG_BINARY; lRet = RegQueryValueEx(hKey, achGuid, 0, &dwType, (LPBYTE)(&info), &cbData); if ((lRet != ERROR_SUCCESS ) || (dwType != REG_BINARY) || (cbData != REG_SIZE)) { ErrorLog("Faild(%d) to RegQueryValueEx/n", lRet); RegDeleteValue(hKey, achGuid); continue; } if (CheckMediaInfo(&info) == FALSE) { lRet = RegDeleteValue(hKey, achGuid); continue; } g_media_list = (MediaInfo **)MemoryRealloc(g_media_list, (g_media_info_count + 1) * sizeof(MediaInfo*)); g_media_list[g_media_info_count] = (MediaInfo *)MemoryAlloc(sizeof(MediaInfo)); g_media_list[g_media_info_count][0] = info; g_media_info_count ++; } RegCloseKey( hKey ); if (g_media_info_count > 1) { qsort(g_media_list, g_media_info_count, sizeof(MediaInfo *), (int32_t (__cdecl *)(const void *,const void *))mediainfo_compare); } //
C++ FindNextFileW函数代码示例
C++ FindNextComponent函数代码示例