Работа с сетевыми ресурсами из ring 0

Тема в разделе "WASM.NT.KERNEL", создана пользователем DeRekX, 6 окт 2008.

  1. DeRekX

    DeRekX New Member

    Публикаций:
    0
    Регистрация:
    21 июл 2007
    Сообщения:
    98
    Адрес:
    Russia
    Необходимо результаты драйвера сохранять в расшаренную папку.

    Из ring 3 всё работает:
    Код (Text):
    1. HANDLE hFile1 = CreateFile(
    2.         "\\\\Igor-a7d163c43d\\D\\1.txt",
    3.         FILE_READ_ACCESS|FILE_SHARE_WRITE,
    4.         0,
    5.                       ...
    6.                        );
    7. if (!ReadFile(hFile1,&tmpbuf,nNumberOfBytesToRead,&lpNumberOfBytesRead,NULL) )
    8.     {
    9.             ...
    10.             }
    Из ring0 делаю так:

    Код (Text):
    1. #define  INFullNameFile L"\\Device\\LanmanRedirector\\Igor-a7d163c43d\\D\\1.txt"
    2.    
    3.     RtlInitUnicodeString(&FullFileName, INFullNameFile);
    4.     InitializeObjectAttributes ( &ObjectAttributes,
    5.         &FullFileName,
    6.         OBJ_CASE_INSENSITIVE,
    7.         NULL,
    8.         NULL );
    9.  
    10.     NTStatus = ZwCreateFile(&HandleFile,
    11.         SYNCHRONIZE|GENERIC_WRITE,
    12.         &ObjectAttributes,
    13.         &IoStatus,
    14.         NULL,                        
    15.         FILE_ATTRIBUTE_NORMAL,
    16.         FILE_SHARE_WRITE,
    17.         FILE_OPEN_IF,
    18.         FILE_WRITE_THROUGH|FILE_SYNCHRONOUS_IO_NONALERT,
    19.         NULL,  
    20.         0 );  
    21.  
    22.     if ( !NT_SUCCESS(NTStatus) )
    23.     {
    24.         KdPrint(("ZwCreateFile( %ws ) = 0x%.8x \n", INFullNameFile, NTStatus));
    25.         return 0;
    26.     }
    завершается с ошибкой 0xc0000022 = STATUS_ACCESS_DENIED

    Как записать файл на расшаренный диск ?
    Как запустить драйвер с расшаренного диска?

    НА WMWare проблема решается следующим образом

    В полном имени к папке или файлу, следует использовать такой путь :

    В драйвере L"\\??\\UNC\\.host\\Shared Folders\\1\\logs\Data.log"

    В GUI программке L"\\\\.host\\Shared Folders\\1\\logs\\Struct.log"

    при этом в WMWare: WM-Settings-Options-Shared Folder создана папка 1, ссылающаяся на локальную папку.