/*++ Copyright (c) Microsoft Corporation. All rights reserved. THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. Module Name: faxext.h Abstract: Declarations of fax extension configuration and notification functions. --*/ #ifndef _FAX_EXT_H_ #define _FAX_EXT_H_ #if _MSC_VER > 1000 #pragma once #endif #ifdef __cplusplus extern "C" { #endif /************************************ * * * Extension configuration data * * * ************************************/ typedef enum { DEV_ID_SRC_FAX, // Device id is generated by the fax server DEV_ID_SRC_TAPI // Device id is generated by a TAPI TSP (of FSP). } FAX_ENUM_DEVICE_ID_SOURCE; // // Prototype of FaxExtGetData // DWORD FaxExtGetData ( DWORD dwDeviceId, // Device id (0 = No device) FAX_ENUM_DEVICE_ID_SOURCE DevIdSrc, // The source of the device id LPCWSTR lpcwstrDataGUID,// GUID of data LPBYTE *ppData, // (Out) Pointer to allocated data LPDWORD lpdwDataSize // (Out) Pointer to data size ); typedef DWORD (CALLBACK *PFAX_EXT_GET_DATA) (DWORD, FAX_ENUM_DEVICE_ID_SOURCE, LPCWSTR, LPBYTE *, LPDWORD); // // Prototype of FaxExtSetData // DWORD FaxExtSetData ( HINSTANCE hInst, // Instance of calling extension DWORD dwDeviceId, // Device id (0 = No device) FAX_ENUM_DEVICE_ID_SOURCE DevIdSrc, // The source of the device id LPCWSTR lpcwstrDataGUID,// GUID of data LPBYTE pData, // Pointer to data DWORD dwDataSize // Data size ); typedef DWORD (CALLBACK *PFAX_EXT_SET_DATA) (HINSTANCE, DWORD, FAX_ENUM_DEVICE_ID_SOURCE, LPCWSTR, LPBYTE, DWORD); HRESULT FaxExtConfigChange ( DWORD dwDeviceId, // The device for which configuration has changed LPCWSTR lpcwstrDataGUID, // Configuration name LPBYTE lpData, // New configuration data DWORD dwDataSize // Size of new configuration data ); typedef HRESULT (WINAPI *PFAX_EXT_CONFIG_CHANGE) (DWORD, LPCWSTR, LPBYTE, DWORD); // // Prototype of FaxExtRegisterForEvents // HANDLE FaxExtRegisterForEvents ( HINSTANCE hInst, // Instance of calling extension DWORD dwDeviceId, // Device id (0 = No device) FAX_ENUM_DEVICE_ID_SOURCE DevIdSrc, // The source of the device id LPCWSTR lpcwstrDataGUID,// GUID of data PFAX_EXT_CONFIG_CHANGE lpConfigChangeCallback ); typedef HANDLE (CALLBACK *PFAX_EXT_REGISTER_FOR_EVENTS) (HINSTANCE, DWORD, FAX_ENUM_DEVICE_ID_SOURCE, LPCWSTR, PFAX_EXT_CONFIG_CHANGE); // // Prototype of FaxExtUnregisterForEvents // DWORD FaxExtUnregisterForEvents ( HANDLE hNotification ); typedef DWORD (CALLBACK *PFAX_EXT_UNREGISTER_FOR_EVENTS) (HANDLE); // // Prototype of FaxExtFreeBuffer // VOID FaxExtFreeBuffer ( LPVOID lpvBuffer ); typedef VOID (CALLBACK *PFAX_EXT_FREE_BUFFER) (LPVOID); // // The extension should implement and export the following function: // HRESULT FaxExtInitializeConfig ( PFAX_EXT_GET_DATA, // Pointer to FaxExtGetExtensionData in service PFAX_EXT_SET_DATA, // Pointer to FaxExtSetExtensionData in service PFAX_EXT_REGISTER_FOR_EVENTS, // Pointer to FaxExtRegisterForExtensionEvents in service PFAX_EXT_UNREGISTER_FOR_EVENTS, // Pointer to FaxExtUnregisterForExtensionEvents in service PFAX_EXT_FREE_BUFFER // Pointer to FaxExtFreeBuffer in service ); typedef HRESULT (WINAPI *PFAX_EXT_INITIALIZE_CONFIG) (PFAX_EXT_GET_DATA, PFAX_EXT_SET_DATA, PFAX_EXT_REGISTER_FOR_EVENTS, PFAX_EXT_UNREGISTER_FOR_EVENTS, PFAX_EXT_FREE_BUFFER); #ifdef __cplusplus } #endif #endif // _FAX_EXT_H_