Author: jimtabor Date: Wed Sep 26 05:10:51 2007 New Revision: 29206
URL: http://svn.reactos.org/svn/reactos?rev=29206&view=rev Log: Fix calling conventions and do not unload setupapi.dll after registering the notification. Thank you Thomas.
Modified: trunk/reactos/dll/win32/user32/misc/resources.c
Modified: trunk/reactos/dll/win32/user32/misc/resources.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/user32/misc/resou... ============================================================================== --- trunk/reactos/dll/win32/user32/misc/resources.c (original) +++ trunk/reactos/dll/win32/user32/misc/resources.c Wed Sep 26 05:10:51 2007 @@ -9,13 +9,16 @@ #define CR_INVALID_DATA 0x0000001F #endif
-typedef DWORD (*CMP_REGNOTIFY) (HANDLE, LPVOID, DWORD, PULONG); -typedef DWORD (*CMP_UNREGNOTIFY) (ULONG ); +typedef DWORD STDCALL (*CMP_REGNOTIFY) (HANDLE, LPVOID, DWORD, PULONG); +typedef DWORD STDCALL (*CMP_UNREGNOTIFY) (ULONG );
/* FIXME: Currently IsBadWritePtr is implemented using VirtualQuery which does not seem to work properly for stack address space. */ /* kill `left-hand operand of comma expression has no effect' warning */ #define IsBadWritePtr(lp, n) ((DWORD)lp==n?0:0) + + +static HINSTANCE hSetupApi = NULL;
BOOL STDCALL _InternalLoadString ( @@ -253,16 +256,16 @@ DWORD ConfigRet = 0; CMP_REGNOTIFY RegNotify = NULL; HDEVNOTIFY hDevNotify = NULL; - HINSTANCE hSetupApi = LoadLibraryA("SETUPAPI.DLL"); - if (hSetupApi == NULL) return NULL; + if ( hSetupApi == NULL ) hSetupApi = LoadLibraryA("SETUPAPI.DLL"); + if ( hSetupApi == NULL ) return NULL; RegNotify = (CMP_REGNOTIFY) GetProcAddress ( hSetupApi, "CMP_RegisterNotification"); if (RegNotify == NULL) { FreeLibrary ( hSetupApi ); + hSetupApi = NULL; return NULL; } ConfigRet = RegNotify ( hRecipient, NotificationFilter, Flags, (PULONG) &hDevNotify); - FreeLibrary ( hSetupApi ); if (ConfigRet != CR_SUCCESS) { switch (ConfigRet) @@ -295,16 +298,16 @@ { DWORD ConfigRet = 0; CMP_UNREGNOTIFY UnRegNotify = NULL; - HINSTANCE hSetupApi = LoadLibraryA("SETUPAPI.DLL"); - if (hSetupApi == NULL) return FALSE; + if ( hSetupApi == NULL ) hSetupApi = LoadLibraryA("SETUPAPI.DLL"); + if ( hSetupApi == NULL ) return FALSE; UnRegNotify = (CMP_UNREGNOTIFY) GetProcAddress ( hSetupApi, "CMP_UnregisterNotification"); if (UnRegNotify == NULL) { FreeLibrary ( hSetupApi ); + hSetupApi = NULL; return FALSE; } ConfigRet = UnRegNotify ( (ULONG) Handle ); - FreeLibrary ( hSetupApi ); if (ConfigRet != CR_SUCCESS) { switch (ConfigRet)