일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 고정 IP주소를 가진 네트워크 어댑터를 검색할 수 없습니다.
- 가상 프라이빗 클라우드
- dhcp
- 도메인 사용자 또는 그룹을 확인할 수 없습니다.
- Virtual Private Cloud
- 이 컴퓨터는 도메인의 구성원이 아닙니다.
- DHCP 설정
- 멀티테넌시
- View Connection
- 온 프레미스
- 운영관리제어의 축소
- 수직적 확장
- 커뮤니티 클라우드
- 클라우드 자원 관리자
- Community Cloud
- 자원 풀링
- 클라우드 제공자
- DHCP 설치
- IT 자원
- 제한된 이식성
- 클라우드 보안 취약성
- VMware
- 수평적 확장
- VMWare View Connection Serve
- Error 1720
- 클라우드 서비스 소유자
- 클라우드 소비자
- 정수형 데이터타입
- VMWare vSphere
- 온디맨드식
- Today
- Total
한 걸음씩..
[Device Driver] IRP Dispatch Routine 본문
1. 외부로부터 명령어(IRP)를 받는 곳
2. PnP Manager로부터 전달되는 IRP를 처리하는 함수
NTSTATUS SamplePnpDispatch(
PDEVICE_OBJECT pDeviceObject,
PIRP pIrp)
{
PIO_STACK_LOCATION pIoStackLocation;
PDEVICE_EXTENSION pDeviceExtension;
NTSTATUS status;
PDEVICE_OBJECT pTargetDevice;
pDeviceExtension = ( PDEVICE_EXTENSION )pDeviceObject->DeviceExtension;
//DeviceExtension 구조체에 저장해 놓은 DeviceStack 상의 하위 DeviceObject
pTargetDevice = pDeviceExtension->pLowerDeviceObject;
//IRP 내부에 존재하는 IO Stack 포인터 위치( CurrentStackLocation이 가리키는 값 )를 리턴받음
pIoStackLocation = IoGetCurrentIrpStackLocation( pIrp );
switch( pIoStackLocation->MinorFunction )
{
case IRP_MN_START_DEVICE:
//...
break;
case IRP_MN_REMOVE_DEVICE:
IoDetachDevice( pTargetDevice ); // Device Stack에서 현재 Device Object와의 연결을 끊음
IoDeleteDevice( pDeviceObject ); // 현재 Device Object를 제거
break;
// 기타 다른 IRP_MN_.... 처리
default:
break;
}
// 현재 IRP에 대해서 더 이상 간섭하지 않겠다는 의미
IoSkipCurrentIrpStackLocation( pIRP );
// 현재 IRP를 Device Stack상의 하위 Device Object로 전달
return IoCallDriver ( pTargetDevice, pIrp );
}
출처 : 디바이스 드라이버 구조와 원리 그리고 제작 노하우
'프로그래밍' 카테고리의 다른 글
[Device Driver] Device Object 자료구조 (0) | 2013.09.05 |
---|---|
[Device Driver] Driver Object 자료구조 (0) | 2013.09.04 |
[Device Driver] AddDevice routine (0) | 2013.09.02 |
[Device Driver] DriverEntry Routine (0) | 2013.09.01 |
[Windows]윈도우 부팅이 안될 때 (0) | 2013.08.28 |