windows-nt/Source/XPSP1/NT/public/sdk/inc/faxext.h
2020-09-26 16:20:57 +08:00

124 lines
3.8 KiB
C

/*++
Copyright (c) Microsoft Corporation. All rights reserved.
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 of EFSP
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_