최신 버전의 Windows에서는 사용자 응용 프로그램에서 직접 포트 I/O를 허용하지 않습니다. 프로그램은 링 0이 아닌 링 3에서 실행됩니다. 응용 프로그램을 대신하여 포트 I/O를 수행하려면 드라이버가 필요합니다.
먼저 카드 제조업체에 연락하여 보드 용 Windows 드라이버를 만들었는지 확인하십시오.
Windows 드라이버를 사용할 수없고 기본적인 라이브러리 읽기 및 쓰기 (인터럽트 또는 DMA 없음) 만 수행하려는 경우 포트 I/O를 다운로드하기 위해 다운로드 할 수있는 라이브러리가 무료로 제공됩니다. 기본적으로 라이브러리에는 링 0에 앉아 있고 I/O를 수행하는 더미 "드라이버"가 포함되어 있습니다. 나는 대부분의 경험이 WinIO입니다.
WinIO에는 .Net/CLR이없는 C/C++ API가 있습니다. P/Invoke를 사용하여 관리 코드에서 WinIO 함수를 호출해야합니다.
주위를 검색하는 경우 관리 코드에 API를 제공하는 WinIO와 유사한 도구 키트를 찾을 수 있습니다. (편집 : 여기에 DirectIO이라는 책갈피가 있습니다.)
WinIO의 가장 큰 문제점은 기본 레지스터 읽기/쓰기로 제한된다는 것입니다. 인터럽트 또는 DMA가 필요한 경우 운이 없게됩니다. 이 시점에서 "실제"드라이버를 작성해야합니다.
드라이버를 작성하는 것은 초보자에게는 꽤 중요한 작업이 될 수 있습니다 (많은 실수가 있습니다). 먼저 Windows Driver Kit 사본을 받고 Microsoft의 Kernel Mode Driver Framework을 학습해야합니다. Jungo WinDriver 사본을 구매할 수도 있습니다. WinDriver는 드라이버 개발을 상당히 단순화 해주는 타사 도구이지만 일회용 프로젝트에는 상당히 비쌉니다.
일반적으로 ISA 버스에 쓰려고합니까? 아니면 특정 ISA 카드와 통신하려고합니까? 그렇다면 어떤 카드입니까? –
Im (특정 종류의 LED 패널 제어) 특정 ISA 카드에 쓰려고하는데 어떤 종류인지 모르지만 예전의 HW는 내 도메인이 아닙니다 :) – astromedia
그래서 ... 돈이 없다면 어떻게해야합니까? 그게 뭔지 알아? 통신 프로토콜이 있습니까? 그 기능에 관한 문서? –