#include "idl_types.h" import "misc.idl"; [ uuid(ea0a3165-4834-11d2-a6f8-00c04fa346cc), version(4.0), pointer_default(unique) ] #define HCALL DWORD #define _FAX_RPC_LIMIT_H #define FAX_MAX_RPC_BUFFER (1024*1024) #define FAX_MAX_RECIPIENTS 10000 #define RPC_COPY_BUFFER_SIZE 16384 interface fax { /* begin what could be included in ms-dtyp.idl */ #define BOOL int #define LPBOOL BOOL* #define BYTE uint8 #define WORD uint16 #define DWORD uint32 #define LPBYTE BYTE* #define LPDWORD DWORD* #define LPCWSTR [charset(UTF16)] uint16* #define LPWSTR [charset(UTF16)] uint16* #define DWORDLONG uint64 #define PDWORDLONG DWORDLONG* #define handle_t policy_handle #define HANDLE policy_handle* /* begin modified ms-faxdatatypes.idl */ #define FAX_MAX_DEVICES_IN_GROUP 1000 #define RPC_FAX_PORT_HANDLE HANDLE #define PRPC_FAX_PORT_HANDLE RPC_FAX_PORT_HANDLE* #define RPC_FAX_SVC_HANDLE HANDLE #define PRPC_FAX_SVC_HANDLE RPC_FAX_SVC_HANDLE* #define RPC_FAX_MSG_ENUM_HANDLE HANDLE #define PRPC_FAX_MSG_ENUM_HANDLE RPC_FAX_MSG_ENUM_HANDLE* #define RPC_FAX_COPY_HANDLE HANDLE #define PRPC_FAX_COPY_HANDLE RPC_FAX_COPY_HANDLE* #define RPC_FAX_EVENT_HANDLE HANDLE #define PRPC_FAX_EVENT_HANDLE RPC_FAX_EVENT_HANDLE* #define RPC_FAX_EVENT_EX_HANDLE HANDLE #define PRPC_FAX_EVENT_EX_HANDLE RPC_FAX_EVENT_EX_HANDLE* #define LPRANGED_DWORD DWORD* typedef struct { DWORD dwSizeOfStruct; DWORD dwCoverPageFormat; [string] LPWSTR lpwstrCoverPageFileName; BOOL bServerBased; [string] LPWSTR lpwstrNote; [string] LPWSTR lpwstrSubject; } FAX_COVERPAGE_INFO_EXW; #define PFAX_COVERPAGE_INFO_EXW FAX_COVERPAGE_INFO_EXW* #define LPCFAX_COVERPAGE_INFO_EXW FAX_COVERPAGE_INFO_EXW* typedef struct { DWORD SizeOfStruct; [string] LPCWSTR RecipientNumber; [string] LPCWSTR RecipientName; [string] LPCWSTR Tsid; [string] LPCWSTR SenderName; [string] LPCWSTR SenderCompany; [string] LPCWSTR SenderDept; [string] LPCWSTR BillingCode; DWORD ScheduleAction; SYSTEMTIME ScheduleTime; DWORD DeliveryReportType; [string] LPCWSTR DeliveryReportAddress; [string] LPCWSTR DocumentName; HCALL CallHandle; DWORD_PTR Reserved[3]; } FAX_JOB_PARAMW; #define PFAX_JOB_PARAMW FAX_JOB_PARAMW* typedef enum { FAX_DEVICE_RECEIVE_MODE_OFF = 0, FAX_DEVICE_RECEIVE_MODE_AUTO = 1, FAX_DEVICE_RECEIVE_MODE_MANUAL = 2 }FAX_ENUM_DEVICE_RECEIVE_MODE; typedef enum { FAX_GROUP_STATUS_ALL_DEV_VALID, FAX_GROUP_STATUS_EMPTY, FAX_GROUP_STATUS_ALL_DEV_NOT_VALID, FAX_GROUP_STATUS_SOME_DEV_NOT_VALID } FAX_ENUM_GROUP_STATUS; typedef enum { FAX_MESSAGE_FOLDER_INBOX, FAX_MESSAGE_FOLDER_SENTITEMS, FAX_MESSAGE_FOLDER_QUEUE } FAX_ENUM_MESSAGE_FOLDER; typedef enum { RECIPIENT_PERSONAL_PROF = 1, SENDER_PERSONAL_PROF = 2 }FAX_ENUM_PERSONAL_PROF_TYPES; typedef enum { FAX_PRIORITY_TYPE_LOW, FAX_PRIORITY_TYPE_NORMAL, FAX_PRIORITY_TYPE_HIGH } FAX_ENUM_PRIORITY_TYPE; typedef enum { FAX_SMTP_AUTH_ANONYMOUS = 0, FAX_SMTP_AUTH_BASIC = 1, FAX_SMTP_AUTH_NTLM = 2 }FAX_ENUM_SMTP_AUTH_OPTIONS; typedef enum { PRODUCT_SKU_UNKNOWN = 0x00000000, PRODUCT_SKU_PERSONAL = 0x00000001, PRODUCT_SKU_PROFESSIONAL = 0x00000002, PRODUCT_SKU_SERVER = 0x00000004, PRODUCT_SKU_ADVANCED_SERVER = 0x00000008, PRODUCT_SKU_DATA_CENTER = 0x00000010, PRODUCT_SKU_DESKTOP_EMBEDDED = 0x00000020, PRODUCT_SKU_SERVER_EMBEDDED = 0x00000040, PRODUCT_SKU_WEB_SERVER = 0x00000080 }PRODUCT_SKU_TYPE; typedef enum { FAX_CONFIG_OPTION_ALLOW_PERSONAL_CP = 0x00000000, FAX_CONFIG_OPTION_QUEUE_STATE = 0x00000001, FAX_CONFIG_OPTION_ALLOWED_RECEIPTS = 0x00000002, FAX_CONFIG_OPTION_INCOMING_FAXES_PUBLIC = 0x00000003 }FAX_ENUM_CONFIG_OPTION; typedef struct { WORD Hour; WORD Minute; } FAX_TIME; #define PFAX_TIME FAX_TIME* typedef struct { DWORD dwSizeOfStruct; DWORD dwAllowedReceipts; FAX_ENUM_SMTP_AUTH_OPTIONS SMTPAuthOption; [string] LPWSTR lpwstrReserved; [string] LPWSTR lpwstrSMTPServer; DWORD dwSMTPPort; [string] LPWSTR lpwstrSMTPFrom; [string] LPWSTR lpwstrSMTPUserName; [string] LPWSTR lpwstrSMTPPassword; BOOL bIsToUseForMSRouteThroughEmailMethod; } FAX_RECEIPTS_CONFIGW; #define PFAX_RECEIPTS_CONFIGW FAX_RECEIPTS_CONFIGW* typedef struct { DWORD SizeOfStruct; DWORD Retries; DWORD RetryDelay; DWORD DirtyDays; BOOL Branding; BOOL UseDeviceTsid; BOOL ServerCp; BOOL PauseServerQueue; FAX_TIME StartCheapTime; FAX_TIME StopCheapTime; BOOL ArchiveOutgoingFaxes; [string] LPCWSTR ArchiveDirectory; [string] LPCWSTR ProfileName; } FAX_CONFIGURATIONW; #define PFAX_CONFIGURATIONW FAX_CONFIGURATIONW* typedef struct { DWORD SizeOfStruct; DWORD Priority; [string] LPCWSTR Guid; [string] LPCWSTR FriendlyName; [string] LPCWSTR FunctionName; [string] LPCWSTR ExtensionImageName; [string] LPCWSTR ExtensionFriendlyName; } FAX_GLOBAL_ROUTING_INFOW; typedef struct { DWORD dwSizeOfStruct; DWORD dwScheduleAction; SYSTEMTIME tmSchedule; DWORD dwReceiptDeliveryType; [string] LPWSTR lpwstrReceiptDeliveryAddress; FAX_ENUM_PRIORITY_TYPE Priority; HCALL hCall; DWORD_PTR dwReserved[4]; [string] LPWSTR lpwstrDocumentName; DWORD dwPageCount; } FAX_JOB_PARAM_EXW; #define PFAX_JOB_PARAM_EXW FAX_JOB_PARAM_EXW* #define LPCFAX_JOB_PARAM_EXW FAX_JOB_PARAM_EXW* typedef struct { DWORD dwSizeOfStruct; [string] LPWSTR lpwstrGroupName; [range(0,FAX_MAX_DEVICES_IN_GROUP)]DWORD dwNumDevices; [unique, size_is(dwNumDevices)] LPDWORD lpdwDevices; FAX_ENUM_GROUP_STATUS Status; } RPC_FAX_OUTBOUND_ROUTING_GROUPW; #define PRPC_FAX_OUTBOUND_ROUTING_GROUPW RPC_FAX_OUTBOUND_ROUTING_GROUPW* typedef struct { DWORD SizeOfStruct; DWORD DeviceId; DWORD State; DWORD Flags; DWORD Rings; DWORD Priority; [string] LPCWSTR DeviceName; [string] LPCWSTR Tsid; [string] LPCWSTR Csid; } FAX_PORT_INFO; #define PFAX_PORT_INFO FAX_PORT_INFO* typedef [switch_type(int)] union { [case(0)] DWORD dwDeviceId; [default] [string] [string] LPWSTR lpwstrGroupName; } FAX_RULE_DESTINATION; typedef enum { FAX_RULE_STATUS_VALID = 0x00000000, FAX_RULE_STATUS_EMPTY_GROUP = 0x00000001, FAX_RULE_STATUS_ALL_GROUP_DEV_NOT_VALID = 0x00000002, FAX_RULE_STATUS_SOME_GROUP_DEV_NOT_VALID = 0x00000003, FAX_RULE_STATUS_BAD_DEVICE = 0x00000004 } FAX_ENUM_RULE_STATUS; typedef struct { DWORD dwSizeOfStruct; DWORD dwAreaCode; DWORD dwCountryCode; [string] LPWSTR lpwstrCountryName; [switch_is(bUseGroup)] FAX_RULE_DESTINATION Destination; BOOL bUseGroup; FAX_ENUM_RULE_STATUS Status; } FAX_OUTBOUND_ROUTING_RULEW; #define PFAX_OUTBOUND_ROUTING_RULEW FAX_OUTBOUND_ROUTING_RULEW* typedef struct { DWORD dwSizeOfStruct; BOOL bValid; WORD wMajorVersion; WORD wMinorVersion; WORD wMajorBuildNumber; WORD wMinorBuildNumber; DWORD dwFlags; } FAX_VERSION; #define PFAX_VERSION FAX_VERSION* typedef struct { DWORD dwSizeOfStruct; BOOL bAllowPersonalCP; BOOL bUseDeviceTSID; DWORD dwRetries; DWORD dwRetryDelay; FAX_TIME dtDiscountStart; FAX_TIME dtDiscountEnd; DWORD dwAgeLimit; BOOL bBranding; } FAX_OUTBOX_CONFIG; #define PFAX_OUTBOX_CONFIG FAX_OUTBOX_CONFIG* typedef struct { DWORD dwSizeOfStruct; BOOL bLogIncoming; BOOL bLogOutgoing; [string] LPWSTR lpwstrDBPath; } FAX_ACTIVITY_LOGGING_CONFIGW; #define PFAX_ACTIVITY_LOGGING_CONFIGW FAX_ACTIVITY_LOGGING_CONFIGW* typedef struct { DWORD dwSizeOfStruct; DWORD dwDeviceID; [string] LPCWSTR lpcwstrDeviceName; [string] LPWSTR lpwstrDescription; [string] LPCWSTR lpcwstrProviderName; [string] LPCWSTR lpcwstrProviderGUID; BOOL bSend; FAX_ENUM_DEVICE_RECEIVE_MODE ReceiveMode; DWORD dwStatus; DWORD dwRings; [string] LPWSTR lpwstrCsid; [string] LPWSTR lpwstrTsid; } FAX_PORT_INFO_EXW; #define PFAX_PORT_INFO_EXW FAX_PORT_INFO_EXW* typedef struct { DWORD dwSizeOfStruct; DWORD dwIncomingMessages; DWORD dwRoutingMessages; DWORD dwOutgoingMessages; DWORD dwDelegatedOutgoingMessages; DWORD dwQueuedMessages; DWORD dwErrorEvents; DWORD dwWarningEvents; DWORD dwInformationEvents; } FAX_SERVER_ACTIVITY; #define PFAX_SERVER_ACTIVITY FAX_SERVER_ACTIVITY* typedef struct { [string] LPCWSTR lpcwstrRecipients; [string] LPCWSTR lpcwstrSenderName; [string] LPCWSTR lpcwstrSenderFaxNumber; [string] LPCWSTR lpcwstrSubject; BOOL bHasCoverPage; } FAX_REASSIGN_INFO; #define PFAX_REASSIGN_INFO FAX_REASSIGN_INFO* typedef struct { DWORD dwValidityMask; DWORD dwMsgFlags; } FAX_MESSAGE_PROPS; #define PFAX_MESSAGE_PROPS FAX_MESSAGE_PROPS* typedef struct { DWORD SizeOfStruct; DWORD JobId; LPCWSTR UserName; DWORD JobType; DWORD QueueStatus; DWORD Status; DWORD Size; DWORD PageCount; LPCWSTR RecipientNumber; LPCWSTR RecipientName; LPCWSTR Tsid; LPCWSTR SenderName; LPCWSTR SenderCompany; LPCWSTR SenderDept; LPCWSTR BillingCode; DWORD ScheduleAction; SYSTEMTIME ScheduleTime; DWORD DeliveryReportType; LPCWSTR DeliveryReportAddress; LPCWSTR DocumentName; } FAX_JOB_ENTRY; #define PFAX_JOB_ENTRY FAX_JOB_ENTRY* /* end modified ms-faxdatatypes.idl */ error_status_t FAX_GetServicePrinters( [in] handle_t hBinding, [out, size_is(,*lpdwBufferSize)] LPBYTE *lpBuffer, [out, ref] LPDWORD lpdwBufferSize, [out, ref] LPDWORD lpdwPrintersReturned ); error_status_t FAX_ConnectionRefCount( [in] handle_t hBinding, [in, out] PRPC_FAX_SVC_HANDLE Handle, [in] DWORD Connect, [out] LPDWORD CanShare ); error_status_t FAX_OpenPort( [in] handle_t hBinding, [in] DWORD DeviceId, [in] DWORD Flags, [out] PRPC_FAX_PORT_HANDLE FaxPortHandle ); error_status_t FAX_ClosePort( [in,out] PRPC_FAX_PORT_HANDLE FaxPortHandle ); error_status_t FAX_EnumJobs( [in] handle_t hBinding, [out, size_is(,*BufferSize)] LPBYTE *Buffer, [out, ref] LPDWORD BufferSize, [out, ref] LPDWORD JobsReturned ); error_status_t FAX_GetJob( [in] handle_t hBinding, [in] DWORD JobId, [out, size_is(,*BufferSize)] LPBYTE *Buffer, [out, ref] LPDWORD BufferSize ); error_status_t FAX_SetJob( [in] handle_t hBinding, [in] DWORD JobId, [in] DWORD Command ); error_status_t FAX_GetPageData( [in] handle_t hBinding, [in] DWORD JobId, [out, size_is(,*BufferSize)] LPBYTE *Buffer, [out, ref] LPDWORD BufferSize, [in, out] LPDWORD ImageWidth, [in, out] LPDWORD ImageHeight ); error_status_t FAX_GetDeviceStatus( [in] RPC_FAX_PORT_HANDLE FaxPortHandle, [out, size_is(,*BufferSize)] LPBYTE*StatusBuffer, [out, ref] LPDWORD BufferSize ); error_status_t FAX_Abort( [in] handle_t hBinding, [in] DWORD JobId ); error_status_t FAX_EnumPorts( [in] handle_t hBinding, [out, size_is(,*BufferSize)] LPBYTE *PortBuffer, [out, ref] LPDWORD BufferSize, [out, ref] LPDWORD PortsReturned ); error_status_t FAX_GetPort( [in] RPC_FAX_PORT_HANDLE FaxPortHandle, [out, size_is(,*BufferSize)] LPBYTE *PortBuffer, [out, ref] LPDWORD BufferSize ); error_status_t FAX_SetPort( [in] RPC_FAX_PORT_HANDLE FaxPortHandle, [in] FAX_PORT_INFO *PortInfo ); error_status_t FAX_EnumRoutingMethods( [in] RPC_FAX_PORT_HANDLE FaxPortHandle, [out, size_is(,*RoutingInfoBufferSize)] LPBYTE *RoutingInfoBuffer, [out, ref] LPDWORD RoutingInfoBufferSize, [out, ref] LPDWORD PortsReturned ); error_status_t FAX_EnableRoutingMethod( [in] RPC_FAX_PORT_HANDLE FaxPortHandle, [in, string, unique] LPCWSTR RoutingGuid, [in] BOOL Enabled ); error_status_t FAX_GetRoutingInfo( [in] RPC_FAX_PORT_HANDLE FaxPortHandle, [in, string, unique] LPCWSTR RoutingGuid, [out, size_is(,*RoutingInfoBufferSize)] LPBYTE *RoutingInfoBuffer, [out, ref] LPDWORD RoutingInfoBufferSize ); error_status_t FAX_SetRoutingInfo( [in] RPC_FAX_PORT_HANDLE FaxPortHandle, [in, string, unique] LPCWSTR RoutingGuid, [in, unique, size_is(RoutingInfoBufferSize)] BYTE *RoutingInfoBuffer, [in, range(0,FAX_MAX_RPC_BUFFER)] DWORD RoutingInfoBufferSize ); error_status_t FAX_EnumGlobalRoutingInfo( [in] handle_t hBinding, [out, size_is(,*RoutingInfoBufferSize)] LPBYTE *RoutingInfoBuffer, [out, ref] LPDWORD RoutingInfoBufferSize, [out, ref] LPDWORD MethodsReturned ); error_status_t FAX_SetGlobalRoutingInfo( [in] handle_t hBinding, [in] FAX_GLOBAL_ROUTING_INFOW *RoutingInfo ); error_status_t FAX_GetConfiguration( [in] handle_t hBinding, [out, size_is(,*BufferSize)] LPBYTE *Buffer, [out, ref] LPDWORD BufferSize ); error_status_t FAX_SetConfiguration( [in] handle_t hBinding, [in] FAX_CONFIGURATIONW *FaxConfig ); error_status_t FAX_GetLoggingCategories( [in] handle_t hBinding, [out, size_is(,*BufferSize)] LPBYTE *Buffer, [out, ref] LPDWORD BufferSize, [out, ref] LPDWORD NumberCategories ); error_status_t FAX_SetLoggingCategories( [in] handle_t hBinding, [in, unique, size_is(BufferSize)] LPBYTE Buffer, [in, range(0,FAX_MAX_RPC_BUFFER)] DWORD BufferSize, [in] DWORD NumberCategories ); error_status_t FAX_GetSecurity( [in] handle_t hBinding, [out, size_is(,*lpdwBufferSize)] LPBYTE * pSecurityDescriptor, [out, ref] LPDWORD lpdwBufferSize ); error_status_t FAX_SetSecurity( [in] handle_t hBinding, [in] SECURITY_INFORMATION SecurityInformation, [in, unique, size_is(dwBufferSize)] LPBYTE pSecurityDescriptor, [in, range(0,FAX_MAX_RPC_BUFFER)] DWORD dwBufferSize ); error_status_t FAX_AccessCheck( [in] handle_t hBinding, [in] DWORD AccessMask, [out, ref] BOOL* pfAccess, [in, out, unique] LPDWORD lpdwRights ); error_status_t FAX_CheckServerProtSeq( [in] handle_t hbinding, [in, out, unique] LPDWORD lpdwProtSeq ); error_status_t FAX_SendDocumentEx ( [in] handle_t hBinding, [in, string, unique] LPCWSTR lpcwstrFileName, [in] LPCFAX_COVERPAGE_INFO_EXW lpcCoverPageInfo, [in] LPBYTE lpcSenderProfile, [in, range(0,FAX_MAX_RECIPIENTS) ] DWORD dwNumRecipients, [in, size_is(dwNumRecipients)] LPBYTE * lpcRecipientList, [in] LPCFAX_JOB_PARAM_EXW lpJobParams, [in, out, unique] LPDWORD lpdwJobId, [out] PDWORDLONG lpdwlMessageId, [out, size_is(dwNumRecipients)] PDWORDLONG lpdwlRecipientMessageIds ); error_status_t FAX_EnumJobsEx( [in] handle_t hBinding, [in] DWORD dwJobTypes, [out, size_is(,*BufferSize)] LPBYTE *Buffer, [out, ref] LPDWORD BufferSize, [out, ref] LPDWORD lpdwJobs ); error_status_t FAX_GetJobEx( [in] handle_t hBinding, [in] DWORDLONG dwlMessageID, [out, size_is(,*BufferSize)] LPBYTE *Buffer, [out, ref] LPDWORD BufferSize ); error_status_t FAX_GetCountryList( [in] handle_t FaxHandle, [out, size_is(,*BufferSize)] LPBYTE *Buffer, [out, ref] LPDWORD BufferSize ); error_status_t FAX_GetPersonalProfileInfo ( [in] handle_t hBinding, [in] DWORDLONG dwlMessageId, [in] FAX_ENUM_MESSAGE_FOLDER dwFolder, [in] FAX_ENUM_PERSONAL_PROF_TYPES ProfType, [out, size_is(,*BufferSize)] LPBYTE *Buffer, [out, ref] LPDWORD BufferSize ); error_status_t FAX_GetQueueStates ( [in] handle_t hFaxHandle, [out] LPDWORD pdwQueueStates ); error_status_t FAX_SetQueue ( [in] handle_t hFaxHandle, [in] DWORD dwQueueStates ); error_status_t FAX_GetReceiptsConfiguration ( [in] handle_t hFaxHandle, [out, size_is(,*BufferSize)] LPBYTE *Buffer, [out, ref] LPDWORD BufferSize ); error_status_t FAX_SetReceiptsConfiguration ( [in] handle_t hFaxHandle, [in, ref] PFAX_RECEIPTS_CONFIGW pReceipts ); error_status_t FAX_GetReceiptsOptions ( [in] handle_t hFaxHandle, [out, ref] LPDWORD lpdwReceiptsOptions ); error_status_t FAX_GetVersion ( [in] handle_t hFaxHandle, [in, out] PFAX_VERSION pVersion ); error_status_t FAX_GetOutboxConfiguration ( [in] handle_t hFaxHandle, [out, size_is(,*BufferSize)] LPBYTE *Buffer, [out, ref] LPDWORD BufferSize ); error_status_t FAX_SetOutboxConfiguration ( [in] handle_t hFaxHandle, [in, ref] PFAX_OUTBOX_CONFIG pOutboxCfg ); error_status_t FAX_GetPersonalCoverPagesOption ( [in] handle_t hFaxHandle, [out, ref] LPBOOL lpbPersonalCPAllowed ); error_status_t FAX_GetArchiveConfiguration ( [in] handle_t hFaxHandle, [in] FAX_ENUM_MESSAGE_FOLDER Folder, [out, size_is(,*BufferSize)] LPBYTE *Buffer, [out, ref] LPDWORD BufferSize ); error_status_t FAX_SetArchiveConfiguration ( [in] handle_t hFaxHandle, [in] FAX_ENUM_MESSAGE_FOLDER Folder, [in, ref] LPBYTE pArchiveCfg ); error_status_t FAX_GetActivityLoggingConfiguration ( [in] handle_t hFaxHandle, [out, size_is(,*BufferSize)] LPBYTE *Buffer, [out, ref] LPDWORD BufferSize ); error_status_t FAX_SetActivityLoggingConfiguration ( [in] handle_t hFaxHandle, [in, ref] PFAX_ACTIVITY_LOGGING_CONFIGW pActivLogCfg ); error_status_t FAX_EnumerateProviders ( [in] handle_t hFaxHandle, [out, size_is(,*BufferSize)] LPBYTE *Buffer, [out, ref] LPDWORD BufferSize, [out, ref] LPDWORD lpdwNumProviders ); error_status_t FAX_GetPortEx ( [in] handle_t hFaxHandle, [in] DWORD dwDeviceId, [out, size_is(,*BufferSize)] LPBYTE *Buffer, [out, ref] LPDWORD BufferSize ); error_status_t FAX_SetPortEx ( [in] handle_t hFaxHandle, [in] DWORD dwDeviceId, [in, ref] PFAX_PORT_INFO_EXW pPortInfo ); error_status_t FAX_EnumPortsEx ( [in] handle_t hFaxHandle, [out, size_is(,*BufferSize)] LPBYTE *Buffer, [out, ref] LPDWORD BufferSize, [out, ref] LPDWORD lpdwNumPorts ); error_status_t FAX_GetExtensionData ( [in] handle_t hFaxHandle, [in] DWORD dwDeviceId, [in,string,ref] LPCWSTR lpcwstrNameGUID, [out, size_is(,*lpdwDataSize)] LPBYTE *ppData, [out, ref] LPDWORD lpdwDataSize ); error_status_t FAX_SetExtensionData ( [in] handle_t hFaxHandle, [in,string] LPCWSTR lpcwstrComputerName, [in] DWORD dwDeviceId, [in,string] LPCWSTR lpcwstrNameGUID, [in, ref, size_is(dwDataSize)] LPBYTE pData, [in,range(0,FAX_MAX_RPC_BUFFER)] DWORD dwDataSize ); error_status_t FAX_AddOutboundGroup ( [in] handle_t hFaxHandle, [in, string,ref] LPCWSTR lpwstrGroupName ); error_status_t FAX_SetOutboundGroup ( [in] handle_t hFaxHandle, [in, ref] PRPC_FAX_OUTBOUND_ROUTING_GROUPW pGroup ); error_status_t FAX_RemoveOutboundGroup ( [in] handle_t hFaxHandle, [in, string, ref] LPCWSTR lpwstrGroupName ); error_status_t FAX_EnumOutboundGroups ( [in] handle_t hFaxHandle, [out, size_is(,*lpdwDataSize)] LPBYTE *ppData, [out, ref] LPDWORD lpdwDataSize, [out, ref] LPDWORD lpdwNumGroups ); error_status_t FAX_SetDeviceOrderInGroup ( [in] handle_t hFaxHandle, [in, string, ref] LPCWSTR lpwstrGroupName, [in] DWORD dwDeviceId, [in] DWORD dwNewOrder ); error_status_t FAX_AddOutboundRule ( [in] handle_t hFaxHandle, [in] DWORD dwAreaCode, [in] DWORD dwCountryCode, [in] DWORD dwDeviceId, [in, string, unique] LPCWSTR lpwstrGroupName, [in] BOOL bUseGroup ); error_status_t FAX_RemoveOutboundRule ( [in] handle_t hFaxHandle, [in] DWORD dwAreaCode, [in] DWORD dwCountryCode ); error_status_t FAX_SetOutboundRule ( [in] handle_t hFaxHandle, [in, ref] FAX_OUTBOUND_ROUTING_RULEW* pRule ); error_status_t FAX_EnumOutboundRules ( [in] handle_t hFaxHandle, [out, size_is(,*lpdwDataSize)] LPBYTE *ppData, [out, ref] LPDWORD lpdwDataSize, [out, ref] LPDWORD lpdwNumRules ); error_status_t FAX_RegisterServiceProviderEx ( [in] handle_t hFaxHandle, [in,string,ref] LPCWSTR lpcwstrGUID, [in,string,ref] LPCWSTR lpcwstrFriendlyName, [in,string,ref] LPCWSTR lpcwstrImageName, [in,string,ref] LPCWSTR lpcwstrTspName, [in] DWORD dwFSPIVersion, [in] DWORD dwCapabilities ); error_status_t FAX_UnregisterServiceProviderEx ( [in] handle_t hFaxHandle, [in,string,ref] LPCWSTR lpcwstrGUID ); error_status_t FAX_UnregisterRoutingExtension ( [in] handle_t hFaxHandle, [in,string,ref] LPCWSTR lpcwstrExtensionName ); error_status_t FAX_StartMessagesEnum ( [in] handle_t hFaxHandle, [in] FAX_ENUM_MESSAGE_FOLDER Folder, [out,ref] PRPC_FAX_MSG_ENUM_HANDLE lpHandle ); error_status_t FAX_EndMessagesEnum ( [in,out,ref] PRPC_FAX_MSG_ENUM_HANDLE lpHandle ); error_status_t FAX_EnumMessages( [in,ref] RPC_FAX_MSG_ENUM_HANDLE hEnum, [in] DWORD dwNumMessages, [out, size_is(,*lpdwBufferSize)] LPBYTE *lppBuffer, [out, ref] LPDWORD lpdwBufferSize, [out, ref] LPDWORD lpdwNumMessagesRetrieved ); error_status_t FAX_GetMessage ( [in] handle_t hFaxHandle, [in] DWORDLONG dwlMessageId, [in] FAX_ENUM_MESSAGE_FOLDER Folder, [out, size_is(,*lpdwBufferSize)] LPBYTE *lppBuffer, [out, ref] LPDWORD lpdwBufferSize ); error_status_t FAX_RemoveMessage ( [in] handle_t hFaxHandle, [in] DWORDLONG dwlMessageId, [in] FAX_ENUM_MESSAGE_FOLDER Folder ); error_status_t FAX_StartCopyToServer ( [in] handle_t hFaxHandle, [in,string,ref] LPCWSTR lpcwstrFileExt, [in,out,string,ref] LPWSTR lpwstrServerFileName, [out,ref] PRPC_FAX_COPY_HANDLE lpHandle ); error_status_t FAX_StartCopyMessageFromServer ( [in] handle_t hFaxHandle, [in] DWORDLONG dwlMessageId, [in] FAX_ENUM_MESSAGE_FOLDER Folder, [out,ref] PRPC_FAX_COPY_HANDLE lpHandle ); error_status_t FAX_WriteFile ( [in,ref] RPC_FAX_COPY_HANDLE hCopy, [in,ref,size_is(dwDataSize)] LPBYTE lpbData, [in, range(0,RPC_COPY_BUFFER_SIZE)] DWORD dwDataSize ); error_status_t FAX_ReadFile ( [in,ref] RPC_FAX_COPY_HANDLE hCopy, [in] DWORD dwMaxDataSize, [out,ref,size_is(*lpdwDataSize)] LPBYTE lpbData, [in,out,ref] LPRANGED_DWORD lpdwDataSize ); error_status_t FAX_EndCopy ( [in,out,ref] PRPC_FAX_COPY_HANDLE lphCopy ); error_status_t FAX_StartServerNotification( [in] handle_t hBinding, [in, string, ref] LPCWSTR lpcwstrMachineName, [in, string, ref] LPCWSTR lpcwstrEndPoint, [in] ULONG64 Context, [in, ref, string] LPCWSTR lpcwstrProtseqString, [in] BOOL bEventEx, [in] DWORD dwEventTypes, [out,ref] PRPC_FAX_EVENT_HANDLE lpHandle ); error_status_t FAX_StartServerNotificationEx( [in] handle_t hBinding, [in, string, ref] LPCWSTR lpcwstrMachineName, [in, string, ref] LPCWSTR lpcwstrEndPoint, [in] ULONG64 Context, [in, ref, string] LPCWSTR lpcwstrProtSeq, [in] BOOL bEventEx, [in] DWORD dwEventTypes, [out,ref] PRPC_FAX_EVENT_EX_HANDLE lpHandle ); error_status_t FAX_EndServerNotification ( [in,out,ref] PRPC_FAX_EVENT_EX_HANDLE lpHandle ); error_status_t FAX_GetServerActivity( [in] handle_t hFaxHandle, [in, out, ref] PFAX_SERVER_ACTIVITY pServerActivity ); error_status_t FAX_SetConfigWizardUsed ( [in] handle_t hFaxHandle, [in] BOOL bConfigWizardUsed ); error_status_t FAX_EnumRoutingExtensions ( [in] handle_t hFaxHandle, [out, size_is(,*BufferSize)] LPBYTE *Buffer, [out, ref] LPDWORD BufferSize, [out, ref] LPDWORD lpdwNumExts ); error_status_t FAX_ConnectFaxServer( [in] handle_t hBinding, [in] DWORD dwClientAPIVersion, [out, ref] LPDWORD lpdwServerAPIVersion, [out, ref] PRPC_FAX_SVC_HANDLE pHandle ); error_status_t FAX_GetSecurityEx( [in] handle_t hBinding, [in] SECURITY_INFORMATION SecurityInformation, [out, size_is(,*lpdwBufferSize)] LPBYTE * pSecurityDescriptor, [out, ref] LPDWORD lpdwBufferSize ); error_status_t FAX_RefreshArchive( [in] handle_t hFaxHandle, [in] FAX_ENUM_MESSAGE_FOLDER Folder ); error_status_t FAX_SetRecipientsLimit( [in] handle_t hbinding, [in] DWORD dwRecipientsLimit ); error_status_t FAX_GetRecipientsLimit( [in] handle_t hbinding, [out, ref] LPDWORD lpdwRecipientsLimit ); error_status_t FAX_GetServerSKU( [in] handle_t hbinding, [out, ref] PRODUCT_SKU_TYPE* pServerSKU ); error_status_t FAX_CheckValidFaxFolder( [in] handle_t hBinding, [in, string, ref] LPCWSTR lpcwstrPath ); error_status_t FAX_GetJobEx2( [in] handle_t hBinding, [in] DWORDLONG dwlMessageID, [in] DWORD level, [out, size_is(,*BufferSize)] LPBYTE *Buffer, [out, ref] LPDWORD BufferSize ); error_status_t FAX_EnumJobsEx2( [in] handle_t hBinding, [in] BOOL fAllAccounts, [in, string, unique] LPCWSTR lpcwstrAccountName, [in] DWORD dwJobTypes, [in] DWORD level, [out, size_is(,*BufferSize)] LPBYTE *Buffer, [out, ref] LPDWORD BufferSize, [out, ref] LPDWORD lpdwJobs ); error_status_t FAX_GetMessageEx ( [in] handle_t hFaxHandle, [in] DWORDLONG dwlMessageId, [in] FAX_ENUM_MESSAGE_FOLDER Folder, [in] DWORD level, [out, size_is(,*lpdwBufferSize)] LPBYTE *lppBuffer, [out, ref] LPDWORD lpdwBufferSize ); error_status_t FAX_StartMessagesEnumEx ( [in] handle_t hFaxHandle, [in] BOOL fAllAccounts, [in, string, unique] LPCWSTR lpcwstrAccountName, [in] FAX_ENUM_MESSAGE_FOLDER Folder, [in] DWORD level, [out,ref] PRPC_FAX_MSG_ENUM_HANDLE lpHandle ); error_status_t FAX_EnumMessagesEx( [in,ref] RPC_FAX_MSG_ENUM_HANDLE hEnum, [in] DWORD dwNumMessages, [out, size_is(,*lpdwBufferSize)] LPBYTE *lppBuffer, [out, ref] LPDWORD lpdwBufferSize, [out, ref] LPDWORD lpdwNumMessagesRetrieved, [out, ref] LPDWORD lpdwLevel ); error_status_t FAX_StartServerNotificationEx2( [in] handle_t hBinding, [in, string, unique] LPCWSTR lpcwstrAccountName, [in, string, ref] LPCWSTR lpcwstrMachineName, [in, string, ref] LPCWSTR lpcwstrEndPoint, [in] ULONG64 Context, [in, ref, string] LPCWSTR lpcwstrProtseqString, [in] DWORD dwEventTypes, [in] DWORD level, [out,ref] PRPC_FAX_EVENT_EX_HANDLE lpHandle ); error_status_t FAX_CreateAccount( [in] handle_t hBinding, [in] DWORD level, [in, ref, size_is(BufferSize)] LPBYTE Buffer, [in,range(0,FAX_MAX_RPC_BUFFER)] DWORD BufferSize ); error_status_t FAX_DeleteAccount( [in] handle_t hBinding, [in, string, unique] LPCWSTR lpcwstrAccountName ); error_status_t FAX_EnumAccounts( [in] handle_t hBinding, [in] DWORD level, [out, size_is(,*BufferSize)] LPBYTE *Buffer, [out, ref] LPDWORD BufferSize, [out, ref] LPDWORD lpdwAccounts ); error_status_t FAX_GetAccountInfo( [in] handle_t hBinding, [in, string, unique] LPCWSTR lpcwstrAccountName, [in] DWORD level, [out, size_is(,*BufferSize)] LPBYTE *Buffer, [out, ref] LPDWORD BufferSize ); error_status_t FAX_GetGeneralConfiguration( [in] handle_t hBinding, [in] DWORD level, [out, size_is(,*BufferSize)] LPBYTE *Buffer, [out, ref] LPDWORD BufferSize ); error_status_t FAX_SetGeneralConfiguration( [in] handle_t hBinding, [in] DWORD level, [in, ref, size_is(BufferSize)] LPBYTE Buffer, [in,range(0,FAX_MAX_RPC_BUFFER)] DWORD BufferSize ); error_status_t FAX_GetSecurityEx2( [in] handle_t hBinding, [in] SECURITY_INFORMATION SecurityInformation, [out, size_is(,*lpdwBufferSize)] LPBYTE * pSecurityDescriptor, [out, ref] LPDWORD lpdwBufferSize ); error_status_t FAX_SetSecurityEx2( [in] handle_t hBinding, [in] SECURITY_INFORMATION SecurityInformation, [in, unique, size_is(dwBufferSize)] LPBYTE pSecurityDescriptor, [in, range(0,FAX_MAX_RPC_BUFFER)] DWORD dwBufferSize ); error_status_t FAX_AccessCheckEx2( [in] handle_t hBinding, [in] DWORD AccessMask, [out, ref] BOOL* pfAccess, [in, out, unique] LPDWORD lpdwRights ); error_status_t FAX_ReAssignMessage( [in] handle_t hBinding, [in] DWORDLONG dwlMessageId, [in, ref] PFAX_REASSIGN_INFO pReAssignInfo ); error_status_t FAX_SetMessage( [in] handle_t hFaxHandle, [in] DWORDLONG dwlMessageId, [in] FAX_ENUM_MESSAGE_FOLDER Folder, [in, ref] PFAX_MESSAGE_PROPS lpMessageProps ); error_status_t FAX_GetConfigOption( [in] handle_t hFaxHandle, [in] FAX_ENUM_CONFIG_OPTION option, [out] LPDWORD lpdwValue); }