Обмен данными между Драйвером и пользовательским приложением

Тема в разделе "WASM.BEGINNERS", создана пользователем lisij, 16 май 2006.

  1. lisij

    lisij New Member

    Публикаций:
    0
    Регистрация:
    16 май 2006
    Сообщения:
    11
    Добрый день коллеги, братья, друзъя и единомышленники.

    Написал драйвер и приложение которе юзает этот драйвер через вызовы IOCTL, а вот понять как передать данные из драйвера в приложение не могу, и соотвественно как передать данные из приложения в драйвер. Прошу помощи в разъяснении данной темы.

    Заранее благодарен lisij
     
  2. SteelRat

    SteelRat New Member

    Публикаций:
    0
    Регистрация:
    26 авг 2004
    Сообщения:
    409
    В DeviceIoControl есть указатель на входной и выходной буфера, соответственно и их длина. Вот через эти буфера передавай данные ;)
     
  3. Koshak

    Koshak New Member

    Публикаций:
    0
    Регистрация:
    21 фев 2006
    Сообщения:
    31
    Адрес:
    Russia
    Вот кусок кода, который работает:



    #include "Winioctl.h"

    #include "stdlib.h"



    #define IOCTL_READ_OBJ_INFO CTL_CODE(FILE_DEVICE_UNKNOWN, 0x800, METHOD_BUFFERED, FILE_ANY_ACCESS)



    typedef struct { // в драйвер передаём адрес объекта, которого хотим прощупать (это входной буфер)

    PVOID ObjAddr;

    } RMD_IN;



    typedef struct { // имя устройства ассоциированного с объектом (это выходной буфер)

    char Name[256];

    } RMD_OUT;



    // соответственно в драйвере тоже должны быть описаны эти структуры и IOCTL_READ_OBJ_INFO



    int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow){



    ................................



    HANDLE HDrv=CreateFile("\\\\.\\Protect",GENERIC_ALL,0,NULL,OPEN_EXISTING,NULL ,NULL);





    RMD_IN rmd_in;

    RMD_OUT rmd_out;

    ULONG LBytesRecvd;

    rmd_in.ObjAddr=(PVOID)system_handles->Information.Object;

    DeviceIoControl(HDrv,IOCTL_READ_OBJ_INFO,&rmd_in,sizeof(RMD_IN),&rmd_out,sizeof(RMD_OUT),&LBytesRecvd,NULL);





    .....................................

    return 0;

    }
     
  4. lisij

    lisij New Member

    Публикаций:
    0
    Регистрация:
    16 май 2006
    Сообщения:
    11
    Спасибо друзъя.
     
  5. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Человек решил сходу наломать дров, не потрудившись изучить предметный материал :-\