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

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Проблемы c PDO  (Прочитано 4603 раз)
0 Пользователей и 1 Гость смотрят эту тему.
bumblebee
Гость
« : 13-10-2004 08:35 » 

Ситуация следующая:
Я пишу WDM-драйвер PS/CS для ридера смарт-карт. Проблема состоит в том что мне необходима многослойная структура,поэтому выбран WDM-драйвер. Ридер подключается к последовательному порту(COM1 или COM2),но сам ридер не является утройством PnP,поскольку не имеет управляющих сигналов DSR и т.д. Поэтому в функции AddDevice
Я пытаюсь PDO проинициализировать в ручную: мне необходимо вручную к объекту PhysicalDeviceObject  зацепить коммуникационный порт.


NTSTATUS
UNC08RDAddDevice(
             IN PDRIVER_OBJECT DriverObject,
             IN PDEVICE_OBJECT PhysicalDeviceObject
             )
/*++

Routine Description:

    This routine creates an object for the physical device specified and
    sets up the deviceExtension.

--*/
{
    PDEVICE_EXTENSION deviceExtension;
    NTSTATUS status = STATUS_SUCCESS;
    PREADER_EXTENSION readerExtension;
    PSMARTCARD_EXTENSION smartcardExtension;
    ULONG deviceInstance;
    PDEVICE_OBJECT DeviceObject = NULL;
    UNICODE_STRING ntDeviceName;  


Для этого я вызываю следующий блок:

RtlInitUnicodeString(&ntDeviceName, L"\\Device\\Serial0");

status = IoGetDeviceObjectPointer(
                    &ntDeviceName,
                    FILE_WRITE_DATA,
               &deviceExtension->fileObject,
               &PhysicalDeviceObject);
 


ATTACHED_DEVICE_OBJECT =
        IoAttachDeviceToDeviceStack(
                                   DeviceObject,
                                   PhysicalDeviceObject
                                   );








Эти две функции нормально все отрабатывают но при вызове функции:


status = IoRegisterDeviceInterface(PhysicalDeviceObject,
                                           &SmartCardReaderGuid,
                                           NULL,
                                           &deviceExtension->PnPDeviceName
                                          );
     

Функция возвращает STATUS_INVALID_DEVICE_REQUEST,что говорит о том что PDO не правильный.


Скажите пожалуйста что я делаю не так? Как мне вручную проинициализировать PDO на коммуникационный порт?

Заранее благодарен.

С Уважением Владислав.
Записан
bumblebee
Гость
« Ответ #1 : 13-10-2004 10:33 » 

Спасибо Всем! Но уже разобрался как это сделать. Проблема закрыта.
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines