Ch 13. Windows 관리 기구.

Slides:



Advertisements
Similar presentations
All Rights Reserved, Copyright© UBIVELOX co.,Ltd LG U+ 과금 API 소개 Version1.0 Authorubivelox Date21-Feb
Advertisements

1/15 16 기 장영일 Ext File System. 2/15 처음에 Minix 가 사용되었다 ( 제약사항 ) 최대로 저장할 수 있는 파일의 크기 – 64M : 16bit 정수로 블록 주소 지정 -> 1024( 블록 기본 사이즈 ) * (2^16) = 64M.
J-Stream part1 (Software streaming service) ▪ 팀명 : Jukdori ▪ 팀원 : 16 th 윤병호 (PL) 15 th 송인규 16 th 김영진.
/11 CUDA 를 이용한 병렬 프로그래밍 DirectX 3D 를 이용한 3D 프로그래밍
© DBLAB, SNU 화일구조. 강의 소개 - 화일구조  Instructor : Prof. Sukho Lee (301 동 404 호 )  홈페이지 :  교과목 개요 – 이 과목은 데이타 관리와 응용을 위한 화일 구조의 설계와.
1 비주얼 베이직 소개와 개발 환경 구축 비주얼 베이직 프로그래밍 환경을 구축하자!.
화일구조.
Window 2000 윈도우 2000 기본 프로세스들.
T A B L E 작성자 : 이 재 학.
DB2 Information Management DB2 UDB CLP Command Summary.
Ubiquitous Computing Lab NS-3 Basic 박성진
SYSTEM CALL (Syscall) CSLAB SEWON PARK.
데이터 모델링 방법론 2003년 03월.
SAP QUERY SAP R/3 4.6C.
Ablecom Type-7 IVR 에이블컴 기술연구소.
암호화 기술(SSL, IPSec) 손재성 권기읍 안복선 최준혁
개발자에게 SharePoint Services 란 무엇인가?
Knowledge Enterprise Portal Solution(iKEP)
Dept. of Computer Engineering, Hannam Univ. Won Goo Lee
Toad for SQL Server 제품 소개서 – 프로넷소프트㈜.
2주 실습강의 Java의 기본문법(1) 인공지능연구실.
Minicom,tftp,nfs설정,vnc설정
12. 데이터베이스 설계.
소프트웨어 공학 (Software Engineering)
CDC Connected Device Configuration CLDC보다 많은 리소스를 가진 시스템을 대상으로 설정
Java RMI (Remote Method Invocation)
Ch 14. System Thread.
인스톨쉴드9 데브스튜디오 사용 매뉴얼 (VB6에서 개발후 배포프로그램 만들기)
4장 관리 메커니즘 발표자: 정희종 발표일: 2006년 7월 3일.
Ch2-2. VHDL Basic VHDL lexical element VHDL description
Embedded System Porting (2)
2장 운영 체제의 개요 운영체제의 개념 운영체제의 유형 운영체제의 발전 과정 운영체제의 구성 운영체제 서비스 시스템 구조
S N M P (Simple Network Management System).
소프트웨어시스템 실험 Software Systems Lab. 데이터베이스 기초
Embeded 기초 다지기 2015년 10월 26일 intern Sally
Visual C++ Programming
Computer Architecture
C++ 프로그래밍 년 2학기 전자정보공학대학 컴퓨터공학부.
웹서버와 설치에 필요한 것 WWW ( world wide web ) TCP/IP 프로토콜을 이용하는 클라이언트/서버 환경
Network Management 김대환 김태훈 김숙흔 이근민.
ASP.NET Mobile Controls
네트워크 관리 개요 및 SNMP Protocol 동작 과정
BAF Team IT Engineering Center
Visual Basic 기초 1 목표: 컴퓨터기반제어에 관련된 학습을 하기 전에 Visual Basic의 기초를 살펴본다.
Chapter 10. 파일 시스템 인터페이스(File System Interface)
파일 시스템 인터페이스(File System Interface)
제10장 파일 시스템 인터페이스(File System Interface)
Windows 환경에서 동작하는 Arm Emulator(Simulator)
Ch 6. Initialization and Cleanup Routines
1조 김성수 백현기 석광우 김지원 박광연.
운영체제 (Operating Systems) (Memory Management Strategies)
User Datagram Protocol (UDP)
Stocker Controller System 소개
컴퓨터공학실습(I) 3주 인공지능연구실.
JFS operation HP Korea / Operations JFS operation.
XML-II (eXtensible Markup Language) DTD/DOM
Machine architecture Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Chapter 2.
소프트웨어 형상관리: 목차 변경 및 형상관리의 기초 개념 형상항목 확인 및 버전관리 변경관리 감사 및 감사보고 99_11
Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
화일구조.
8. 리눅스의 내부 군자삼락 [君子三樂] 청출어람이청어람 [ 靑出於藍而靑於藍 ] Why Linux ?
Machine architecture Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Chapter 2.
1. 관계 데이터 모델 (1) 관계 데이터 모델 정의 ① 논리적인 데이터 모델에서 데이터간의 관계를 기본키(primary key) 와 이를 참조하는 외래키(foreign key)로 표현하는 데이터 모델 ② 개체 집합에 대한 속성 관계를 표현하기 위해 개체를 테이블(table)
안드로이드 앱 분석 팀 기반의 설계 프로젝트 박민재
이번 시간에는... 지난 시간까지 2회차에 걸쳐 WML의 택스트 포맷, 이미지 처리, 페이지 이동, 태스크 수행과 이벤트 처리 및 WML 사용자 Input 처리 태그 등, WML 개발에 대해서 알아보았습니다. 이번 시간에는 2회차에 걸쳐, WML 스크립트 개발에 대해서.
Machine architecture Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Chapter 2.
데이터 베이스의 내부 구조.
SQL Server Reporting Services Feature
3장. 데이터베이스 시스템 데이터베이스 시스템의 정의 데이터베이스의 구조 데이터베이스 사용자 데이터 언어
Lecture 7 7-Segment LED controller using u-controller
Presentation transcript:

