DeviceIoControl

Тема в разделе "WASM.WIN32", создана пользователем cresta, 28 янв 2006.

  1. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    Может ли DeviceIoControl в качестве входного и выходного буфера принимать один и тот же адрес (т.е. чтобы данные, передаваемые в драйвер, переписывались драйвером и возвращались в юзер по прежнему - переданному - адресу)

    Перепробовал кучу флагов - ни в какую :dntknw:

    OutputBuffer возвращается с данными, которые передавал как InputBuffer.
     
  2. psw1

    psw1 New Member

    Публикаций:
    0
    Регистрация:
    15 янв 2006
    Сообщения:
    8
    А почему нет? Вот пример из Бестскриптовского SDK

    strcpy(bufHead->Signature, "LOCOS97 ");

    res = ::lol: eviceIoControl( hDevice, CtlCode,

    Buffer, BufferSize,

    Buffer, BufferSize, &lBytesReturned, NULL);

    ::CloseHandle(hDevice);

    if (!res)

    return FALSE;

    if (strncmp(bufHead->Signature,"LS06CXX ",8) != 0

    return FALSE;



    Сигнатура в буфере меняется точно.

    IOCTL описаны так:

    #define IOCTL_PRIVATE_MAP_BCDISK \

    CTL_CODE(IOCTL_DISK_BASE, 0x803, METHOD_IN_DIRECT,\

    FILE_ANY_ACCESS)
     
  3. Four-F

    Four-F New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2002
    Сообщения:
    1.237
    <font color="gray][ cresta</font><!--color--><font color="gray]: Может ли DeviceIoControl в качестве входного и выходного буфера принимать один и тот же адрес ]</font><!--color-->



    Может. nOutBufferSize проверь (не 0 ли).
     
  4. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    Разобрался: IoStatus.Information был ноль