|
먼저 감사하고요
이렇게 해서 코딩을 했는데...
신택스,언 디파인에러가 나오네요
그리고 "INPOUT32.DLL"가 없어서요..
고맙습니다.
유영인 Cuperido 님이 쓰신 글 :
: 저기, 죄송한 말씀이지만,
: 제가 테스트 예제를 작성하던 도중...
: 올려드린 Inpout32.dll 에 문제가 있는걸 발견했습니다. --;
:
: 어이없는 답변이지만 제가 보내드린거 사용하지 마시고요,
: 포트 I/O 관련 컴포넌트 (저도 찾아보겠습니다. dlportio 등이 있는걸로 알고 있습니다)
: 를 아래와 같은 방법으로 dll 로 읽어서 사용하실 수 있습니다.
:
:
: cuperido
:
: //---------------------------------------------------------------------------
:
: #include <vcl.h>
: #pragma hdrstop
:
: #include "Unit1.h"
:
: //---------------------------------------------------------------------------
:
: #pragma package(smart_init)
: #pragma resource "*.dfm"
:
: TForm1 *Form1;
: HINSTANCE hiInstance;
: HOOKPROC hpInput, hpOutput;
:
: typedef short __stdcall __declspec(dllimport)Func_Inp32(short PortAddress);
: typedef void __stdcall __declspec(dllimport)Func_Out32(short PortAddress, short Value);
:
: Func_Inp32 *Inp32;
: Func_Out32 *Out32;
:
: //---------------------------------------------------------------------------
:
: __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner)
: {
:
: hiInstance = LoadLibrary("INPOUT32.DLL");
:
: Inp32 = (Func_Inp32 *)GetProcAddress(hiInstance, "Inp32");
: Out32 = (Func_Out32 *)GetProcAddress(hiInstance, "Out32");
:
:
: }
:
: //---------------------------------------------------------------------------
:
: void __fastcall TForm1::FormDestroy(TObject *Sender)
: {
:
: FreeLibrary(hiInstance);
:
: }
:
: //---------------------------------------------------------------------------
:
: void __fastcall TForm1::Button1Click(TObject *Sender)
: {
:
: short itValue;
:
:
: itValue = Inp32(0x378);
:
: ShowMessage(itValue);
:
: }
: //---------------------------------------------------------------------------
:
:
:
: 나그네 님이 쓰신 글 :
: : 제가 초보라서 이해가 잘 안되네요
: : 어떻게 쓰는지 간단한 예제가 있으면 부탁합니다.
: : 감사합니다.
: :
: :
: :
: : 유영인 Cuperido 님이 쓰신 글 :
: : : Procedure Out32(PortAddress: Smallint; Value: Smallint); Stdcall; External 'InpOut32.DLL';
: : : Function Inp32(PortAddress: Smallint) : Smallint; Stdcall; External 'InpOut32.DLL';
: : :
: : : 이 형태로 정의되어 있으니 DLL에서 불러서 사용하시면 될 것 같습니다.
: : :
: : : 0x300을 읽을 수 있을지는 모르겠습니다. 실질적으로 Windows NT 버젼 (2000, XP 포함)
: : : 에서는 포트를 95/98 버젼과 다르게 직접 억세스 할 수 없으며, 또한 억세스를 권한을
: : : 받아서 하더라도 가벼운 포트가 아니면 (시리얼, 패러럴 등) 직접적으로 억세스가
: : : 불가능합니다.
: : :
: : : 이러한 경우 DDK를 받으셔서 VxD 파일을 만드시든지 해서, 장치에 대한 드라이버를
: : : 따로 만들어 주셔야 합니다.
: : :
: : :
: : : cuperido
: : :
: : : 나그네 님이 쓰신 글 :
: : : : 저는 포트(0x300)을 읽을려고합니다.
: : : : 근디 잘 안되어서요
: : : : 빌더 5용이 있음
: : : : 공개좀 부탁합니다.
|