Ch 13. Windows 관리 기구

Contents WMI WMI Architecture 전통적인 방법의 Driver Event Logging Summary Ch 13. Windows 관리 기구

1. WMI

WMI Windows Management Instrumentation WDM이 제공 Management Data 수집, 저장, 보고 하는 표준화된 기능 Driver의 Client가 Device의 설정을 변경 가능 CIM (Common Information Model) System이 제공하는 Data를 Client가 Property, Method , Event 등으로 쉽게 사용하게 하는 Model MOF 라는 새로운 언어는 정의 RPC나 COM과 비슷 WMI는 CIM을 기반으로 하고 있음 Ch 13. Windows 관리 기구

2. WMI Architecture

WMI Architecture(1) 5 Layer of WMI Architecture WMI Data Source (Ex. Device Driver) Data Provider WMI Data 중앙 저장소 CIMOM 기반의 CIM Data 저장소를 구현 WMI Provider (Ex. WDM WMI Provider) Data Source와 Data 저장소를 연결 WMI Data Comsumer (Ex. Client) Protocol (Ex. COM) Data 저장소를 Client에게 제공 Ch 13. Windows 관리 기구

WMI Architecture(2) WMI Provider의 두가지 구성요소 Win32 DLL User Mode Client 간의 연결을 제공 Kernel Mode Service Driver의 Code에 응답하거나 호출 Ch 13. Windows 관리 기구

CIM Object Manager (CIMOM) WMI Architecture(3) Event 통지 관리된 Application Application & Platform 관리 Query Request Active Directory CIM Object Manager (CIMOM) CIM-compliant store WMI Provider for WDM 다른 주소 User Mode Query Request Event 통지 Kernel Mode WDM / WMI WMILIB WDM / WMI 호환 Driver Ch 13. Windows 관리 기구

