Доступ к пайпам

Тема в разделе "WASM.NT.KERNEL", создана пользователем Begemot, 27 мар 2007.

Статус темы:
Закрыта.
  1. Begemot

    Begemot New Member

    Публикаций:
    0
    Регистрация:
    28 ноя 2006
    Сообщения:
    79
    Господа, такой вопрос.
    Как можно открыть именованый пайп, созданный в юзермоудном приложении?
    Пытаюсь зделать это так:
    Код (Text):
    1. WCHAR wszPipeName[] = L"\\??\\pipe\\MyPipe";
    2. OBJECT_ATTRIBUTES oa;
    3. UNICODE_STRING usPipe;
    4. IO_STATUS_BLOCK IoStatusBlock;
    5. HANDLE hPipe;
    6.  
    7. RtlInitUnicodeString (&usPipe, wszPipeName);
    8. InitializeObjectAttributes (
    9.     &oa,
    10.     &usPipe,      
    11.     OBJ_CASE_INSENSITIVE | OBJ_KERNEL_HANDLE,
    12.     NULL,
    13.     NULL
    14. );
    15.  
    16. res=NtCreateFile(&hPipe, GENERIC_READ | GENERIC_WRITE | SYNCHRONIZE, &oa,
    17. &IoStatusBlock, NULL, FILE_ATTRIBUTE_NORMAL,FILE_SHARE_READ | FILE_SHARE_WRITE,
    18. FILE_OPEN, FILE_SYNCHRONOUS_IO_NONALERT | FILE_NON_DIRECTORY_FILE, NULL,0);
    19.  
    20. // В этом месте имеем res=0xC0000005 (STATUS_ACCESS_VIOLATION)
    Что ему еще нужно?

    Спасибо
     
  2. slow

    slow New Member

    Публикаций:
    0
    Регистрация:
    27 дек 2004
    Сообщения:
    615
    Код (Text):
    1. [u][b]@[/b][/u]IoStatusBlock,
    @IoStatusBlock,
     
  3. slow

    slow New Member

    Публикаций:
    0
    Регистрация:
    27 дек 2004
    Сообщения:
    615
    Глючит чего-то. В общем, так
    @IoStatusBlock,
     
  4. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    slow
    Синтаксис делфи для ring0 кода? :)
     
  5. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    гыгыг. может быть &IoStatusBlock ?))
     
  6. Begemot

    Begemot New Member

    Публикаций:
    0
    Регистрация:
    28 ноя 2006
    Сообщения:
    79
    Пардон, господа.
    Амперсанд(&) на месте. Я как-то скопировал криво... Дело не в нем...
     
  7. slow

    slow New Member

    Публикаций:
    0
    Регистрация:
    27 дек 2004
    Сообщения:
    615
    Ну бывает, запарка просто :)) Пишу то параллельно на дельфи и си, так што бывает, путается что-то
     
  8. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
     
  9. slow

    slow New Member

    Публикаций:
    0
    Регистрация:
    27 дек 2004
    Сообщения:
    615
    Ты еще забыл RtlZeroMemory к oa применить, это обязательно.
     
  10. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    slow
    нет, не обязательно. InitializeObjectAttributes заполнит все, что нужно.
     
  11. Begemot

    Begemot New Member

    Публикаций:
    0
    Регистрация:
    28 ноя 2006
    Сообщения:
    79
    slow
    Спасибо, буду знать. Но не помогло... :dntknw:

    Тю...
     
  12. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Begemot
    Это не обязательно.
    Мою цитату прочитал? Что лежит в IoStatusBlock.Status
     
  13. slow

    slow New Member

    Публикаций:
    0
    Регистрация:
    27 дек 2004
    Сообщения:
    615
    2 Great: возможно, не проверял, просто иногда вручную заполняю, иногда этой функцией, и по привычке ставлю RtlZeroMemory
     
  14. Begemot

    Begemot New Member

    Публикаций:
    0
    Регистрация:
    28 ноя 2006
    Сообщения:
    79
    Ерунда какая-то. Огромное число, и каждый раз меняется.
    Вывожу так:
    DPRINT("IOStatus=%0X", IoStatusBlock.Information);
     
  15. Begemot

    Begemot New Member

    Публикаций:
    0
    Регистрация:
    28 ноя 2006
    Сообщения:
    79
    Возможно будет проще создть пайп из-под драйвера и зделать его доступным для юзермоуда?
     
  16. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    >>>OBJ_KERNEL_HANDLE
    ы, зачем?
     
  17. Begemot

    Begemot New Member

    Публикаций:
    0
    Регистрация:
    28 ноя 2006
    Сообщения:
    79
    n0name
    Пробовал и без этого. Без результатно.

    Ищу в чем еще может быть трабла, но пока ничего не нашел :dntknw:
     
  18. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Матчасть не пробовали изучать? Этот форум круче бегиннерсов становится..
    Или это весеннее обострение драйверописательства? :)
     
  19. Begemot

    Begemot New Member

    Публикаций:
    0
    Регистрация:
    28 ноя 2006
    Сообщения:
    79
    Больше идей нет?
     
  20. Cr4sh

    Cr4sh New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2006
    Сообщения:
    668
    Код (Text):
    1. HANDLE PipeHandle;
    2. IO_STATUS_BLOCK PipeStatusBlock;
    3.  
    4. // ...
    5.  
    6. NTSTATUS ConnectToPipe(void)
    7. {
    8.     UNICODE_STRING PipeUnicodeString;
    9.     OBJECT_ATTRIBUTES PipeObjectAttributes;
    10.     NTSTATUS ns;
    11.    
    12.     RtlInitUnicodeString(&PipeUnicodeString, L"\\Device\\NamedPipe\\my_pipe");
    13.    
    14.     InitializeObjectAttributes(&PipeObjectAttributes, &PipeUnicodeString,
    15.         OBJ_CASE_INSENSITIVE + OBJ_KERNEL_HANDLE, NULL, NULL);
    16.  
    17.     ns = ZwCreateFile(&PipeHandle, FILE_WRITE_DATA + SYNCHRONIZE, &PipeObjectAttributes, &PipeStatusBlock,
    18.         0, FILE_ATTRIBUTE_NORMAL, 0, FILE_OPEN, FILE_SYNCHRONOUS_IO_NONALERT, NULL, 0);
    19.     if (!NT_SUCCESS(ns))
    20.     {
    21.         DbgMsg("ZwCreateFile() error; Status: 0x%.8x\n", ns);
    22.     }
    23.  
    24.     return ns;
    25. }
     
Статус темы:
Закрыта.