|
|
/*++
Copyright (c) 2000 Microsoft Corporation
Module Name:
winfax.cpp
Abstract:
A wrapper DLL that provides old WinFax.dll support from the new (private) DLL
Author:
Eran Yariv (EranY) Jun, 2000
Revision History:
Remarks:
FAXAPI is defined in the sources file as the name of the private DLL to actualy use.
--*/
#define _WINFAX_
#include <winfax.h>
#include <DebugEx.h>
#include <faxutil.h>
#include <tchar.h>
#include <faxreg.h>
#include <FaxUIConstants.h>
extern "C" DWORD DllMain( HINSTANCE hInstance, DWORD dwReason, LPVOID lpvContext ) { BOOL bRes = TRUE; DBG_ENTER (TEXT("DllMain"), bRes, TEXT("Reason = %d"), dwReason);
switch (dwReason) { case DLL_PROCESS_ATTACH: DisableThreadLibraryCalls( hInstance ); break;
case DLL_PROCESS_DETACH: HeapCleanup(); break; } return bRes; }
/****************************************************************************
L e g a c y f u n c t i o n s w r a p p e r s
****************************************************************************/
extern "C" BOOL WINAPI WinFaxAbort( HANDLE FaxHandle, // handle to the fax server
DWORD JobId // identifier of fax job to terminate
) { return FaxAbort (FaxHandle, JobId); }
extern "C" BOOL WINAPI WinFaxAccessCheck( HANDLE FaxHandle, // handle to the fax server
DWORD AccessMask // set of access level bit flags
) { return FaxAccessCheck (FaxHandle, AccessMask); }
extern "C" BOOL WINAPI WinFaxClose( HANDLE FaxHandle // fax handle to close
) { return FaxClose (FaxHandle); }
extern "C" BOOL WINAPI WinFaxCompleteJobParamsA( PFAX_JOB_PARAMA *JobParams, // pointer to
// job information structure
PFAX_COVERPAGE_INFOA *CoverpageInfo // pointer to
// cover page structure
) { return FaxCompleteJobParamsA (JobParams, CoverpageInfo); }
extern "C" BOOL WINAPI WinFaxCompleteJobParamsW( PFAX_JOB_PARAMW *JobParams, // pointer to
// job information structure
PFAX_COVERPAGE_INFOW *CoverpageInfo // pointer to
// cover page structure
) { return FaxCompleteJobParamsW (JobParams, CoverpageInfo); }
extern "C" BOOL WINAPI WinFaxConnectFaxServerA( LPCSTR MachineName OPTIONAL, // fax server name
LPHANDLE FaxHandle // handle to the fax server
) { if (IsLocalMachineNameA (MachineName)) { //
// Windows 2000 supported only local fax connection.
// Prevent apps that use the Windows 2000 API from connection to remote fax servers.
//
return FaxConnectFaxServerA (MachineName, FaxHandle); } else { DBG_ENTER (TEXT("WinFaxConnectFaxServerA"), TEXT("MachineName = %s"), MachineName); SetLastError (ERROR_ACCESS_DENIED); return FALSE; } }
extern "C" BOOL WINAPI WinFaxConnectFaxServerW( LPCWSTR MachineName OPTIONAL, // fax server name
LPHANDLE FaxHandle // handle to the fax server
) { if (IsLocalMachineNameW (MachineName)) { //
// Windows 2000 supported only local fax connection.
// Prevent apps that use the Windows 2000 API from connection to remote fax servers.
//
return FaxConnectFaxServerW (MachineName, FaxHandle); } else { DBG_ENTER (TEXT("WinFaxConnectFaxServerA"), TEXT("MachineName = %s"), MachineName); SetLastError (ERROR_ACCESS_DENIED); return FALSE; } }
extern "C" BOOL WINAPI WinFaxEnableRoutingMethodA( HANDLE FaxPortHandle, // fax port handle
LPCSTR RoutingGuid, // GUID that identifies the fax routing method
BOOL Enabled // fax routing method enable/disable flag
) { return FaxEnableRoutingMethodA (FaxPortHandle, RoutingGuid, Enabled); }
extern "C" BOOL WINAPI WinFaxEnableRoutingMethodW( HANDLE FaxPortHandle, // fax port handle
LPCWSTR RoutingGuid, // GUID that identifies the fax routing method
BOOL Enabled // fax routing method enable/disable flag
) { return FaxEnableRoutingMethodW (FaxPortHandle, RoutingGuid, Enabled); }
extern "C" BOOL WINAPI WinFaxEnumGlobalRoutingInfoA( HANDLE FaxHandle, //handle to the fax server
PFAX_GLOBAL_ROUTING_INFOA *RoutingInfo, //buffer to receive global routing structures
LPDWORD MethodsReturned //number of global routing structures returned
) { return FaxEnumGlobalRoutingInfoA (FaxHandle, RoutingInfo, MethodsReturned); }
extern "C" BOOL WINAPI WinFaxEnumGlobalRoutingInfoW( HANDLE FaxHandle, //handle to the fax server
PFAX_GLOBAL_ROUTING_INFOW *RoutingInfo, //buffer to receive global routing structures
LPDWORD MethodsReturned //number of global routing structures returned
) { return FaxEnumGlobalRoutingInfoW (FaxHandle, RoutingInfo, MethodsReturned); }
extern "C" BOOL WINAPI WinFaxEnumJobsA( HANDLE FaxHandle, // handle to the fax server
PFAX_JOB_ENTRYA *JobEntry, // buffer to receive array of job data
LPDWORD JobsReturned // number of fax job structures returned
) { return FaxEnumJobsA (FaxHandle, JobEntry, JobsReturned); }
extern "C" BOOL WINAPI WinFaxEnumJobsW( HANDLE FaxHandle, // handle to the fax server
PFAX_JOB_ENTRYW *JobEntry, // buffer to receive array of job data
LPDWORD JobsReturned // number of fax job structures returned
) { return FaxEnumJobsW (FaxHandle, JobEntry, JobsReturned); }
extern "C" BOOL WINAPI WinFaxEnumPortsA( HANDLE FaxHandle, // handle to the fax server
PFAX_PORT_INFOA *PortInfo, // buffer to receive array of port data
LPDWORD PortsReturned // number of fax port structures returned
) { return FaxEnumPortsA (FaxHandle, PortInfo, PortsReturned); }
extern "C" BOOL WINAPI WinFaxEnumPortsW( HANDLE FaxHandle, // handle to the fax server
PFAX_PORT_INFOW *PortInfo, // buffer to receive array of port data
LPDWORD PortsReturned // number of fax port structures returned
) { return FaxEnumPortsW (FaxHandle, PortInfo, PortsReturned); }
extern "C" BOOL WINAPI WinFaxEnumRoutingMethodsA( HANDLE FaxPortHandle, // fax port handle
PFAX_ROUTING_METHODA *RoutingMethod, // buffer to receive routing method data
LPDWORD MethodsReturned // number of routing method structures returned
) { return FaxEnumRoutingMethodsA (FaxPortHandle, RoutingMethod, MethodsReturned); }
extern "C" BOOL WINAPI WinFaxEnumRoutingMethodsW( HANDLE FaxPortHandle, // fax port handle
PFAX_ROUTING_METHODW *RoutingMethod, // buffer to receive routing method data
LPDWORD MethodsReturned // number of routing method structures returned
) { return FaxEnumRoutingMethodsW (FaxPortHandle, RoutingMethod, MethodsReturned); }
extern "C" VOID WINAPI WinFaxFreeBuffer( LPVOID Buffer // pointer to buffer to free
) { return FaxFreeBuffer (Buffer); }
extern "C" BOOL WINAPI WinFaxGetConfigurationA( HANDLE FaxHandle, // handle to the fax server
PFAX_CONFIGURATIONA *FaxConfig // structure to receive configuration data
) { return FaxGetConfigurationA (FaxHandle, FaxConfig); }
extern "C" BOOL WINAPI WinFaxGetConfigurationW( HANDLE FaxHandle, // handle to the fax server
PFAX_CONFIGURATIONW *FaxConfig // structure to receive configuration data
) { return FaxGetConfigurationW (FaxHandle, FaxConfig); }
extern "C" BOOL WINAPI WinFaxGetDeviceStatusA( HANDLE FaxPortHandle, // fax port handle
PFAX_DEVICE_STATUSA *DeviceStatus // structure to receive fax device data
) { return FaxGetDeviceStatusA (FaxPortHandle, DeviceStatus); }
extern "C" BOOL WINAPI WinFaxGetDeviceStatusW( HANDLE FaxPortHandle, // fax port handle
PFAX_DEVICE_STATUSW *DeviceStatus // structure to receive fax device data
) { return FaxGetDeviceStatusW (FaxPortHandle, DeviceStatus); }
extern "C" BOOL WINAPI WinFaxGetJobA( HANDLE FaxHandle, // handle to the fax server
DWORD JobId, // fax job identifier
PFAX_JOB_ENTRYA *JobEntry // pointer to job data structure
) { return FaxGetJobA (FaxHandle, JobId, JobEntry); }
extern "C" BOOL WINAPI WinFaxGetJobW( HANDLE FaxHandle, // handle to the fax server
DWORD JobId, // fax job identifier
PFAX_JOB_ENTRYW *JobEntry // pointer to job data structure
) { return FaxGetJobW (FaxHandle, JobId, JobEntry); }
extern "C" BOOL WINAPI WinFaxGetLoggingCategoriesA( HANDLE FaxHandle, // handle to the fax server
PFAX_LOG_CATEGORYA *Categories, // buffer to receive category data
LPDWORD NumberCategories // number of logging categories returned
) { return FaxGetLoggingCategoriesA (FaxHandle, Categories, NumberCategories); }
extern "C" BOOL WINAPI WinFaxGetLoggingCategoriesW( HANDLE FaxHandle, // handle to the fax server
PFAX_LOG_CATEGORYW *Categories, // buffer to receive category data
LPDWORD NumberCategories // number of logging categories returned
) { return FaxGetLoggingCategoriesW (FaxHandle, Categories, NumberCategories); }
extern "C" BOOL WINAPI WinFaxGetPageData( HANDLE FaxHandle, // handle to the fax server
DWORD JobId, // fax job identifier
LPBYTE *Buffer, // buffer to receive first page of data
LPDWORD BufferSize, // size of buffer, in bytes
LPDWORD ImageWidth, // page image width, in pixels
LPDWORD ImageHeight // page image height, in pixels
) { return FaxGetPageData (FaxHandle, JobId, Buffer, BufferSize, ImageWidth, ImageHeight); }
extern "C" BOOL WINAPI WinFaxGetPortA( HANDLE FaxPortHandle, // fax port handle
PFAX_PORT_INFOA *PortInfo // structure to receive port data
) { return FaxGetPortA (FaxPortHandle, PortInfo); }
extern "C" BOOL WINAPI WinFaxGetPortW( HANDLE FaxPortHandle, // fax port handle
PFAX_PORT_INFOW *PortInfo // structure to receive port data
) { return FaxGetPortW (FaxPortHandle, PortInfo); }
extern "C" BOOL WINAPI WinFaxGetRoutingInfoA( HANDLE FaxPortHandle, // fax port handle
LPCSTR RoutingGuid, // GUID that identifies fax routing method
LPBYTE *RoutingInfoBuffer, // buffer to receive routing method data
LPDWORD RoutingInfoBufferSize // size of buffer, in bytes
) { return FaxGetRoutingInfoA (FaxPortHandle, RoutingGuid, RoutingInfoBuffer, RoutingInfoBufferSize); }
extern "C" BOOL WINAPI WinFaxGetRoutingInfoW( HANDLE FaxPortHandle, // fax port handle
LPCWSTR RoutingGuid, // GUID that identifies fax routing method
LPBYTE *RoutingInfoBuffer, // buffer to receive routing method data
LPDWORD RoutingInfoBufferSize // size of buffer, in bytes
) { return FaxGetRoutingInfoW (FaxPortHandle, RoutingGuid, RoutingInfoBuffer, RoutingInfoBufferSize); }
extern "C" BOOL WINAPI WinFaxInitializeEventQueue( HANDLE FaxHandle, // handle to the fax server
HANDLE CompletionPort, // handle to an I/O completion port
ULONG_PTR CompletionKey, // completion key value
HWND hWnd, // handle to the notification window
UINT MessageStart // window message base event number
) { return FaxInitializeEventQueue (FaxHandle, CompletionPort, CompletionKey, hWnd, MessageStart); }
extern "C" BOOL WINAPI WinFaxOpenPort( HANDLE FaxHandle, // handle to the fax server
DWORD DeviceId, // receiving device identifier
DWORD Flags, // set of port access level bit flags
LPHANDLE FaxPortHandle // fax port handle
) { return FaxOpenPort (FaxHandle, DeviceId, Flags, FaxPortHandle); }
extern "C" BOOL WINAPI WinFaxPrintCoverPageA( CONST FAX_CONTEXT_INFOA *FaxContextInfo, // pointer to device context structure
CONST FAX_COVERPAGE_INFOA *CoverPageInfo // pointer to local cover page structure
) { return FaxPrintCoverPageA (FaxContextInfo, CoverPageInfo); }
extern "C" BOOL WINAPI WinFaxPrintCoverPageW( CONST FAX_CONTEXT_INFOW *FaxContextInfo, // pointer to device context structure
CONST FAX_COVERPAGE_INFOW *CoverPageInfo // pointer to local cover page structure
) { return FaxPrintCoverPageW (FaxContextInfo, CoverPageInfo); }
WINFAXAPI BOOL WINAPI FaxRegisterServiceProviderW ( IN LPCWSTR lpcwstrDeviceProvider, IN LPCWSTR lpcwstrFriendlyName, IN LPCWSTR lpcwstrImageName, IN LPCWSTR lpcwstrTspName ) { HKEY hKey = NULL; HKEY hProviderKey = NULL; DWORD dwRes; DWORD Disposition = REG_OPENED_EXISTING_KEY; DEBUG_FUNCTION_NAME(TEXT("FaxRegisterServiceProviderW"));
if (!lpcwstrDeviceProvider || !lpcwstrFriendlyName || !lpcwstrImageName || !lpcwstrTspName) { SetLastError(ERROR_INVALID_PARAMETER); DebugPrintEx(DEBUG_ERR, _T("At least one of the given strings is NULL.")); return FALSE; }
if (MAX_FAX_STRING_LEN < _tcslen (lpcwstrFriendlyName) || MAX_FAX_STRING_LEN < _tcslen (lpcwstrImageName) || MAX_FAX_STRING_LEN < _tcslen (lpcwstrTspName) || MAX_FAX_STRING_LEN < _tcslen (lpcwstrDeviceProvider)) { SetLastError(ERROR_INVALID_PARAMETER); DebugPrintEx(DEBUG_ERR, _T("At least one of the given strings is too long.")); return FALSE; } //
// Try to open the registry key of the providers
//
hKey = OpenRegistryKey(HKEY_LOCAL_MACHINE, REGKEY_DEVICE_PROVIDER_KEY, TRUE, // Create if not existing
0); if (!hKey) { //
// Failed - this is probably not a local call.
//
DebugPrintEx( DEBUG_ERR, TEXT("Failed to open providers key (ec = %ld)"), GetLastError ()); return FALSE; } //
// Try to create this FSP's key
//
dwRes = RegCreateKeyEx( hKey, lpcwstrDeviceProvider, 0, NULL, 0, KEY_ALL_ACCESS, NULL, &hProviderKey, &Disposition); if (ERROR_SUCCESS != dwRes) { DebugPrintEx( DEBUG_ERR, TEXT("Failed to create provider key (ec = %ld)"), dwRes); goto exit; }
if (REG_OPENED_EXISTING_KEY == Disposition) { DebugPrintEx( DEBUG_ERR, TEXT("Provider already exist (orovider name: %s)."), lpcwstrDeviceProvider); dwRes = ERROR_ALREADY_EXISTS; goto exit; }
//
// Write provider's data into the key
//
if (!SetRegistryString (hProviderKey, REGVAL_FRIENDLY_NAME, lpcwstrFriendlyName)) { dwRes = GetLastError (); DebugPrintEx( DEBUG_ERR, TEXT("Error writing string value (ec = %ld)"), dwRes); goto exit; } if (!SetRegistryStringExpand (hProviderKey, REGVAL_IMAGE_NAME, lpcwstrImageName)) { dwRes = GetLastError (); DebugPrintEx( DEBUG_ERR, TEXT("Error writing auto-expand string value (ec = %ld)"), dwRes); goto exit; } if (!SetRegistryString (hProviderKey, REGVAL_PROVIDER_NAME, lpcwstrTspName)) { dwRes = GetLastError (); DebugPrintEx( DEBUG_ERR, TEXT("Error writing string value (ec = %ld)"), dwRes); goto exit; } if (!SetRegistryDword (hProviderKey, REGVAL_PROVIDER_API_VERSION, FSPI_API_VERSION_1)) { dwRes = GetLastError (); DebugPrintEx( DEBUG_ERR, TEXT("Error writing DWORD value (ec = %ld)"), dwRes); goto exit; }
Assert (ERROR_SUCCESS == dwRes); //
// Adding an FSP is always local.
// If we don't have a fax printer installed, this is the time to install one.
//
AddOrVerifyLocalFaxPrinter();
exit: if (hKey) { DWORD dw; if (ERROR_SUCCESS != dwRes && REG_OPENED_EXISTING_KEY != Disposition) { //
// Delete provider's key on failure, only if it was created now
//
dw = RegDeleteKey (hKey, lpcwstrDeviceProvider); if (ERROR_SUCCESS != dw) { DebugPrintEx( DEBUG_ERR, TEXT("Error deleting provider key (ec = %ld)"), dw); } } dw = RegCloseKey (hKey); if (ERROR_SUCCESS != dw) { DebugPrintEx( DEBUG_ERR, TEXT("Error closing providers key (ec = %ld)"), dw); } } if (hProviderKey) { DWORD dw = RegCloseKey (hProviderKey); if (ERROR_SUCCESS != dw) { DebugPrintEx( DEBUG_ERR, TEXT("Error closing provider key (ec = %ld)"), dw); } } if (ERROR_SUCCESS != dwRes) { SetLastError (dwRes); return FALSE; } return TRUE; } // FaxRegisterServiceProviderW
WINFAXAPI BOOL WINAPI FaxUnregisterServiceProviderW ( IN LPCWSTR lpcwstrDeviceProvider ) { HKEY hProvidersKey = NULL; LONG lRes = ERROR_SUCCESS; LONG lRes2; DEBUG_FUNCTION_NAME(TEXT("FaxUnregisterServiceProviderW"));
if (!lpcwstrDeviceProvider) { SetLastError(ERROR_INVALID_PARAMETER); DebugPrintEx(DEBUG_ERR, _T("lpcwstrDeviceProvider is NULL.")); return FALSE; } //
// Try to open the registry key of the providers
//
hProvidersKey = OpenRegistryKey( HKEY_LOCAL_MACHINE, REGKEY_DEVICE_PROVIDER_KEY, FALSE, // Do not create if not existing
0); if (!hProvidersKey) { //
// Failed - this is probably not a local call.
//
DebugPrintEx( DEBUG_ERR, TEXT("Failed to open providers key (ec = %ld)"), GetLastError ()); return FALSE; } lRes = RegDeleteKey (hProvidersKey, lpcwstrDeviceProvider); if (ERROR_SUCCESS != lRes) { DebugPrintEx( DEBUG_ERR, TEXT("Error deleting provider key (ec = %ld)"), lRes); } lRes2 = RegCloseKey (hProvidersKey); if (ERROR_SUCCESS != lRes2) { DebugPrintEx( DEBUG_ERR, TEXT("Error closing provider key (ec = %ld)"), lRes2); }
if (ERROR_SUCCESS != lRes) { SetLastError (lRes); return FALSE; } return TRUE; } // FaxUnegisterServiceProviderW
extern "C" BOOL WINAPI WinFaxRegisterRoutingExtensionW( HANDLE FaxHandle, // handle to the fax server
LPCWSTR ExtensionName, // fax routing extension DLL name
LPCWSTR FriendlyName, // fax routing extension user-friendly name
LPCWSTR ImageName, // path to fax routing extension DLL
PFAX_ROUTING_INSTALLATION_CALLBACKW CallBack, // pointer to fax
// routing installation callback function
LPVOID Context // pointer to context information
) { return FaxRegisterRoutingExtensionW (FaxHandle, ExtensionName, FriendlyName, ImageName, CallBack, Context); }
extern "C" BOOL WINAPI WinFaxSendDocumentA( HANDLE FaxHandle, // handle to the fax server
LPCSTR FileName, // file with data to transmit
PFAX_JOB_PARAMA JobParams, // pointer to job information structure
CONST FAX_COVERPAGE_INFOA *CoverpageInfo OPTIONAL, // pointer to local cover page structure
LPDWORD FaxJobId // fax job identifier
) { return FaxSendDocumentA (FaxHandle, FileName, JobParams, CoverpageInfo, FaxJobId); }
extern "C" BOOL WINAPI WinFaxSendDocumentW( HANDLE FaxHandle, // handle to the fax server
LPCWSTR FileName, // file with data to transmit
PFAX_JOB_PARAMW JobParams, // pointer to job information structure
CONST FAX_COVERPAGE_INFOW *CoverpageInfo OPTIONAL, // pointer to local cover page structure
LPDWORD FaxJobId // fax job identifier
) { return FaxSendDocumentW (FaxHandle, FileName, JobParams, CoverpageInfo, FaxJobId); }
extern "C" BOOL WINAPI WinFaxSendDocumentForBroadcastA( HANDLE FaxHandle, // handle to the fax server
LPCSTR FileName, // fax document file name
LPDWORD FaxJobId, // fax job identifier
PFAX_RECIPIENT_CALLBACKA FaxRecipientCallback, // pointer to fax recipient callback function
LPVOID Context // pointer to context information
) { return FaxSendDocumentForBroadcastA (FaxHandle, FileName, FaxJobId, FaxRecipientCallback, Context); }
extern "C" BOOL WINAPI WinFaxSendDocumentForBroadcastW( HANDLE FaxHandle, // handle to the fax server
LPCWSTR FileName, // fax document file name
LPDWORD FaxJobId, // fax job identifier
PFAX_RECIPIENT_CALLBACKW FaxRecipientCallback, // pointer to fax recipient callback function
LPVOID Context // pointer to context information
) { return FaxSendDocumentForBroadcastW (FaxHandle, FileName, FaxJobId, FaxRecipientCallback, Context); }
extern "C" BOOL WINAPI WinFaxSetConfigurationA( HANDLE FaxHandle, // handle to the fax server
CONST FAX_CONFIGURATIONA *FaxConfig // new configuration data
) { return FaxSetConfigurationA (FaxHandle, FaxConfig); }
extern "C" BOOL WINAPI WinFaxSetConfigurationW( HANDLE FaxHandle, // handle to the fax server
CONST FAX_CONFIGURATIONW *FaxConfig // new configuration data
) { return FaxSetConfigurationW (FaxHandle, FaxConfig); }
extern "C" BOOL WINAPI WinFaxSetGlobalRoutingInfoA( HANDLE FaxHandle, //handle to the fax server
CONST FAX_GLOBAL_ROUTING_INFOA *RoutingInfo //pointer to global routing information structure
) { return FaxSetGlobalRoutingInfoA (FaxHandle, RoutingInfo); }
extern "C" BOOL WINAPI WinFaxSetGlobalRoutingInfoW( HANDLE FaxHandle, //handle to the fax server
CONST FAX_GLOBAL_ROUTING_INFOW *RoutingInfo //pointer to global routing information structure
) { return FaxSetGlobalRoutingInfoW (FaxHandle, RoutingInfo); }
extern "C" BOOL WINAPI WinFaxSetJobA( HANDLE FaxHandle, // handle to the fax server
DWORD JobId, // fax job identifier
DWORD Command, // job command value
CONST FAX_JOB_ENTRYA *JobEntry // pointer to job information structure
) { return FaxSetJobA (FaxHandle, JobId, Command, JobEntry); }
extern "C" BOOL WINAPI WinFaxSetJobW( HANDLE FaxHandle, // handle to the fax server
DWORD JobId, // fax job identifier
DWORD Command, // job command value
CONST FAX_JOB_ENTRYW *JobEntry // pointer to job information structure
) { return FaxSetJobW (FaxHandle, JobId, Command, JobEntry); }
extern "C" BOOL WINAPI WinFaxSetLoggingCategoriesA( HANDLE FaxHandle, // handle to the fax server
CONST FAX_LOG_CATEGORYA *Categories, // new logging categories data
DWORD NumberCategories // number of category structures
) { return FaxSetLoggingCategoriesA (FaxHandle, Categories, NumberCategories); }
extern "C" BOOL WINAPI WinFaxSetLoggingCategoriesW( HANDLE FaxHandle, // handle to the fax server
CONST FAX_LOG_CATEGORYW *Categories, // new logging categories data
DWORD NumberCategories // number of category structures
) { return FaxSetLoggingCategoriesW (FaxHandle, Categories, NumberCategories); }
extern "C" BOOL WINAPI WinFaxSetPortA( HANDLE FaxPortHandle, // fax port handle
CONST FAX_PORT_INFOA *PortInfo // new port configuration data
) { return FaxSetPortA (FaxPortHandle, PortInfo); }
extern "C" BOOL WINAPI WinFaxSetPortW( HANDLE FaxPortHandle, // fax port handle
CONST FAX_PORT_INFOW *PortInfo // new port configuration data
) { return FaxSetPortW (FaxPortHandle, PortInfo); }
extern "C" BOOL WINAPI WinFaxSetRoutingInfoA( HANDLE FaxPortHandle, // fax port handle
LPCSTR RoutingGuid, // GUID that identifies fax routing method
CONST BYTE *RoutingInfoBuffer, // buffer with routing method data
DWORD RoutingInfoBufferSize // size of buffer, in bytes
) { return FaxSetRoutingInfoA (FaxPortHandle, RoutingGuid, RoutingInfoBuffer, RoutingInfoBufferSize); }
extern "C" BOOL WINAPI WinFaxSetRoutingInfoW( HANDLE FaxPortHandle, // fax port handle
LPCWSTR RoutingGuid, // GUID that identifies fax routing method
CONST BYTE *RoutingInfoBuffer, // buffer with routing method data
DWORD RoutingInfoBufferSize // size of buffer, in bytes
) { return FaxSetRoutingInfoW (FaxPortHandle, RoutingGuid, RoutingInfoBuffer, RoutingInfoBufferSize); }
extern "C" BOOL WINAPI WinFaxStartPrintJobA( LPCSTR PrinterName, // printer for fax job
CONST FAX_PRINT_INFOA *PrintInfo, // print job information structure
LPDWORD FaxJobId, // fax job identifier
PFAX_CONTEXT_INFOA FaxContextInfo // pointer to device context structure
) { return FaxStartPrintJobA (PrinterName, PrintInfo, FaxJobId, FaxContextInfo); }
extern "C" BOOL WINAPI WinFaxStartPrintJobW( LPCWSTR PrinterName, // printer for fax job
CONST FAX_PRINT_INFOW *PrintInfo, // print job information structure
LPDWORD FaxJobId, // fax job identifier
PFAX_CONTEXT_INFOW FaxContextInfo // pointer to device context structure
) { return FaxStartPrintJobW (PrinterName, PrintInfo, FaxJobId, FaxContextInfo); }
|