WMI를 지원하는 WDM Driver 작성 WMI Data를 제공하기 위해서 Driver에서 수행할 과정 MOF 명세를 제공 Driver에 의해 제공되고 생성될 Data, Method, Event DDK에서 제공하는 mofcomp.exe로 MOF Source를 complie Platform 독립적인 Binary File 생성 (.BMF) Driver의 Resource Section 내에 Compile한 MOF Data를 포함 IRP_MJ_SYSTEM_CONTROL dispatch Routine 작성 Driver는 이 IRP를 받으면 WMI Request에 대한 세부사항을 IRP Minor Field에 기술함 Ch 13. Windows 관리 기구

WMI를 지원하는 WDM Driver 작성 IoWmiRegistationControl 함수를 사용해 WMI Data의 Provider로 등록 IRP_MJ_SYSTEM_Control IRP의 Minor SubCode로 IRP_MN_REGINFO를 처리하는 Code 작성 WMIREGISTER 실행 Code를 처리하기 위해 MOF 기술자 내에 Data와 Event Block을 정의한 정보를 제공 WMILIB.h 안에 선언된 Helper Function을 호출 WMIUPDATE 실행 Code를 처리 Ch 13. Windows 관리 기구

MOF의 문법 RPC Interface 정의의 표준구조를 따름 구조체는 구조체내에 중첩정의 될수 있음 [ATTRIBUTES and QUALIFIERS] ENTITY TYPE and NAME { [DATA ITEM QUALIFIERS] DATA TYPE and NAME; … }; 구조체는 구조체내에 중첩정의 될수 있음 ENTITY Type은 일반적인 Keyword가 될수 있음 Class, string, boolean MOF은 class name을 기술하는 것으로 시작 WMI namespace중 유일해야함 Class는 상속 가능 Ch 13. Windows 관리 기구

WMI MOF 정의중 Class 권한 지정자 Class 권한 지정자 Contents Dynamic Static Provider MOF Block Data가 기본 Class의 Instance 하나당 Runtime에 제공 Static MOF Block Data가 WMI Database의 일부분으로 포함 Provider 필수. 이 Class의 Provider가 WMI 호환이라는 것을 지정 WMI 필수. WMI class를 지정 Description Class의 Client에게 사용가능한 문서 또는 주석 Guid Class를 인식시키게 하는 128Bits 숫자 Locale Description 언어가 어느 지역의 언어인지를 나타내는 Language ID WmiExpense Class에 의해 수집되고 기술된 Data를 위한 CPU Cycle의 수집 비용 Ch 13. Windows 관리 기구

WMI MOF 정의중 Data Item 권한 지정자 Contents key 이 Data Item은 유일하게 Class Instance를 인식함 read WMI Client 가 Item을 읽을수 있음 write WMI Client 가 Item을 쓸 수 있음 BitMap 문자열 이름의 List BitValues BitMap에 의해 기술된 이름에 대응되는 Bit 위치 ValueMap Values 내에 열거된 값을 의미하는 문자열 이름의 List WmiDataId(ItemId) 필수. MOF Data Block 내의 Data Item 위치를 지정 … … … Ch 13. Windows 관리 기구

WMI MOF 정의중 Data Type Contents sizeof string boolean sint8 uint8 Count된 Unicode 문자열 12 boolean TRUE or FALSE 1 sint8 부호있는 8 Bits 정수 uint8 부호없는 8 Bits 정수 sint16 부호있는 16 Bits 정수 2 uint16 부호없는 16 Bits 정수 sint32 부호있는 32 Bits 정수 4 … … … Ch 13. Windows 관리 기구

