Функция FaxDevVirtualDeviceCreation (faxdev.h)

Служба факсов вызывает функцию FaxDevVirtualDeviceCreation во время инициализации, чтобы разрешить поставщику услуг факсов (FSP) представлять виртуальные факсимильные устройства. Каждый FSP, который представляет виртуальные факсимильные устройства службе факсов, должен экспортировать функцию FaxDevVirtualDeviceCreation .

Синтаксис

BOOL FaxDevVirtualDeviceCreation(
  [out] LPDWORD   DeviceCount,
  [out] LPWSTR    DeviceNamePrefix,
  [out] LPDWORD   DeviceIdPrefix,
  [in]  HANDLE    CompletionPort,
  [in]  ULONG_PTR CompletionKey
);

Параметры

[out] DeviceCount

Тип: LPDWORD

Указатель на переменную DWORD без знака, которая получает количество виртуальных факсимильных устройств, которые служба факсов должна создать для FSP. Если FSP задает для этого параметра нулевое значение, инициализация поставщика завершится ошибкой.

[out] DeviceNamePrefix

Тип: LPWSTR

Указатель на переменную, которая получает строку символов Юникода, завершающуюся null, ограниченную 128 символами WCHAR . FSP должен задать для этой строки префикс имени виртуального факсимильного устройства. Служба факсов добавляет к этой строке значение параметра DeviceIdPrefix . Результатом является уникальное имя устройства для каждого виртуального факсимильного устройства, создаваемого службой факсов.

[out] DeviceIdPrefix

Тип: LPDWORD

Указатель на переменную DWORD без знака, которая получает ненулевое значение. FSP должен задать этому члену уникальное числовое значение, которое идентифицирует виртуальное факсимильное устройство. Служба факсов добавляет это значение к последовательному номеру, начиная с нуля для первого виртуального устройства. Результатом является уникальный идентификатор устройства для каждого виртуального факсимильного устройства, создаваемого службой факсов.

[in] CompletionPort

Тип: HANDLE

Указывает дескриптор, который FSP должен использовать для отправки пакетов портов завершения ввода-вывода в службу факсов для асинхронных событий состояния строки. В настоящее время функция FaxDevVirtualDeviceCreation поддерживает только событие, которое сигнализирует о входящем вызове.

Пакет порта завершения должен быть структурой TAPI 2.x LINEMESSAGE . FSP должен выделить память для структуры с помощью LocalAlloc(LPTR, sizeof(LINEMESSAGE)). Поставщик службы факсов должен передать размер выделенной памяти (в данном случае это sizeof(LINEMESSAGE) параметру dwNumberOfBytesTransferred метода PostQueuedCompletionStatus . Служба факсов освобождает память, выделенную для структуры пакетов завершения.

FSP должен задать члены структуры следующим образом.

Член Содержимое
hDevice Задайте значение DeviceId из faxDevStartJob
dwMessageID Задайте значение 0.
dwCallbackInstance Задайте значение 0.
dwParam1 Задайте значение LINEDEVSTATE_RINGING
dwParam2 Задайте значение 0.
dwParam1 Задайте значение 0.
 

Сведения о событиях состояния строк см. в разделе LINEDEVSTATE_ константы в документации ПО TAPI. Сведения о портах завершения ввода-вывода см. в разделе Порты завершения ввода-вывода.

[in] CompletionKey

Тип: ULONG_PTR

Задает значение ключа завершения. FSP должен использовать это значение, когда поставщик отправляет пакеты портов завершения в службу факсов. FSP должен передать это непрозрачное значение в функцию PostQueuedCompletionStatus .

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

Тип: BOOL

Если функция выполнена успешно, возвращаемое значение будет ненулевым.

Если функция выполняется неудачно, возвращается нулевое значение. Чтобы получить расширенные сведения об ошибке, служба факсов вызывает GetLastError.

Комментарии

Служба факсов проверяет библиотеку DLL FSP для функции FaxDevVirtualDeviceCreation во время инициализации. Если FSP экспортирует функцию, служба факсов предполагает, что поставщик будет представлять виртуальные факсимильные устройства. Служба факсов обрабатывает виртуальные факсимильные устройства так же, как и физические факсимильные устройства. После инициализации нет никакой разницы между функциональностью или операцией FSP, который представляет виртуальные факсимильные устройства, и тем, который не предоставляет их.

Если FSP использует физические факсимильные устройства, TAPI и поставщик услуг телефонии перечисляют устройства для службы факсов. Если FSP не имеет физических факсимильных устройств и предоставляет только виртуальные факсимильные устройства, поставщик служб не будет существовать, а TAPI не будет перечислять устройства. В этом случае FaxDevVirtualDeviceCreation предоставляет перечисление виртуальных факсимильных устройств для службы факсов.

Требования

   
Минимальная версия клиента Windows 2000 Professional, Windows XP [только классические приложения]
Минимальная версия сервера Windows Server 2003 [только классические приложения]
Целевая платформа Windows
Header faxdev.h

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

Создание пакета завершения

Функции поставщика службы факсов

FaxDevInitialize

FaxDevStartJob

LINEMESSAGE

PostQueuedCompletionStatus

Использование виртуального устройства для передачи факса

Использование API поставщика службы факсов

Виртуальные факсимильные устройства