return FALSE;
}
-static BOOLEAN
-OpenSoftwareKey(
- IN HDEVINFO DeviceInfoSet,
- IN PSP_DEVINFO_DATA DeviceInfoData,
- OUT PHKEY Key
- )
-{
- HRESULT Error;
-
- *Key = SetupDiOpenDevRegKey(DeviceInfoSet,
- DeviceInfoData,
- DICS_FLAG_GLOBAL,
- 0,
- DIREG_DRV,
- KEY_ALL_ACCESS);
- if (*Key == INVALID_HANDLE_VALUE) {
- SetLastError(ERROR_PATH_NOT_FOUND);
- goto fail1;
- }
-
- return TRUE;
-
-fail1:
- Error = GetLastError();
-
- {
- PTCHAR Message;
-
- Message = __GetErrorMessage(Error);
- Log("fail1 (%s)", Message);
- LocalFree(Message);
- }
-
- return FALSE;
-}
-
-static BOOLEAN
-GetAliasNetInstance(
- IN HKEY Key,
- OUT PTCHAR *AliasNetInstance
- )
-{
- HRESULT Error;
- DWORD MaxValueLength;
- DWORD AliasNetInstanceLength;
- DWORD Type;
-
- Log("====>");
-
- Error = RegQueryInfoKey(Key,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- &MaxValueLength,
- NULL,
- NULL);
- if (Error != ERROR_SUCCESS) {
- SetLastError(Error);
- goto fail1;
- }
-
- AliasNetInstanceLength = MaxValueLength + sizeof (TCHAR);
-
- *AliasNetInstance = calloc(1, AliasNetInstanceLength);
- if (*AliasNetInstance == NULL)
- goto fail2;
-
- Error = RegQueryValueEx(Key,
- "AliasNetInstance",
- NULL,
- &Type,
- (LPBYTE)*AliasNetInstance,
- &AliasNetInstanceLength);
- if (Error != ERROR_SUCCESS) {
- if (Error != ERROR_FILE_NOT_FOUND) {
- SetLastError(Error);
- goto fail3;
- }
-
- Type = REG_SZ;
- AliasNetInstanceLength = 0;
- }
-
- if (Type != REG_SZ) {
- SetLastError(ERROR_BAD_FORMAT);
- goto fail4;
- }
-
- if (AliasNetInstanceLength == 0) {
- free(*AliasNetInstance);
- *AliasNetInstance = NULL;
- }
-
- Log("%s", (*AliasNetInstance == NULL) ? "[NONE]" : *AliasNetInstance);
-
- Log("<====");
-
- return TRUE;
-
-fail4:
- Log("fail4");
-
-fail3:
- Log("fail3");
-
- free(*AliasNetInstance);
- *AliasNetInstance = NULL;
-
-fail2:
- Log("fail2");
-
-fail1:
- Error = GetLastError();
-
- {
- PTCHAR Message;
- Message = __GetErrorMessage(Error);
- Log("fail1 (%s)", Message);
- LocalFree(Message);
- }
-
- return FALSE;
-}
-
-static VOID
-ClearStolenLinkage(
- IN HDEVINFO DeviceInfoSet,
- IN PSP_DEVINFO_DATA DeviceInfoData
- )
-{
- BOOLEAN Success;
- PTCHAR AliasNetInstance;
- HKEY Key;
- HRESULT Error;
-
- Log("====>");
-
- Success = OpenSoftwareKey(DeviceInfoSet,
- DeviceInfoData,
- &Key);
- if (!Success)
- goto fail1;
-
- Success = GetAliasNetInstance(Key, &AliasNetInstance);
- if (!Success)
- goto fail2;
-
- if (AliasNetInstance == NULL)
- goto done;
-
- (VOID) RegDeleteKey(Key, "Linkage");
- (VOID) RegDeleteValue(Key, "NetLuidIndex");
- (VOID) RegDeleteValue(Key, "NetCfgInstanceID");
-
-done:
- RegCloseKey(Key);
-
- Log("<====");
-
- return;
-
-fail2:
- Log("fail2");
-
- RegCloseKey(Key);
-
-fail1:
- Error = GetLastError();
-
- {
- PTCHAR Message;
-
- Message = __GetErrorMessage(Error);
- Log("fail1 (%s)", Message);
- LocalFree(Message);
- }
-}
-
static FORCEINLINE HRESULT
__DifInstallPreProcess(
IN HDEVINFO DeviceInfoSet,
IN PCOINSTALLER_CONTEXT_DATA Context
)
{
+ UNREFERENCED_PARAMETER(DeviceInfoSet);
+ UNREFERENCED_PARAMETER(DeviceInfoData);
UNREFERENCED_PARAMETER(Context);
Log("<===>");
- ClearStolenLinkage(DeviceInfoSet, DeviceInfoData);
-
return NO_ERROR;
}