Example Code(1) InstanceName 과 Active 두개의 Item은 필수 WMI에 의해 관리, Driver 자체에서 관리하는 Data는 아니라고 고려함 [WMI, guid("12345678-1234-5678-9ABC-123456789ABC"), Dynamic, Provider("WMIProv"), WmiExpense(1), Locale("MS\\0x409"), Description("Example class")] class w2kDriverBook_Missile { // 필수 아이템 정의 - 드라이버에서 사용되지 않는다. [key , read] string InstanceName; [read] boolean Active; Ch 13. Windows 관리 기구

Example Code(2) // 속성 [read , WmiDataId(1), WmiScale(0), Description("Total Missile Launches")] uint32 TotalLaunches; //siloStatus 배열 내의 저장소 개수 WmiDataId(2)] uint32 SiloCount; // SiloStatus 배열 WmiDataId(3), WmiSizeIs("SiloCount")] uint8 SiloStatus[]; }; Ch 13. Windows 관리 기구

MOF Source Compile system32 Folder내에 mofcomp.EXE Utility를 이용 WDM 개발환경에서는 두개의 compile Switch가 필요 -B:filename.bmf 해당 Filename으로 compile 된 binary 파일 작성 -WMI filename2.MOF filename2.MOF 를 WMI와 호환되도록 compile EX) mofcomp –B:Example.bmf –WMI Example.MOF Ex) MofResource MOFDATA Example.bmf Driver에 Resource file(.RC)를 Project에 포함 Driver가 System Memory에 Load될시, Resource section이 RAM에 자리잡고 Driver에서 접근 가능하게 됨 Ch 13. Windows 관리 기구

WMI IRP Request 처리 Driver 자신이 WMI의 일원이라는 것을 I/O Manager에게 등록 IoWMIRegistrationControl Function 이용 AddDecive Routine 중 WMIREG_ACTION_REGISTER 인자를 통해 WMI에 등록함 RemoveDevice Routine 중 WMIREG_ACTION_DEREGISTER action 인자를 주어 등록 해제해야함 WMI 에 등록되면 Driver는 IRP_MJ_SYSTEM_CONTROL IRP에 대한 dispatch Routine 이 구현되어 있어야 함 Ch 13. Windows 관리 기구

Class & Instance class는 단지 선언일뿐 어떠한 공간도 예약하지 않음 DpWmiQueryReginfo Function을 통해 Instance로 생성 대부분 한 class에는 하나의 Instance가 적당 구지 여러 Instance를 사용해야하면 Instance Index가 필요 Ch 13. Windows 관리 기구

WMILIB WMI IRP Request 처리는 대부분 Kernel Mode의 DLL, WMILIB에서 함 핵심 Routine  WmiSystemControl WMILIB_CONTEXT Structure를 입력으로 받음 WMILIB_CONTEXT control들을 수행하는 Function Pointer들의 List 만약 지원하지 않는 Function 이 있다면 반드시 NULL로 Setting WmiCompleteRequest Function WMILIB_CONTEXT의 각 Function들의 완료 함수 DpWmiQueryReginfo 제외 Ch 13. Windows 관리 기구

WmiSystemControl NTSTATUS WmiSystemControl IRQL == PASSIVE LEVEL Parameter Description IN PWMILIB_CONTEXT WmiLibInfo Driver에 의해 초기화되어 제공된 WMILIB_CONTEXT structure 의 Pointer IN PDEVICE_OBJECT pDeviceObject Driver의 Device Object IN PIRP pIrp IRP Request Pointer OUT PSYSCTL_IRP_DISPOSITION pIrpDisposition IrpProcessed IrpNotCompleted IrpNotWmi IrpForward Return value 성공 or 실패 Ch 13. Windows 관리 기구

WMILIB_CONTEXT Structure Parameter Description ULONG GuidCount Driver에 등록된 MOF Data Block의 개수 PWMIGUIDREGINFO GuidList GUID와 Instance Count 배열 PWMI_QUERY_REGINFO QueryWmiRegInfo Driver에 의해 제공되는 Func Pointer PWMI_SET_DATABLOCK SetWmiDataBlock … … … Ch 13. Windows 관리 기구

WmiCompleteRequest(1) WMILIB_CONTEXT 내에 ENTRY로 지정된 각 dispatch Function들의 완료 Routine DpWmiQueryReginfo 제외 class의 Instance를 등록하는 Function임 Ch 13. Windows 관리 기구

