winapi - mundial - Windows equivalente de inb(), outb(), bajo nivel de E/S
paises de ingresos bajos (3)
El nivel de protección predeterminado para los puertos de E / S en Windows evita que un programa en modo usuario use las instrucciones de entrada y salida en cualquier puerto. Tu programa morirá con un GPF. Hay varios controladores disponibles libremente que cambian ese nivel de protección para que el código del anillo 3 pueda acceder a los puertos. Lo cual está bien si te interesan los golpes potentes.
El canónico es inpout32 .
Tengo un código de Linux que monitorea nuestro hardware mediante la recopilación de temperaturas, voltajes y velocidades de los ventiladores desde la placa base utilizando inb (), outb (), inl (), etc. funciones de entrada / salida de bajo nivel.
Mi desafío es transferir ese código para que se ejecute en Windows como una simple aplicación de consola. Pero estoy desconcertado sobre qué funciones proporciona Win32 (o .NET) que me permitan acceder a los puertos mapeados de memoria directa.
Tampoco quiero codificar un controlador del sistema.
Mi preferencia de herramienta de Windows es VS2008. (fyi)
es posible?
La mayoría de las ubicaciones de hardware se asignan en áreas no accesibles desde el espacio de usuario, por lo que necesitará un controlador de dispositivo que proporcione la API deseada.
También puede consultar la Guía de migración de aplicaciones de UNIX y MSDN.
Bueno, después de mucha búsqueda con algunos intentos de prueba y error, los dos bits más útiles que encontré fueron útiles:
Prácticamente hacen lo mismo, la diferencia está en las muestras de código que encontrará para ayudarlo a comenzar a utilizarlas.
Espero que esto ayude a otros.