일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- docker
- 루비
- 패키지
- 드라이버
- QT
- VMware
- golang
- 도커
- Linux
- ubuntu
- VIM
- 방화벽체크
- sudo
- 우분투
- docker registry
- DevOps
- Chef
- Openswan
- ssh
- opsworks
- 리눅스
- driver
- docker-compose
- VPN
- AWS
- docker container
- port
- ssh command
- RUBY
- window size
- Today
- Total
목록Window Driver (28)
구리의 창고
Windbg 설치 및 설정이곳에서는 vmware상에 설치가 되어있는 WindowsXP Operating System에 대한 디버깅을 가능하게 해주는 Windbg 설치 및 vmware 설정 방법을 설명한다. Windgb 다운로드Windbg는 마이크로소프트 홈페이지에서 다운로드를 할 수 있다. 아래의 링크로 이동해서 최신버전의 Windbg 를 다운받도록 하자. http://www.microsoft.com/whdc/devtools/debugging/installx86.mspx 추가적으로 해당 Symbol을 Link해주어야 하는데 Windbg상에서 Web을 통해서도 가능하나 다운로드해서 설정을 하도록 하겠다. 아래의 링크로 가면 Windows 버전(서비스팩 버전포함)에 따른 각각의 다운로드 링크를 제공하니 디버..
이 부분이 뭔고하니.. Class=USB 라고 했으면 USB에 맞는 classguid 를 적어줘야한다 이거는 소스안에 적는 guid랑 다른것이다!! 1394 Host Bus ControllerClass = 1394 ClassGuid = {6bdd1fc1-810f-11d0-bec7-08002be2092f}This class includes system-supplied drivers of 1394 host controllers connected on a PCI bus, but not drivers of 1394 peripherals. Battery DevicesClass = Battery ClassGuid = {72631e54-78a4-11d0-bcf7-00aa00b7b32a}This class includ..
1. DriverEntry -콜백함수를 등록해준다. 쓰지 않는 함수는 default handler를 만들어 처리해준다. 2. AddDevice -드라이버를 초기화한다. 여기서 보통 이루어지는 함수를 대략적으로 나열해보겠다. (guid를 사용 할 경우이다) IoCreateDevice() -> IoRegisterDeviceInterface() -> IoSetDeviceInterfaceState() 3. IRP_MN_START_DEVICE (PNP) -AddDevice가 호출된 후에 불려진다. AddDevice()가 드라이버를 초기화 했다면, 실제 디바이스를 설정하고 초기화 한다. 4. IRP_MN_QUERY_CAPABILITIES (PNP) -그 다음 호출되는 함수이다. 계속 추가..
http://www.driveronline.org/ 에 있는 스켈레톤PNP를 기초로 만들었다 드라이버와 어플리케이션이 IOCTL까지 할 수 있도록 만든 예제이다. 허접하지만 도움이되는 사람이 있음좋겠다 USB 붙이다가 삭제하고 만든거라 에러날지도 모르겠으나 수정 할 수 있을 정도이다.
MSC_VER 는 vs c++ 컴파일러 버전을 나타내는 상수이다. 버전별 값 1000 : Visual C++ 4.x 1100 : Visual C++ 5 1200 : Visual C++ 6 1300 : Visual C++ NET 1310 : Visual C++ NET 2003 1400 : Visual C++ NET 2005 1500 : Visual C++ NET 2008 사용법) #if _MSC_VER == 1500 //code #else if _MSC_VER = 1400 //code #endif
1. application이 driver 에게 버전 요청 winioctl.h 에 정의된 함수인 DeviceIoControl()를 사용한다. 사용 예시는 아래와 같다. DWORD dwRet; ULONG Version; DeviceIoControl( hDevice, IOCTL_CMD_VERSION, &Version, sizeof(ULONG), &Version, sizeof(ULONG), &dwRet, NULL ); 2. driver는 ioctl 이벤트가 일어나면 이를 감지하고 적절한 case 문으로 이벤트를 처리한다 그럼 드라이버에서는 irp stack에 뭐가 왔나 체크를한다. PIO_STACK_LOCATIONirpStack ; ULONG outputBufferLength; irpStack= IoGetCur..
#include 를 먼저 포함시켜준다..
헤더파일 상단에 #pragma once 라고 써준다.. 중복정의가 안되도록..