WmiCompleteRequest(2) NTSTATUS WmiCompleteRequest IRQL <= DISPATCH_LEVEL Parameter Description IN PDEVICE_OBJECT pDeviceObject Device Driver Object Pointer IN PIRP pIrp IRP Request Pointer IN NTSTATUS Status Return 된 IRP의 마지막 상태값 IN ULONG BufferUsed Buffer가 요청에 비해 작으면 필요한만큼 Setting Buffer가 충분하면 실제 사용된 Buffer크기 Setting IN CCHAR PriorityBoost IoCompleteRequest의 PriorityBoost 값과 동일, 고정값 Ch 13. Windows 관리 기구

DpWmiQueryReginfo 목적 호출시기 및 호출자 하나 또는 그 이상의 Data Class의 Instance를 등록함 IRP의 Minor SubCode  IRP_MN_REGINFO Action Code가 WMIREGISTER or WMIUPDATE일때 Action Code란 WMI Structure 내에 있는 변수중 하나 WMI에 의해 호출 Ch 13. Windows 관리 기구

DpWmiQueryDataBlock 목적 호출시기 및 호출자 Request된 Instance Data를 Return 하는 것 IRP의 Minor SubCode  IRP_MN_QUERY_DATA_BLOCK or IRP_MN_QUERY_ALL_DATA WMILIB에 의해 호출 Ch 13. Windows 관리 기구

DpWmiSetDataBlock 목적 호출시기 및 호출자 오직 한 Instance만이 한시점에 변경가능 특정 Instance Data를 수정 하는 것 호출시기 및 호출자 IRP의 Minor SubCode  IRP_MN_CHANGE_SINGLE_INSTANCE WMILIB에 의해 호출 오직 한 Instance만이 한시점에 변경가능 다중 Instance일때에는 InstanceIndex값을 0으로 남겨둠 Ch 13. Windows 관리 기구

DpWmiSetDataItem 목적 호출시기 및 호출자 Instance Data 내의 특정 Item Data를 수정 하는 것 IRP의 Minor SubCode  IRP_MN_CHANGE_SINGLE_ITEM WMILIB에 의해 호출 Ch 13. Windows 관리 기구

DpWmiExecuteMethod 목적 호출시기 및 호출자 특정 Method의 실행을 dispatch 하는것 호출시기 및 호출자 IRP의 Minor SubCode  IRP_MN_EXECUTE_METHOD WMILIB에 의해 호출 WMI Client로 부터 Driver Code의 직접호출의 Interface로 이용 Ch 13. Windows 관리 기구

DpWmiFunctionControl 목적 Data 수집을 시작, 중지하거나 Event생성을 시작, 중지하는 것 등록시에 WMIREG_FLAG_EXPENSIVE로 설정된 중요한 DATA) 호출시기 및 호출자 IRP의 Minor SubCode  IRP_MN_ENABLE_COLLECTION,  IRP_MN_DISABLE_COLLECTION,  IRP_MN_ENABLE_EVENTS,  IRP_MN_DISABLE_EVENTS WMILIB에 의해 호출 Ch 13. Windows 관리 기구

WMI Summary Driver는 반드시 WMI를 지원하게 할 필요는 없음 하지만, 결국 WMI를 추가하는 모습이 될것임 System Event Logging Method (Message 통지) Registry or Custom IOCTL (Data 수집) Ch 13. Windows 관리 기구

3. 전통적인 방법의 Driver Event Logging

Event Logging 개발 과정하에서 제품을 사용할때 Software의 동작을 Monitering 할수 있도록 도와주는 역할 사용 목적 SubSystem에 Event 정보를 저장하기위한 통합 Framework구축 System Administrator에게 쉽고 일관적으로 Event Message를 보여주기 위함 Viewer Utility에서 Event Message를 각 언어로 제공 Ch 13. Windows 관리 기구

Event Logging Architecture ⑤ Display되는 실제 Message Text를 가짐 Message File Event Viewer Driver ① I/O Manager 에게 Nonpaged Memory 요청 ⑤ Log File로 부터 Binary Packet을 읽음 ③ I/O Manager는 Packet을 Logging Thread로 전송 Error Log Packet Event Log File Message Code Message Code ② Driver는 Packet을 Event 설명 정보로 채움 ④ Logging Thread는 정기적으로 Event Log File에 Packet을 기록 Logging Thread Ch 13. Windows 관리 기구

