Функция PcInitializeAdapterDriver (portcls.h)

Функция PcInitializeAdapterDriver связывает драйвер адаптера с системным драйвером PortCls. Обработчики IRP и обработчики для добавления и удаления устройств устанавливаются в объект драйвера. Драйверы адаптера, которые должны быть привязаны к нескольким драйверам классов, не должны вызывать эту функцию.

Синтаксис

PORTCLASSAPI NTSTATUS PcInitializeAdapterDriver(
  [in] PDRIVER_OBJECT     DriverObject,
  [in] PUNICODE_STRING    RegistryPathName,
  [in] PDRIVER_ADD_DEVICE AddDevice
);

Параметры

[in] DriverObject

Указатель на объект драйвера, который представляет собой системную структуру типа DRIVER_OBJECT. Этот указатель передается в качестве параметра функции DriverEntry адаптера.

[in] RegistryPathName

Указывает имя пути к реестру, которое будет передано в качестве параметра в функцию DriverEntry адаптера.

[in] AddDevice

Указатель на функцию AddDevice адаптера. Это указатель типа PDRIVER_ADD_DEVICE, который определен в ntddk.h следующим образом:

  NTSTATUS
    (*PDRIVER_ADD_DEVICE)(
      IN struct _DRIVER_OBJECT  *DriverObject,
      IN struct _DEVICE_OBJECT  *PhysicalDeviceObject
        );

Возвращаемое значение

PcInitializeAdapterDriver возвращает STATUS_SUCCESS, если вызов был выполнен успешно. В противном случае возвращается соответствующий код ошибки.

Комментарии

Обработчик AddDevice , предоставленный в вызове этой функции, должен вызывать PcAddAdapterDevice. Дополнительные сведения см. в разделе Последовательность запуска.

Функция PcInitializeAdapterDriver загружает указатели на обработчики для следующих irP в объект драйвера:

  • IRP_MJ_CLOSE
  • IRP_MJ_CREATE
  • IRP_MJ_DEVICE_CONTROL
  • IRP_MJ_FLUSH_BUFFERS
  • IRP_MJ_PNP
  • IRP_MJ_POWER
  • IRP_MJ_QUERY_SECURITY
  • IRP_MJ_READ
  • IRP_MJ_SET_SECURITY
  • IRP_MJ_SYSTEM_CONTROL
  • IRP_MJ_WRITE
PortCls использует собственные внутренние обработчики для описанных выше инструкций CREATE, PNP, POWER и SYSTEM_CONTROL IRP. Он использует обработчики KS по умолчанию для других семи irP.

Драйвер адаптера, который перезаписывает один или несколько приведенных выше указателей указателем на собственный обработчик IRP, может вызывать PcDispatchIrp из подпрограммы обработчика, чтобы перенаправить IRP в PortCls. Пример кода см. в примере аудиодрайвера SB16 в комплекте драйверов Microsoft Windows (WDK).

Требования

Требование Значение
Минимальная версия клиента Системный драйвер PortCls реализует функцию PcInitializeAdapterDriver в Microsoft Windows 98/Me, а также в Операционных системах Windows 2000 и более поздних версий.
Целевая платформа Универсальное
Верхняя часть portcls.h (включая Portcls.h)
Библиотека Portcls.lib
IRQL PASSIVE_LEVEL

См. также раздел

AddDevice

DRIVER_OBJECT

DriverEntry

PcAddAdapterDevice

PcDispatchIrp