답변 감사합니다.
쪕... 음... 그럼 드라이버를 만들어서...
그런데욥
http://www.perisoft.net/bushound/index.htm 여기가면
bushound라는 프로그램을 받을 수 있는데
그 프로그램은 윈도우와 상관 없이 동작 되거든욥
모든 입려장치의 데이터 값을 Capture 하는 프로그램이랍니다.
이 프로그램을 보면 가능 할 것도 같은데 안되네요... 쪕
그래서 USB를 보면 레지스트리에
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\DeviceClasses\{4d1e55b2-f16f-11cf-88cb-001111000030}
여기가 USB관련 Path입니다.
그래서 간단히 핸들가져오는 루틴...
void __fastcall TFrmMain::Button1Click(TObject *Sender)
{
char HIDDevicePath[] = "\\?\HID#Vid_04d8&Pid_0002#6&505ab01&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}";
HANDLE hComm1 = CreateFile(HIDDevicePath,
GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE ,
(LPSECURITY_ATTRIBUTES)NULL,
OPEN_EXISTING,
0,
NULL);
DisplayLastError("CreateFile : ");
}
void __fastcall TFrmMain::DisplayLastError(AnsiString Operation)
{
//Display a message and the last error in the log List Box.
LPVOID lpMsgBuf;
USHORT Index = 0;
AnsiString strLastError = "";
FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS,
NULL,
GetLastError(),
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
(LPTSTR) &lpMsgBuf,
0,
NULL
);
//Display the last error.
strLastError = Operation + (LPCTSTR)lpMsgBuf;
//Trim CR/LF from the error message.
strLastError.TrimRight();
//Index = m_ResultsList.InsertString(-1, strLastError);
ShowMessage(strLastError);
LocalFree(lpMsgBuf);
}
를 해보면 열수가 없던군여.... 정말 디바이스 드라이버를 만들어야 한다면 난감.... 쪕
어디 아시는분...
김진영 님이 쓰신 글 :
: 안녕하세요
: winxp는 winnt계열의 운영체제이고요 winme는 win95계열 운영체제 입니다.
: winnt계열은 드라이버 없이 하드웨어를 '건드릴수'없습니다.
: win95에서 outportb같은 함수로 프린트포트등을 제어할 수 있지만 winnt계열에선 안되죠.
: io제어에 대한 권한은 cpu의 eflags 레지스터 안의 iopl값이 0이면 커널만 건드릴수 있고요 3이면 유저도 건드릴수 있습니다.
: nt는 0으로 세팅되어 있는거죠.
: 이걸 3으로 바꿀수도 있는데 바꾸는 작업 역시 커널만 할수 있습니다.
: 물론 커널모드 프로그램으로 바꿔야겠죠.
: 이건 윈도우api수준의 문제가 아니라 ddk,어셈블리수준의 문제입니다.
: 저도 이쪽은 잘 몰라서 설명을 못해드리겠네요.
: 대신 참고서적을 알려드릴게요.
: "windows 구조와 원리 그리고 codes", 정덕영저, 가남사
: 추신> 전 가남사와 아무런 관련이 없습니다
:
:
: 질문... 님이 쓰신 글 :
: : HID 클래스를 이용한 USB 제어에서...
: :
: :
http://www.soft-gems.net/Controls.php 이곳에서
: : 델파이 와 빌더 HID 컴포넌트를 받을 수 있습니다.
: :
: : 설치하고 테스트 해보시면...
: : USB 마우스가 있으시다면 데이터가 들어오는 것을 보시수있습니다.
: :
: : .... 쪕....
: :
: : 그런데 동작이 XP... 그이상에선 USB의 Pnp는 확인이 되는데 데이타 입력이 안들어 오더군요
: :
: : 윈도우 Me에서는 데이터 입력이 아주 잘 들어오는데...
: :
: : 헉... 아무래도 HID클래스나 함수가 어떻해 된것같은데... 쪕.. 잘 몰라서...
: :
: : USB를 사용하려면 유용하실겁니다.
: :
: : XP... 나 그 이상에서 동작이 안되는 이유가 뭘까요?
: :
: : 위 URL 을 접속해서 설치 하시구 테스트 해보세욥 윈도우 ME에서는 아주 잘 됩니다 ^^;