Message로 작업하기(1) Driver는 Event Log Entry 내에 실제 Message Text를 가지지 않음 Disk의 어딘가의 정보를 Code Number를 통해 소유 Code Number (32 bits) 31 ~ 30 29 28 ~ 16 15 ~ 0 Severity Customer Facility Error Code Severity Success(0) , Warning(2) , Error(3) , Information(1) Status Facility 발생 지점 Error Code Ch 13. Windows 관리 기구

Message로 작업하기(2) Message Text를 IOLOGMSG.dll 에서 공유 Driver는 Customer Message Text를 제공가능 Code Number에서 customer Bit 이용 절차 Message Code와 연관된 Message 정의 File에 특정 Text 문자열을 작성 이 File을 Message Compiler로 Compile 생성한 Message Resource를 Driver와 결합 Message Compiler 사용 Driver를 Event Logging System 구성요소로 등록후 확인 Ch 13. Windows 관리 기구

Message Definition File 작성 Driver의 모든 Message를 기술한 File Header Section 실제 Message Definition내에 사용될수 있는 값들을 위한 이름정의 Message Section Message의 실제 Text를 포함 Message Text는 마지막 Keyword 다음에 시작 Message Text는 몇 개의 Line으로 구성 가능 끝은 한 개의 마침표(.)로 인식 Message Text는 특수 기호를 사용 ‘\b’ , ‘\t’ , ‘\r\n’ Ch 13. Windows 관리 기구

Header Section Keyword Description MessageIdTypedef = DataType 모든 Message Code에 적용되는 형변환 Severitynames = (name=number[:name]) Message Section 내에 4개의 severity값까지 사용 FacilityNames = (name=number[:name]) Message Section 내에 사용되는 Facility 이름 LanguageNames = (name=number[:filename]) Message Section 내에 사용되는 Language 이름 Ch 13. Windows 관리 기구

Message Section Keyword Description MessageID = [number/ +number] 이 Message에 할당된 16 Bit값 Severity = Severity name Message를 생성한 Facility SymbolicName = SymbolicName 생성된 Header File내의 Message Code 이름 Language = LanguageName Message와 관계된 Language ID Ch 13. Windows 관리 기구

