VBOXDRVCFG_DECL(HRESULT) VBoxDrvCfgInfUninstallAllF(LPCWSTR lpszClassName, LPCWSTR lpszPnPId, DWORD Flags) { static WCHAR const s_wszFilter[] = L"\\inf\\oem*.inf"; HRESULT hr; WCHAR wszInfDirPath[MAX_PATH]; UINT cwcInput = RT_ELEMENTS(wszInfDirPath) - RT_ELEMENTS(s_wszFilter); UINT cwcWindows = GetSystemWindowsDirectory(wszInfDirPath, cwcInput); if (cwcWindows > 0 && cwcWindows < cwcInput) { wcscpy(&wszInfDirPath[cwcWindows], s_wszFilter); INFENUM_CONTEXT Context; Context.InfInfo.lpszClassName = lpszClassName; Context.InfInfo.lpszPnPId = lpszPnPId; Context.Flags = Flags; Context.hr = S_OK; NonStandardLogRelCrap((__FUNCTION__": Calling vboxDrvCfgEnumFiles(wszInfDirPath, vboxDrvCfgInfEnumerationCallback, &Context)")); hr = vboxDrvCfgEnumFiles(wszInfDirPath, vboxDrvCfgInfEnumerationCallback, &Context); NonStandardAssert(hr == S_OK); if (hr == S_OK) { hr = Context.hr; } else { NonStandardLogRelCrap((__FUNCTION__": vboxDrvCfgEnumFiles failed, hr=0x%x\n", hr)); } } else { NonStandardLogRelCrap((__FUNCTION__": GetSystemWindowsDirectory failed, cwcWindows=%u lasterr=%u\n", cwcWindows, GetLastError())); NonStandardAssertFailed(); hr = E_FAIL; } return hr; }
VBOXDRVCFG_DECL(HRESULT) VBoxDrvCfgInfUninstallAllF(LPCWSTR lpszClassName, LPCWSTR lpszPnPId, DWORD Flags) { WCHAR InfDirPath[MAX_PATH]; HRESULT hr = SHGetFolderPathW(NULL, /* HWND hwndOwner*/ CSIDL_WINDOWS, /* int nFolder*/ NULL, /*HANDLE hToken*/ SHGFP_TYPE_CURRENT, /*DWORD dwFlags*/ InfDirPath); NonStandardAssert(hr == S_OK); if (hr == S_OK) { wcscat(InfDirPath, L"\\inf\\oem*.inf"); INFENUM_CONTEXT Context; Context.InfInfo.lpszClassName = lpszClassName; Context.InfInfo.lpszPnPId = lpszPnPId; Context.Flags = Flags; Context.hr = S_OK; hr = vboxDrvCfgEnumFiles(InfDirPath, vboxDrvCfgInfEnumerationCallback, &Context); NonStandardAssert(hr == S_OK); if (hr == S_OK) { hr = Context.hr; } else { NonStandardLogRelCrap((__FUNCTION__": vboxDrvCfgEnumFiles failed, hr=0x%x\n", hr)); } } else { NonStandardLogRelCrap((__FUNCTION__": SHGetFolderPathW failed, hr=0x%x\n", hr)); } return hr; }