Recibir mensajes de Windows en un servicio

He escrito un servicio en VC ++. Seguí eltutorial aquí. Ahora, estoy tratando de averiguar cómo recibir mensajes como DBT_DEVICEARRIVAL, DBT_DEVICEREMOVECOMPLETE, WM_COPYDATA, etc., como una aplicación regular que tiene una ventana de nivel superior. Al buscarlo, me encontré coneste artículo de MSDN

En la sección "Mensajes de difusión", en los párrafos finales:

Las aplicaciones reciben mensajes a través del procedimiento de ventana de sus ventanas de nivel superior. Los mensajes no se envían a ventanas secundarias.Los servicios pueden recibir mensajes a través de un procedimiento de ventana o sus controladores de control de servicio.

Pero es casi imposible encontrar algún ejemplo de cómo hacerlo.

¿Cómo puedo asociar un WndProc con mi servicio para que reciba mensajes?

O, ¿cómo puedo hacer que mi controlador de control de servicios funcione para recibir mensajes de Windows? Mi controlador de control de servicio tiene solo un parámetro DWORD y no el UINT, WPARAM, LPARAM, etc. de un WndProc.

He leído sobre 1) usando una ventana oculta y 2) una ventana de solo mensajes, etc., pero no creo que pueda usarlos en un servicio; no quiero Sería feliz si pudiera lograrlo en cualquiera de las dos formas que menciona MSDN.

Descripción del Servicio:

El servicio detectará la inserción del dispositivo USB y le copiará algunos archivos. También tiene que hacer un seguimiento de los cambios en algunos directorios y archivos para que sepa cuáles copiar.

Esta funcionalidad básica puede ampliarse para incluir otras cosas, en el futuro. Por lo tanto, es posible que tenga que ser capaz de recibir muchos otros mensajes de Windows que no conozco ahora.

Los mensajes de ejemplo mencionados anteriormente simplemente se toman de lo que estoy acostumbrado al desarrollar una aplicación de Windows normal. Entiendo si no son adecuados o seguros, al escribir un servicio.

Respuestas a la pregunta(2)

Su respuesta a la pregunta