Example Header Section MessageIdTypedef = NTSTATUS SeverityNames = ( Success = 0x0:STATUS_SEVERITY_SUCCESS Informational = 0x1:STATUS_SEVERITY_INFORMATIONAL Warning = 0x2:STATUS_SEVERITY_WARNING Error = 0x3:STATUS_SEVERITY_ERROR ) FacilityNames = ( System = 0x0 RpcRuntime = 0x2:FACILITY_RPC_RUNTIME RpcStubs = 0x3:FACILITY_RPC_STUBS Io = 0x4:FACILITY_IO_ERROR_CODE MyDriver = 0x7:FACILITY_MY_ERROR_CODE Ch 13. Windows 관리 기구

Example Message Section MessageId=0x0001 Facility=MyDriver Severity=Informational SymbolicName=MSG_LOGGING_ENABLED Language=English Event logging enabled for MyDriver. . MessageId=+1 SymbolicName=MSG_DRIVER_STARTING MyDriver has successfully initialized. Ch 13. Windows 관리 기구

Message Definition File Compiling(1) MC [-?cdosvw] [-herx argument] [-uU] filename.MC Parameter Description -c 모든 Message Code 안에 Customer Bit를 설정 -d Header안에 Facility와 severity Code에 십진수를 사용 -o OLE2 Header File을 생성 -s Message 각각의 처음 Line에 Symbolic Name을 삽입 -v 다양한 출력 -h 경로명 Header File이 생성되는 위치(기본은 현재 Directory) -e 확장자 Header File의 확장자(1~3문자) -r 경로명 RC와 Binary Message File이 생성되는 위치 -x 경로명 Debug File이 생성되는 위치 -u 입력 File이 Unicode임 -U Binary 안의 Message Text filename Compile 되는 Message Definition File Name Ch 13. Windows 관리 기구

Message Definition File Compiling(2) Compile 후 생성되는 Files filename.RC Message Definition File 내에서 사용된 모든 언어를 인식하는 Resource Control Script임 filename.H MC 입력 File안의 모든 Message Code Number를 위한 #define 구문을 포함하는 File MSGnnnnn.BIN 한가지 언어의 Message를 위한 모든 Text를 담고 있음 Message Definition File 내에 각 언어별로 개별적인 File을 생성 MC Utility로 Compile한 출력 File은 Driver 실행 File 자체에 포함됨 Ch 13. Windows 관리 기구

Driver를 Event Source로 등록 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\EventLog\System Driver의 실행File이름을 REG_MULTY_SZ type Source값에 추가 (.SYS확장자 제외) Driver로 같은 이름의 Key Value 추가 새로운 Key Value로 REG_EXPAND_SZ type의 EventMessageFile Value 생성 Message File 전체 경로의 이름을 ‘;’로 구분해서 반드시 포함 동일한 Key Value로 REG_DWORD type의 TypesSupported Value 생성 0x7 Value는 All Message type이 생성을 의미 Ch 13. Windows 관리 기구

Error Log Packet 할당(1) IoAllocateErrorLogEntry Function을 사용 Event를 처리하지 못하는 경우를 대비해 반드시 준비 3개의 Section으로 구성 Standard Header Driver에서 정의된 ULONGs 배열 (DumpData) 하나 또는 그 이상의 NULL종료 Unicode 삽입 문자열 Error Log Packet을 할당하기 전에 Packet의 크기를 결정 ERROR_LOG_MAXIMUM_SIZE를 넘으면 안됨 IoAllocateErrorLogEntry Function을 사용 Ch 13. Windows 관리 기구

Error Log Packet 할당(2) IO_ERROR_LOG_PACKET IO_ERROR_LOG_PACKET ErrorCode DumpDataSize NumberOfStrings StringOffset StringOffset … DumpData[] … “Second Unicode insertion string \0” “Second Unicode insertion string \0” Error Log Packet의 LayOut Ch 13. Windows 관리 기구

Logging Error(1) Packet이 할당되면 각 Field를 채움 Packet을 System Logging Thread로 전송 IoWriteErrorLogEntry Function 사용 위 Func 호출후엔 더 이상 Packet은 Driver의 소유가 아님 Driver가 Packet을 건드리면 안됨 Packet의 할당은 DISPATCH_LEVEL IRQL에서 사용 IO_ERROR_LOG_PACKET structure를 사용 Ch 13. Windows 관리 기구

Logging Error(2) IO_ERROR_LOG_PACKET, *PIO_ERROR_LOG_PACKET Parameter Description UCHAR MajorFuctionCode 현재 IRP의 IRP_MJ_XXX Code UCHAR RetryCount Retry 횟수 USHORT DumpDataSize Driver전용 Data Byte USHORT NumberOfStrings 삽입 문자열의 개수 USHORT StringOffset 처음 삽입 문자열의 Byte Offset USHORT EventCategory Driver Event File의 Event Category NTSTATUS ErrorCode IO_ERR_XXX ULONG UniqueErrorValue Driver 내에 Error가 발생한 곳 지정 NTSTATUS FinalStatus IRP의 STATUS_XXX 값 ULONG SequenceNumber 현재 IRP를 위해 Driver에서 할당된 숫자 … … … ULONG DumpData[1] DumpDataSize가 0인 경우, Driver 전용 Data Ch 13. Windows 관리 기구

4. Summary

Summary WMI 와 Event Logging을 Driver와 통합시키는 것은 매우 지루한 일임 하지만, 제품Driver에 System Reporting Mechanism은 필수로 제공되어야 함 Event를 통해 Error를 추적하는 기능은 문제점을 찾아내는데 필수적인 기능임 Ch 13. Windows 관리 기구