120{
127
128 DPRINT(
"ProcessDeviceClassChangeEvent(%p)\n", PnpEvent);
129 DPRINT(
"SymbolicLink: %S\n", PnpEvent->DeviceClass.SymbolicLinkName);
130 DPRINT(
"ClassGuid: {%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X}\n",
131 PnpEvent->DeviceClass.ClassGuid.Data1, PnpEvent->DeviceClass.ClassGuid.Data2, PnpEvent->DeviceClass.ClassGuid.Data3,
132 PnpEvent->DeviceClass.ClassGuid.Data4[0], PnpEvent->DeviceClass.ClassGuid.Data4[1], PnpEvent->DeviceClass.ClassGuid.Data4[2],
133 PnpEvent->DeviceClass.ClassGuid.Data4[3], PnpEvent->DeviceClass.ClassGuid.Data4[4], PnpEvent->DeviceClass.ClassGuid.Data4[5],
134 PnpEvent->DeviceClass.ClassGuid.Data4[6], PnpEvent->DeviceClass.ClassGuid.Data4[7]);
135
137
140 {
143 ((pNotifyData->
ulFlags & DEVICE_NOTIFY_ALL_INTERFACE_CLASSES) ||
145 {
147 {
148 DPRINT(
"Interface arrival: %S\n", PnpEvent->DeviceClass.SymbolicLinkName);
150 }
152 {
153 DPRINT(
"Interface removal: %S\n", PnpEvent->DeviceClass.SymbolicLinkName);
155 }
156 else
157 {
158 dwEventType = 0;
159 }
160
163 if (pEventData)
164 {
169 }
170
171 if ((pNotifyData->
ulFlags & DEVICE_NOTIFY_SERVICE_HANDLE) == DEVICE_NOTIFY_WINDOW_HANDLE)
172 {
174 }
175 else if ((pNotifyData->
ulFlags & DEVICE_NOTIFY_SERVICE_HANDLE) == DEVICE_NOTIFY_SERVICE_HANDLE)
176 {
179 dwEventType,
180 pEventData);
181 }
182
183 if (pEventData)
185 }
186
187 Current = Current->
Flink;
188 }
189
191}
static SERVICE_STATUS_HANDLE(WINAPI *pRegisterServiceCtrlHandlerExA)(LPCSTR
LIST_ENTRY NotificationListHead
RTL_RESOURCE NotificationListLock
struct _DEV_BROADCAST_DEVICEINTERFACE_W DEV_BROADCAST_DEVICEINTERFACE_W
#define DBT_DEVICEARRIVAL
#define DBT_DEVTYP_DEVICEINTERFACE
#define DBT_DEVICEREMOVECOMPLETE
const GUID GUID_DEVICE_INTERFACE_ARRIVAL
const GUID GUID_DEVICE_INTERFACE_REMOVAL
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
PSDBQUERYRESULT_VISTA PVOID DWORD * dwSize
NTSYSAPI BOOLEAN NTAPI RtlAcquireResourceShared(_In_ PRTL_RESOURCE Resource, _In_ BOOLEAN Wait)
NTSYSAPI VOID NTAPI RtlReleaseResource(_In_ PRTL_RESOURCE Resource)
int WINAPI UuidEqual(UUID *Uuid1, UUID *Uuid2, RPC_STATUS *Status)
BOOL WINAPI I_ScSendPnPMessage(_In_ SERVICE_STATUS_HANDLE hServiceStatus, _In_ DWORD dwControlCode, _In_ DWORD dwEventType, _In_ PVOID pEventData)
struct _LIST_ENTRY * Flink
#define CONTAINING_RECORD(address, type, field)
#define SERVICE_CONTROL_DEVICEEVENT
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)