diff --git a/dlls/setupapi/misc.c b/dlls/setupapi/misc.c index 63320e62166..36d52ba7bd8 100644 --- a/dlls/setupapi/misc.c +++ b/dlls/setupapi/misc.c @@ -1113,6 +1113,45 @@ BOOL WINAPI SetupCopyOEMInfW( PCWSTR source, PCWSTR location, return ret; } +/*********************************************************************** + * SetupUninstallOEMInfA (SETUPAPI.@) + */ +BOOL WINAPI SetupUninstallOEMInfA( PCSTR inf_file, DWORD flags, PVOID reserved ) +{ + BOOL ret; + WCHAR *inf_fileW = NULL; + + TRACE("%s, 0x%08x, %p\n", debugstr_a(inf_file), flags, reserved); + + if (inf_file && !(inf_fileW = strdupAtoW( inf_file ))) return FALSE; + ret = SetupUninstallOEMInfW( inf_fileW, flags, reserved ); + HeapFree( GetProcessHeap(), 0, inf_fileW ); + return ret; +} + +/*********************************************************************** + * SetupUninstallOEMInfW (SETUPAPI.@) + */ +BOOL WINAPI SetupUninstallOEMInfW( PCWSTR inf_file, DWORD flags, PVOID reserved ) +{ + static const WCHAR infW[] = {'\\','i','n','f','\\',0}; + WCHAR target[MAX_PATH]; + + TRACE("%s, 0x%08x, %p\n", debugstr_w(inf_file), flags, reserved); + + if (!GetWindowsDirectoryW( target, sizeof(target)/sizeof(WCHAR) )) return FALSE; + + strcatW( target, infW ); + strcatW( target, inf_file ); + + if (flags & SUOI_FORCEDELETE) + return DeleteFileW(target); + + FIXME("not deleting %s\n", debugstr_w(target)); + + return TRUE; +} + /*********************************************************************** * InstallCatalog (SETUPAPI.@) */ diff --git a/dlls/setupapi/setupapi.spec b/dlls/setupapi/setupapi.spec index cd7bf627443..d6203997609 100644 --- a/dlls/setupapi/setupapi.spec +++ b/dlls/setupapi/setupapi.spec @@ -526,6 +526,8 @@ @ stdcall SetupSetSourceListW(long ptr long) @ stdcall SetupTermDefaultQueueCallback(ptr) @ stdcall SetupTerminateFileLog(long) +@ stdcall SetupUninstallOEMInfA(str long ptr) +@ stdcall SetupUninstallOEMInfW(wstr long ptr) @ stub ShouldDeviceBeExcluded @ stdcall StampFileSecurity(wstr ptr) @ stdcall StringTableAddString(ptr wstr long) diff --git a/include/setupapi.h b/include/setupapi.h index 009af29595a..c4e16641165 100644 --- a/include/setupapi.h +++ b/include/setupapi.h @@ -1391,6 +1391,9 @@ typedef enum { /* SetupConfigureWmiFromInfSection Flags values */ #define SCWMI_CLOBBER_SECURITY 0x00000001 +/* SetupUninstallOEMInf Flags values */ +#define SUOI_FORCEDELETE 0x00000001 + LONG WINAPI AddTagToGroupOrderList(PCWSTR lpGroupName, DWORD dwUnknown2, DWORD dwUnknown3); DWORD WINAPI CaptureAndConvertAnsiArg(PCSTR lpSrc, PWSTR *lpDst); DWORD WINAPI CaptureStringArg(PCWSTR lpSrc, PWSTR *lpDst);