advpack: Implement the Open/CloseINFEngine and TranslateINFStringEx

trio of functions.
This commit is contained in:
James Hawkins 2006-02-20 21:42:25 -06:00 committed by Alexandre Julliard
parent dd5ae20dc1
commit b88b480851
1 changed files with 24 additions and 14 deletions

View File

@ -118,15 +118,13 @@ static void set_ldids(HINF hInf, PCSTR pszInstallSection)
* RETURNS * RETURNS
* Success: S_OK. * Success: S_OK.
* Failure: E_FAIL. * Failure: E_FAIL.
*
* BUGS
* Unimplemented.
*/ */
HRESULT WINAPI CloseINFEngine(HINF hInf) HRESULT WINAPI CloseINFEngine(HINF hInf)
{ {
FIXME("(%p) stub\n", hInf); TRACE("(%p)\n", hInf);
return E_FAIL; SetupCloseInfFile(hInf);
return S_OK;
} }
/*********************************************************************** /***********************************************************************
@ -405,17 +403,23 @@ BOOL WINAPI NeedReboot(DWORD dwRebootCheck)
* RETURNS * RETURNS
* Success: S_OK. * Success: S_OK.
* Failure: E_FAIL. * Failure: E_FAIL.
*
* BUGS
* Unimplemented.
*/ */
HRESULT WINAPI OpenINFEngine(PCSTR pszInfFilename, PCSTR pszInstallSection, HRESULT WINAPI OpenINFEngine(PCSTR pszInfFilename, PCSTR pszInstallSection,
DWORD dwFlags, HINF *phInf, PVOID pvReserved) DWORD dwFlags, HINF *phInf, PVOID pvReserved)
{ {
FIXME("(%p, %p, %ld, %p, %p) stub\n", pszInfFilename, pszInstallSection, TRACE("(%p, %p, %ld, %p, %p)\n", pszInfFilename, pszInstallSection,
dwFlags, phInf, pvReserved); dwFlags, phInf, pvReserved);
return E_FAIL; if (!phInf)
return E_INVALIDARG;
*phInf = SetupOpenInfFileA(pszInfFilename, NULL, INF_STYLE_WIN4, NULL);
if (*phInf == INVALID_HANDLE_VALUE)
return HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND);
set_ldids(*phInf, pszInstallSection);
return S_OK;
} }
/*********************************************************************** /***********************************************************************
@ -621,19 +625,25 @@ HRESULT WINAPI TranslateInfString(PCSTR pszInfFilename, PCSTR pszInstallSection,
* When translating more than one keys, this method is more efficient * When translating more than one keys, this method is more efficient
* than calling TranslateInfString, because the INF file is only * than calling TranslateInfString, because the INF file is only
* opened once. * opened once.
*
* BUGS
* Unimplemented.
*/ */
HRESULT WINAPI TranslateInfStringEx(HINF hInf, PCSTR pszInfFilename, HRESULT WINAPI TranslateInfStringEx(HINF hInf, PCSTR pszInfFilename,
PCSTR pszTranslateSection, PCSTR pszTranslateKey, PCSTR pszTranslateSection, PCSTR pszTranslateKey,
PSTR pszBuffer, DWORD dwBufferSize, PSTR pszBuffer, DWORD dwBufferSize,
PDWORD pdwRequiredSize, PVOID pvReserved) PDWORD pdwRequiredSize, PVOID pvReserved)
{ {
FIXME("(%p, %p, %p, %p, %p, %ld, %p, %p) stub\n", hInf, pszInfFilename, TRACE("(%p, %p, %p, %p, %p, %ld, %p, %p)\n", hInf, pszInfFilename,
pszTranslateSection, pszTranslateKey, pszBuffer, dwBufferSize, pszTranslateSection, pszTranslateKey, pszBuffer, dwBufferSize,
pdwRequiredSize, pvReserved); pdwRequiredSize, pvReserved);
if (!SetupGetLineTextA(NULL, hInf, pszTranslateSection, pszTranslateKey,
pszBuffer, dwBufferSize, pdwRequiredSize))
{
if (dwBufferSize < *pdwRequiredSize)
return HRESULT_FROM_WIN32(ERROR_INSUFFICIENT_BUFFER);
return SPAPI_E_LINE_NOT_FOUND;
}
return E_FAIL; return E_FAIL;
} }