Pergunta

Pode ponteiros padrão em .Net fazer isso? Ou faz uma necessidade de recorrer a P / invoke?

Note que eu não estou falando de referências de objeto; Estou falando de ponteiros reais C # no código inseguro.

Foi útil?

Solução

C #, como um motor de tempo de execução gerenciado e protegido, não permite baixo acesso hardware nível e as posições de memória associadas com hardware real não estão disponíveis.

Você vai precisar usar um driver de porta ou escreve sua própria em C ++ ou C com a API apropriada do Windows para acessar a memória mapeada regiões S de interesse I /. Esta será executado em um anel menor do que o C # programas são capazes.

É por isso que você não vê motoristas escritos em C #, embora eu entendo que muitos estão escrevendo rotinas de acesso com C ++, mas a principal lógica do driver em C #. É complicado, porém, como travamentos e reiniciar pode se tornar complicado, para não mencionar problemas de sincronização e temporização (que são um pouco mais concreto em C ++ em um anel inferior, mesmo que o Windows está longe de ser um sistema em tempo real).

-Adam

Outras dicas

Para expandir a resposta de Adão , você não pode mesmo realizar mapeamento de memória I / o a partir de uma aplicação Win32 sem a cooperação de um driver de kernel. Todos os endereços de um aplicativo Win32 recebe são endereços virtuais que não têm nada a ver com endereços físicos.

Você quer necessidade de escrever um driver de kernel para fazer o que você está falando ou ter um driver instalado que tem uma API que vou deixar você fazer pedidos de I / O contra determinados endereços físicos (e como um motorista seria uma falha de segurança muito grande esperando para acontecer, eu imagino). Eu me lembro que quando caminho de volta algum equipamento tinha como motorista um como parte de um kit de desenvolvimento para a porta ajuda legado DOS / Win16 ou qualquer código de dispositivo para Win32. Eu não me lembro seu nome ou saber se ele ainda está por aí.

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