win2000 - porttalk...
- 아이
- Mar 24, 2004
- 675
안녕하세요..
우연찮게 이 홈피를 알게 되서 이렇게 질문까지 올립니다.
우연찮게 이 홈피를 알게 되서 이렇게 질문까지 올립니다.
win98에서는 잘 돌아가는 프로그램이 있는데,
win2000 이랑 xp 에 가니깐
"unknown software exception ~~" 이라는 에러를 내면서
실행이 안되더군요.
프린트포트를 사용하는 프로그램인지라 여기저기 찾다보니깐 여기까지 오게되었습니다.
win98과 win2000에서의 제어방법이 다르다는 말과 함께요..^^
디바이스드라이버를 만들어서 해줘야 한다는데.. ㅡㅡ;
자료실에 있는 porttalk.zip 파일을 받아서 하라는 대로 했습니다.
레지스터리 등록하고, sys 파일복사하고, 재부팅.
winmsd에서 "사용중" 이라는 말도확인했구요.
근데 프로그램은 같은 에러를 내면서 실행이 안되는군요..
vc++은 전혀 모르는데, 그 프로그램 만든사람이 퇴사하고 없는지라..ㅠㅠ
프로그램에는 _inp / _outp 이라는 것을 쓴거 같습니다.
너무 허무맹랑한 질문이 아닌지 모르겠군요..ㅡㅡ;
제가 vc++의 문법적이거나 환경적인 구성과 내용을 모두 말씀드리는 건 어렵구요...
vc++환경에서 코드를 작성하는 방법을 좀 더 참조하시는게 좋을듯 하네요.
거의 대부분이 문법적인 에러이고,
또 선언되어야 할것이 그렇지 않고 있어서 생기는 문제입니다.
pt_ioctl.c 의 이름을 바꾸실 필요는 없구요.
ptioctl.c파일의 안에 들어 있는 내용들을 적당히 복사해서 작업하시는 소스코드에 붙여 넣는 방식으로 하시는게 편할 것 같습니다.
윈도우 다이얼로그가 Initialize될때쯤에 OpenPortTalk() 함수를...
종료할때
ClosePortTalk() 함수가 호출되도록 하구요,
HANDLE PortTalk_Handle; 의 내용을 포함한 위쪽의 모든 내용을 다이얼로그(나 윈도우...)의 헤더파일에 두시면 됩니다.
그리고 printf("..."); 와 관련한 코드들은 빼는게 좋겠죠?
Visual C++ 관련 서적을 먼저 많이 참고하시기 바랍니다.
수고하십시오-
>답변 감사합니다.
>허나 제가 너무 모르는 지라..ㅜㅜ
>프로그램이라곤 C로 구구단 출력밖에 해본게 없는지라 어떻게 해야 할지 너무 막막하네요.
>
>저희 프로그램은 VC++로 되어있는데요,
>OpenPortTalk나, ClosePortTalk 함수를 사용하려면 정의(?)를 해야 하잖아요..
>그것이 pt_ioctl.c 파일이구요...
>
>그래서 제가 한것이
>
>pt_ioctl.c를 .cpp로 이름 바꾸고,
>workspace의 file view 탭에서 소스 파일에 추가하구요, .h 파일도 추가하고 컴파일 했습니다.
>그랬더니 에러가..
>
>=========================================
>pt_ioctl.cpp
>F:\pt_ioctl.cpp(117) : error C2065: 'SC_HANDLE' : undeclared identifier
>F:\pt_ioctl.cpp(117) : error C2146: syntax error : missing ';' before identifier 'SchSCManager'
>F:\pt_ioctl.cpp(117) : error C2065: 'SchSCManager' : undeclared identifier
>F:\pt_ioctl.cpp(118) : error C2146: syntax error : missing ';' before identifier 'schService'
>F:\pt_ioctl.cpp(118) : error C2065: 'schService' : undeclared identifier
>F:\pt_ioctl.cpp(123) : error C2065: 'OpenSCManager' : undeclared identifier
>F:\pt_ioctl.cpp(125) : error C2065: 'SC_MANAGER_ALL_ACCESS' : undeclared identifier
>F:\pt_ioctl.cpp(139) : error C2065: 'OpenService' : undeclared identifier
>F:\pt_ioctl.cpp(141) : error C2065: 'SERVICE_ALL_ACCESS' : undeclared identifier
>F:\pt_ioctl.cpp(161) : error C2065: 'StartService' : undeclared identifier
>F:\pt_ioctl.cpp(178) : error C2065: 'CloseServiceHandle' : undeclared identifier
>F:\pt_ioctl.cpp(184) : error C2146: syntax error : missing ';' before identifier 'SchSCManager'
>F:\pt_ioctl.cpp(185) : error C2146: syntax error : missing ';' before identifier 'schService'
>F:\pt_ioctl.cpp(226) : error C2065: 'CreateService' : undeclared identifier
>Generating Code...
>Error executing cl.exe.
>================================================
>이렇게 나네요...
>기존의 프로그램 소스 폴더에 파일을 넣어두기도 하고,
>windows.h / winioctl.h 파일도 추가해 봤는데 에러가 나는건 마찬가지네요..
>
>
음, 받으신 압축파일을 풀어보시면,
IoExample 이라는 폴더가 있을 겁니다.
그안의 소스를 참고 하시면 되는데요,
_inp / _outp
부분을 아래의 예제처럼
사용하시면 되겠네요.
먼저번것은 주소, 뒤에것은 데이타..^^
outp(0x378, 0xAA);
...
이번엔 주소만....
inp(0x378);
레지스트리 등록하시구요,
.sys 드라이버 파일은 windows\\system32\\drivers\ 폴더 아래에 복사해 두시고...
리붓 한번 하신후 사용해 보시겠습니까?
물론, 예제처럼 프로그램 시작시 ->
OpenPortTalk();
프로그램이 종료될때쯤-
ClosePortTalk();
해주시면 되겠네요.
도움이 되었길 바라겠습니다.
>안녕하세요..
>우연찮게 이 홈피를 알게 되서 이렇게 질문까지 올립니다.
>
>win98에서는 잘 돌아가는 프로그램이 있는데,
>win2000 이랑 xp 에 가니깐
>"unknown software exception ~~" 이라는 에러를 내면서
>실행이 안되더군요.
>프린트포트를 사용하는 프로그램인지라 여기저기 찾다보니깐 여기까지 오게되었습니다.
>win98과 win2000에서의 제어방법이 다르다는 말과 함께요..^^
>디바이스드라이버를 만들어서 해줘야 한다는데.. ㅡㅡ;
>
>자료실에 있는 porttalk.zip 파일을 받아서 하라는 대로 했습니다.
>레지스터리 등록하고, sys 파일복사하고, 재부팅.
>winmsd에서 "사용중" 이라는 말도확인했구요.
>근데 프로그램은 같은 에러를 내면서 실행이 안되는군요..
>
>vc++은 전혀 모르는데, 그 프로그램 만든사람이 퇴사하고 없는지라..ㅠㅠ
>
>프로그램에는 _inp / _outp 이라는 것을 쓴거 같습니다.
>
>너무 허무맹랑한 질문이 아닌지 모르겠군요..ㅡㅡ;