From 4173674a62103d401b8befd43d7a6ee08ce782bd Mon Sep 17 00:00:00 2001 From: Eric Kohl Date: Mon, 13 Oct 2014 18:31:55 +0000 Subject: [PATCH] [SETUPAPI] Load a property sheet extension dll only once, otherwise we might leak module handles. svn path=/trunk/; revision=64734 --- reactos/dll/win32/setupapi/devclass.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/reactos/dll/win32/setupapi/devclass.c b/reactos/dll/win32/setupapi/devclass.c index 2bdd6e91d9e..60c92fe8fc1 100644 --- a/reactos/dll/win32/setupapi/devclass.c +++ b/reactos/dll/win32/setupapi/devclass.c @@ -1272,14 +1272,22 @@ SetupDiGetClassDevPropertySheetsW( if (DeviceInfoData) { struct DeviceInfo *devInfo = (struct DeviceInfo *)DeviceInfoData->Reserved; - devInfo->hmodDevicePropPageProvider = hModule; - devInfo->pDevicePropPageProvider = pPropPageProvider; + + if (devInfo->hmodDevicePropPageProvider == NULL) + { + devInfo->hmodDevicePropPageProvider = hModule; + devInfo->pDevicePropPageProvider = pPropPageProvider; + } } else { struct DeviceInfoSet *devInfoSet = (struct DeviceInfoSet *)DeviceInfoSet; - devInfoSet->hmodClassPropPageProvider = hModule; - devInfoSet->pClassPropPageProvider = pPropPageProvider; + + if (devInfoSet->hmodClassPropPageProvider == NULL) + { + devInfoSet->hmodClassPropPageProvider = hModule; + devInfoSet->pClassPropPageProvider = pPropPageProvider; + } } InitialNumberOfPages = PropertySheetHeader->nPages;