"윈도우 커널 보안 및 드라이버 개발"4.1 파일 작업

"윈도우 커널 보안 및 드라이버 개발"독서 노트 - 색인 디렉토리

"윈도우 커널 보안 및 드라이버 개발"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를;
}

 

추천

출처www.cnblogs.com/onetrainee/p/11995226.html