target_link_libraries(umpnpmgr wdmguid ${PSEH_LIB})
set_module_type(umpnpmgr win32dll UNICODE)
-add_importlibs(umpnpmgr advapi32 rpcrt4 userenv shlwapi msvcrt kernel32 ntdll)
+add_importlibs(umpnpmgr advapi32 rpcrt4 userenv shlwapi msvcrt user32 kernel32 ntdll)
add_cd_file(TARGET umpnpmgr DESTINATION reactos/system32 FOR all)
#include <winbase.h>
#include <winreg.h>
#include <winsvc.h>
+#include <winuser.h>
+#include <dbt.h>
#include <stdio.h>
#include <cmfuncs.h>
#include <rtlfuncs.h>
}
else if (UuidEqual(&PnpEvent->EventGuid, (UUID*)&GUID_DEVICE_ARRIVAL, &RpcStatus))
{
+ DWORD dwRecipient;
+
DPRINT("Device arrival: %S\n", PnpEvent->TargetDevice.DeviceIds);
- /* FIXME: ? */
+
+ dwRecipient = BSM_ALLDESKTOPS | BSM_APPLICATIONS;
+ BroadcastSystemMessageW(BSF_POSTMESSAGE,
+ &dwRecipient,
+ WM_DEVICECHANGE,
+ DBT_DEVNODES_CHANGED,
+ 0);
}
else if (UuidEqual(&PnpEvent->EventGuid, (UUID*)&GUID_DEVICE_EJECT_VETOED, &RpcStatus))
{
}
else if (UuidEqual(&PnpEvent->EventGuid, (UUID*)&GUID_DEVICE_SAFE_REMOVAL, &RpcStatus))
{
+ DWORD dwRecipient;
+
DPRINT1("Safe removal: %S\n", PnpEvent->TargetDevice.DeviceIds);
+
+ dwRecipient = BSM_ALLDESKTOPS | BSM_APPLICATIONS;
+ BroadcastSystemMessageW(BSF_POSTMESSAGE,
+ &dwRecipient,
+ WM_DEVICECHANGE,
+ DBT_DEVNODES_CHANGED,
+ 0);
}
else if (UuidEqual(&PnpEvent->EventGuid, (UUID*)&GUID_DEVICE_SURPRISE_REMOVAL, &RpcStatus))
{
+ DWORD dwRecipient;
+
DPRINT1("Surprise removal: %S\n", PnpEvent->TargetDevice.DeviceIds);
+
+ dwRecipient = BSM_ALLDESKTOPS | BSM_APPLICATIONS;
+ BroadcastSystemMessageW(BSF_POSTMESSAGE,
+ &dwRecipient,
+ WM_DEVICECHANGE,
+ DBT_DEVNODES_CHANGED,
+ 0);
}
else if (UuidEqual(&PnpEvent->EventGuid, (UUID*)&GUID_DEVICE_REMOVAL_VETOED, &RpcStatus))
{