Как подключаться к драйверу в программе

Тема в разделе "WASM.ELECTRONICS", создана пользователем theTrueMayhem, 24 ноя 2005.

  1. theTrueMayhem

    theTrueMayhem New Member

    Публикаций:
    0
    Регистрация:
    18 окт 2005
    Сообщения:
    1
    Я пробовал подключаться таким образом



    int main(int argc, char* argv[])

    {

    // main

    char BufferToTrans[MAX_TRANSFER];

    DWORD dwBytesWritten;

    int a;



    HANDLE hDevice = CreateFile("\\\\.\\Something",

    0,0,NULL, OPEN_EXISTING, 0,NULL);



    if (hDevice == INVALID_HANDLE_VALUE)

    {

    printf("Unable to open Something device - Error %d\n", GetLastError());

    return 1;

    }

    ...

    }



    Но что бы я не ставил заместо Something мне все время пишет что не может найти такой файл. Вроде если драйвер есть в стеке драйверов то он должен спокойно вызываться с помощью этой функции, но почему то не находиться! В чем проблема? Есть другие варианты? Правда более сложные не осилю , если даже этот не выходит..
     
  2. Four-F

    Four-F New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2002
    Сообщения:
    1.237
    "\\\\.\\Something" превратится в имя символьной ссылки "\\??\\Something". Для начала надо убедится, что такая символьная ссылка существует. Под NT линейкой проще всего это сделать с помощью WinObjEx (есть на этом сайте): в диалоге поиска ограничить поиск по объектам SymbolicLink и набрать Something. Если такая ссылка есть, то желательно явно определить параметры dwDesiredAccess и dwShareMode иначе запрос эксклюзивного доступа может быть отклонён. Если всё равно случается облом, то смотреть код ошибки. Если ERROR_ACCESS_DENIED, то значит драйвер отклоняет запрос на открытие по какой-то причине.



    Вот это должно работать точно:


    Код (Text):
    1. CreateFile( "\\\\.\\A:", GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL );