Pergunta

Eu tenho algum código Linux que monitora nosso hardware coletando temperaturas, tensões e velocidades do ventilador, da placa -mãe usando as funções de E/S inb (), outb (), inl (), etc.

Meu desafio é portar esse código para ser executado no Windows como um aplicativo simples de console. Mas estou intrigado com quais funções o Win32 (ou .NET) fornece que me permitem permissão para acessar portas mapeadas de memória direta.

Também não quero codificar um driver do sistema.

Minha preferência da ferramenta do Windows é vs2008. (Para sua informação)

Isso é possível?

Foi útil?

Solução 3

Bem, depois de muita pesquisa com algumas tentativas e erros, os dois bits mais úteis que achei úteis são:

Winring0 e Io.dll .

Eles praticamente fazem a mesma coisa, a diferença são as amostras de código que você encontrará para ajudá -lo a começar a usá -las.

Espero que isso ajude para os outros.

Outras dicas

O nível de proteção padrão para as portas de E/S no Windows impede que um programa de modo de usuário use as instruções INP e out em qualquer porta. Seu programa morrerá com um GPF. Existem vários drivers disponíveis gratuitamente em torno dessa alteração desse nível de proteção, para que o código Ring 3 possa acessar as portas. O que está tudo bem se você estiver interessado em cravos assassinos.

O canônico é inpout32.

A maioria dos locais de hardware é mapeada em áreas não acessíveis do espaço do usuário, então você vai precisar um driver de dispositivo que fornece a API desejada.

Você também pode verificar o Guia de migração de aplicativos Unix ad msdn.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top