传真服务在初始化期间调用 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 结尾的 Unicode 字符串,限制为 128 个 WCHAR 字符。 FSP 必须将此字符串设置为虚拟传真设备的名称前缀。 传真服务将 DeviceIdPrefix 参数的值追加到此字符串。 结果是传真服务创建的每个虚拟传真设备的唯一设备名称。
[out] DeviceIdPrefix
类型: LPDWORD
指向接收非零值的无符号 DWORD 变量的指针。 FSP 必须将此成员设置为标识虚拟传真设备的唯一数值。 对于第一个虚拟设备,传真服务将此值添加到从零开始的序列号。 结果是传真服务创建的每个虚拟传真设备的唯一设备标识符。
[in] CompletionPort
类型: 句柄
指定 FSP 必须使用该句柄将 I/O 完成端口数据包发布到传真服务,以便进行异步行状态事件。 目前, FaxDevVirtualDeviceCreation 函数仅支持发出传入呼叫信号的事件。
完成端口数据包必须是 TAPI 2.x LINEMESSAGE 结构。 FSP 必须为 具有 LocalAlloc (LPTR、size 为 (LINEMESSAGE) ) 的结构分配内存。 在这种情况下,传真服务提供商必须将分配 (的内存大小 (LINEMESSAGE) ) 传递给 PostQueuedCompletionStatus 方法的 dwNumberOfBytesTransferred 参数。 传真服务释放为完成数据包结构分配的任何内存。
FSP 必须按如下所示设置结构的成员。
| 成员 | 目录 |
|---|---|
| hDevice | 从 FaxDevStartJob 设置为 DeviceId |
| dwMessageID | 设置为 0 |
| dwCallbackInstance | 设置为 0 |
| dwParam1 | 设置为 LINEDEVSTATE_RINGING |
| dwParam2 | 设置为 0 |
| dwParam1 | 设置为 0 |
有关行状态事件的信息,请参阅 TAPI 文档中 的LINEDEVSTATE_常量 。 有关 I/O 完成端口的信息,请参阅 I/O 完成端口。
[in] CompletionKey
类型: ULONG_PTR
指定完成键值。 当提供程序将完成端口数据包发布到传真服务时,FSP 必须使用此值。 FSP 应将此不透明值传递给 PostQueuedCompletionStatus 函数。
返回值
类型: BOOL
如果函数成功,则返回值为非零值。
如果函数失败,则返回值为零。 若要获取扩展错误信息,传真服务会调用 GetLastError。
备注
传真服务在初始化期间检查 FSP DLL 中 是否有 FaxDevVirtualDeviceCreation 函数。 如果 FSP 导出函数,则传真服务会假定提供程序将提供虚拟传真设备。 传真服务处理虚拟传真设备的方式与处理物理传真设备的方式相同。 初始化后,显示虚拟传真设备的 FSP 与不提供虚拟传真设备的 FSP 的功能或操作之间没有区别。
当 FSP 使用物理传真设备时,TAPI 和电话服务提供商 (TSP) 枚举传真服务的设备。 如果 FSP 没有物理传真设备,并且它仅提供虚拟传真设备,则 TSP 将不存在,TAPI 不会枚举这些设备。 在此实例中, FaxDevVirtualDeviceCreation 提供传真服务的虚拟传真设备枚举。
要求
| 最低受支持的客户端 | Windows 2000 专业版、Windows XP [仅限桌面应用] |
| 最低受支持的服务器 | Windows Server 2003 [仅限桌面应用] |
| 目标平台 | Windows |
| 标头 | faxdev.h |