"윈도우 커널 보안 및 드라이버 개발"독서 노트 - 색인 디렉토리
"윈도우 커널 보안 및 드라이버 개발"4.1 파일 작업
\ a.txt이 콘텐츠와 DbgPrint 출력 부를 이용하여 읽어에서 C.
#INCLUDE <ntifs.h> //이 프로그램이이 기능없이 제거 할 수 있도록 드라이버를 제거 할 수 없습니다, 설치 제거 기능을 제공합니다. VOID UnDriver (PDRIVER_OBJECT 드라이버) { KdPrint (( " 제거 드라이브 성공 " )); } // 항목 기능에 대응하는 메인. NTSTATUS DriverEntry (PDRIVER_OBJECT 드라이버, PUNICODE_STRING의 reg_path ) { // 파일 핸들이 반환되는 핸들 file_handle = NULL; // 반환 값 NTSTATUS 상태; // 파일 상태 IO_STATUS_BLOCK io_status; // 첫번째 OBJECT_ATTRIBUTE에 포함 된 초기화 파일 경로가 object_attributes를 OBJECT_ATTRIBUTES; UNICODE_STRING ufile_name = RTL_CONSTANT_STRING (L " \\ ?? \\ C : \\ a.txt이 " ); InitializeObjectAttributes ( & object_attributes, & ufile_name, OBJ_CASE_INSENSITIVE | OBJ_KERNEL_HANDLE, 없는, 없는); // 파일 FILE_OPEN_IF을 엽니 상태 = 에 ZwCreateFile ( & file_handle를, GENERIC_READ | GENERIC_WRITE, 및 object_attributes, & io_status, 없는, FILE_ATTRIBUTE_NORMAL, FILE_SHARE_READ, FILE_OPEN_IF, FILE_NON_DIRECTORY_FILE | FILE_RANDOM_ACCESS | FILE_SYNCHRONOUS_IO_NONALERT, 없는, 0 ); // 애플리케이션 버퍼 UCHAR 버피 [ 512 ]; // 판독하고, 파일의 내용을 출력 상태 = (ZwReadFile을 file_handle, NULL, NULL, NULL, io_status & BUF, 512 , NULL, NULL); // 인쇄 DbgPrint ( " %의 S " , 버피); 드라이버 -> DriverUnload = UnDriver; 반환 STATUS_SUCCESS를; }