Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: ZwReadFile  (Прочитано 8526 раз)
0 Пользователей и 1 Гость смотрят эту тему.
chalex
Гость
« : 03-06-2004 05:20 » 

Ощибка видимо простая, но я её не вижу Жаль Пробую читать из файла открытого так ( сам файл txt )
 ZwCreateFile(&FileHandleVirtual,                         GENERIC_READ|GENERIC_WRITE|GENERIC_EXECUTE,                    &FileNameVirtualObj,&FileStatusVirtual,
                       0,
                       FILE_ATTRIBUTE_NORMAL,
                       0,
                       FILE_OPEN,
                       FILE_NON_DIRECTORY_FILE,
                       NULL,
                       0)
и  делаю вызов ZwReadFile:
ZwReadFile(FileHandleVirtual,
               NULL,
               NULL,
               NULL,
               &FileStatusVirtual,
               pExt->Inf->Information,
               BUFF_SIZE,
               NULL,
               NULL)
 но всегда получаю ошибку. Примера по чтению в DDK нет. Подскажите как быть Улыбаюсь .Заранее спасибо
Записан
maaaaaad
Гость
« Ответ #1 : 03-06-2004 08:33 » 

Цитата


RtlInitUnicodeString(&us,L"\\SystemRoot\\Temp\\test.txt");

InitializeObjectAttributes(&OA,&us,OBJ_CASE_INSENSITIVE,NULL,NULL);

ZwCreateFile(&FileHandleVirtual,
GENERIC_READ | GENERIC_WRITE, ////|GENERIC_EXECUTE,
&OA,
&FileStatusVirtual,
0,
FILE_ATTRIBUTE_NORMAL,
FILE_SHARE_WRITE, //// 0,  шары обязательно выстави
FILE_OPEN,
FILE_SYNCHRONOUS_IO_NONALERT, ////FILE_NON_DIRECTORY_FILE,
NULL,
0)
и делаю вызов ZwReadFile:
ZwReadFile(FileHandleVirtual,
NULL,
NULL,
NULL,
&FileStatusVirtual,
pExt->Inf->Information,  // тут буфер
BUFF_SIZE,
NULL,
NULL)

если ошибка, нужен код ошибки NTSTATUS
Записан
maaaaaad
Гость
« Ответ #2 : 03-06-2004 08:36 » 

Короче мкня уже достали вопросы с zwCreate zwReadWriteFile.....



PCSTR  DataToWrite      = "Hi, cruel world!";
PCWSTR FilePath = L"\\SystemRoot\\Temp\\test.txt";

NTSTATUS ReadFileTest() {
   NTSTATUS         ntStatus;
   IO_STATUS_BLOCK      IoStatus;
   HANDLE            hFile;
   OBJECT_ATTRIBUTES   ObjectAttributes;
   UNICODE_STRING      usFilePath;

   RtlInitUnicodeString(&usFilePath,FilePath);
   #if DBG
   DbgPrint(DRIVER_NAME "Attempting to open %wZ\n", &usFilePath);
   #endif

   InitializeObjectAttributes(&ObjectAttributes,
                        &usFilePath,
                        OBJ_CASE_INSENSITIVE,
                        NULL,
                        NULL);

   ntStatus = ZwCreateFile(&hFile,
                     SYNCHRONIZE | FILE_WRITE_DATA,
                     &ObjectAttributes,
                     &IoStatus,
                     NULL,
                     FILE_ATTRIBUTE_NORMAL,
                     FILE_SHARE_WRITE,
                     FILE_OPEN,
                     FILE_SYNCHRONOUS_IO_NONALERT,
                     NULL,
                            0 );

   if (!NT_SUCCESS(ntStatus)) {
      #if DBG
      DbgPrint(DRIVER_NAME "Error opening file %x\n", ntStatus);
      #endif
      ntStatus = STATUS_NO_SUCH_FILE;
      return ntStatus;
    }

   ntStatus = ZwWriteFile(hFile,
                     NULL,
                     NULL,
                     NULL,
                     &IoStatus,
                     (PVOID) DataToWrite,
                     strlen(DataToWrite),
                     NULL,
                     NULL);
   
   if(!NT_SUCCESS(ntStatus)) {
      #if DBG
      DbgPrint(DRIVER_NAME "Error writing file %x\n", ntStatus);
      #endif
      ntStatus = STATUS_UNSUCCESSFUL;
      return ntStatus;
   }

   ZwClose(hFile);
   return ntStatus;
}
Записан
chalex
Гость
« Ответ #3 : 03-06-2004 08:57 » 

Спасибо Отлично
Записан
Detsel
Гость
« Ответ #4 : 03-06-2004 12:42 » 

maaaaad Улыбаюсь Sorry но еще один вопрос по ZwCreateFile а как читать файл не из систем рут?? Пробую через \\C:\\test.txt функция возвращает ошибку... Жаль Как правильно задавать имя файла и путь к нему??
Записан
Detsel
Гость
« Ответ #5 : 03-06-2004 13:16 » new

Все, разобрался с этой ерундой!! всего навсего оказалось надо написать \\??\\c:\\test.txt
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines