Поделиться через


функция обратного вызова SW_DEVICE_CREATE_CALLBACK (swdevice.h)

Предоставляет устройству резервную копию в реестре и позволяет вызывающей стороне выполнять вызовы функций API устройства программного обеспечения с помощью дескриптора hSwDevice .

Синтаксис

SW_DEVICE_CREATE_CALLBACK SwDeviceCreateCallback;

void SwDeviceCreateCallback(
  [in]           HSWDEVICE hSwDevice,
  [in]           HRESULT CreateResult,
  [in, optional] PVOID pContext,
  [in, optional] PCWSTR pszDeviceInstanceId
)
{...}

Параметры

[in] hSwDevice

Дескриптор для программного устройства.

[in] CreateResult

HrESULT, указывающий, успешно ли выполнено перечисление программного устройства.

[in, optional] pContext

Контекст, который был дополнительно предоставлен клиентским приложением для SwDeviceCreate.

[in, optional] pszDeviceInstanceId

Идентификатор экземпляра устройства, назначенный PnP устройству.

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

None

Remarks

Операционная система вызывает функцию обратного вызова SW_DEVICE_CREATE_CALLBACK после перечисления устройства PnP. После вызова функции обратного вызова устройство имеет резервную копию в реестре, и вызовы функций API программного устройства можно выполнить с помощью дескриптора hSwDevice . Вы также можете использовать другие API, которые работают с устройствами для созданного устройства.

Перечисление PnP устройства — это первый шаг, который выполняется устройством. После перечисления PnP устройство имеет только резервную копию реестра, и вы можете задать свойства для устройства. Только потому, что PnP перечислил устройство, устройство еще не запущено, и ни один драйвер для устройства еще не зарегистрировал или не включил интерфейсы. Во многих случаях рекомендуется, чтобы приложения ждали поступления интерфейса устройства, если они хотят использовать устройство.

Примечание Функция обратного вызова предоставляет идентификатор экземпляра устройства для созданного устройства. Мы рекомендуем, чтобы вызывающие объекты API программного устройства не пытались угадать или самостоятельно создать идентификатор экземпляра устройства. всегда используйте значение, предоставленное функцией обратного вызова.
 
Функция обратного вызова будет выполняться в произвольном потоке пула. Клиентские приложения могут выполнять столько работы, сколько необходимо в функции обратного вызова.

В Windows 8 нельзя вызвать SwDeviceClose внутри функции обратного вызова. Это приведет к взаимоблокировки. Будьте осторожны при освобождении объекта ref counted, который будет вызывать SwDeviceClose при выполнении деструктора. В Windows 8.1 это ограничение снимается, и вы можете вызвать SwDeviceClose внутри функции обратного вызова.

Всегда проверка HRESULT, который передается в CreateResult, чтобы убедиться, что PnP смог перечислить устройство.

Требования

Требование Значение
Минимальная версия клиента Windows 8
Минимальная версия сервера Windows Server 2012
Целевая платформа Персональный компьютер
Верхняя часть swdevice.h

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

SwDeviceCreate