У нас есть несколько процессов в текущем приложении. Один процесс отвечает за обнаружение и удаление загрузчика USB. Код для обработки обнаружения и удаления, как показано ниже.
protected override void WndProc(ref Message m)
{
switch (m.Msg)
{
case Win32.WM_DEVICECHANGE: OnDeviceChange(ref m);
break;
}
base.WndProc(ref m);
}
private void OnDeviceChange(ref Message msg)
{
int wParam = (int)msg.WParam;
Win32.DEV_BROADCAST_VOLUME dbVol = new Win32.DEV_BROADCAST_VOLUME();
Win32.DEV_BROADCAST_HDR msgDevHeader = new Win32.DEV_BROADCAST_HDR();
const int DBT_DEVTYP_VOLUME = 0x00000002;
string loaderUpdates;
switch (wParam)
{
case Win32.DBT_DEVICEARRIVAL:
int devType = Marshal.ReadInt32(msg.LParam, 4);
if (devType == DBT_DEVTYP_VOLUME)
{
}
break;
case Win32.DBT_DEVICEREMOVECOMPLETE:
break;
}
}
Когда я запускаю процесс, который обрабатывает USB-загрузчик в режиме отладки в среде Visual Studio, он правильно определяет USB. но все же я получаю несколько сообщений. получает сообщение со значением wparam как «7» 3 раза, а затем получает значение wparam как «32768 (0x8000 / DBT_DEVICEARRIVAL)» . Это нормально?
Когда я запускаю все остальные процессы вместе с процессом, который обнаруживает USB, кажется, что это всегда только полученное сообщение со значением wparam как "7". получает сообщение с wparam как "7" 5 раз. Нет сообщения со значениями wparam как "(0x8000 / DBT_DEVICEARRIVAL)". в чем может быть проблема?
Оцените любые предложения / решения.
С уважением Raju