Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

4343 lines
72 KiB

/*++ BUILD Version: 0000 // Increment this if a change has global effects
Copyright (c) 1995-1997 Microsoft Corporation
Module Name:
line.h
Abstract:
Header file for tapi server line functions
Author:
Dan Knudson (DanKn) 01-Apr-1995
Revision History:
--*/
#define MAXLEN_NAME 96
#define MAXLEN_RULE 128
#define ANY_RT_HCALL 1
#define ANY_RT_HLINE 2
#define DEVICE_ID 3
#if DBG
#define LINEPROLOG(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14) \
LineProlog(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14)
#define LINEEPILOGSYNC(a1,a2,a3,a4,a5) LineEpilogSync(a1,a2,a3,a4,a5)
#define LINEEPILOGASYNC(a1,a2,a3,a4,a5,a6,a7) \
LineEpilogAsync(a1,a2,a3,a4,a5,a6,a7)
#else
#define LINEPROLOG(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14) \
LineProlog(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13)
#define LINEEPILOGSYNC(a1,a2,a3,a4,a5) LineEpilogSync(a1,a2,a3,a4)
#define LINEEPILOGASYNC(a1,a2,a3,a4,a5,a6,a7) \
LineEpilogAsync(a1,a2,a3,a4,a5,a6)
#endif
#define AllAddressTypes \
(LINEADDRESSTYPE_PHONENUMBER | \
LINEADDRESSTYPE_SDP | \
LINEADDRESSTYPE_EMAILNAME | \
LINEADDRESSTYPE_DOMAINNAME | \
LINEADDRESSTYPE_IPADDRESS)
#define AllAddressStates1_0 \
(LINEADDRESSSTATE_OTHER | \
LINEADDRESSSTATE_DEVSPECIFIC | \
LINEADDRESSSTATE_INUSEZERO | \
LINEADDRESSSTATE_INUSEONE | \
LINEADDRESSSTATE_INUSEMANY | \
LINEADDRESSSTATE_NUMCALLS | \
LINEADDRESSSTATE_FORWARD | \
LINEADDRESSSTATE_TERMINALS)
#define AllAddressStates1_4 \
(AllAddressStates1_0 | \
LINEADDRESSSTATE_CAPSCHANGE)
//#define AllAddressStates2_0 \
// (AllAddressStates1_4 | \
// LINEADDRESSSTATE_AGENT | \
// LINEADDRESSSTATE_AGENTSTATE | \
// LINEADDRESSSTATE_AGENTACTIVITY)
#define AllAgentStates \
(LINEAGENTSTATE_LOGGEDOFF | \
LINEAGENTSTATE_NOTREADY | \
LINEAGENTSTATE_READY | \
LINEAGENTSTATE_BUSYACD | \
LINEAGENTSTATE_BUSYINCOMING | \
LINEAGENTSTATE_BUSYOUTBOUND | \
LINEAGENTSTATE_BUSYOTHER | \
LINEAGENTSTATE_WORKINGAFTERCALL | \
LINEAGENTSTATE_UNKNOWN | \
LINEAGENTSTATE_UNAVAIL | \
0xffff0000)
#define AllAgentStatus \
(LINEAGENTSTATUS_GROUP | \
LINEAGENTSTATUS_STATE | \
LINEAGENTSTATUS_NEXTSTATE | \
LINEAGENTSTATUS_ACTIVITY | \
LINEAGENTSTATUS_ACTIVITYLIST | \
LINEAGENTSTATUS_GROUPLIST | \
LINEAGENTSTATUS_CAPSCHANGE | \
LINEAGENTSTATUS_VALIDSTATES | \
LINEAGENTSTATUS_VALIDNEXTSTATES)
#define AllAgentSessionStates \
(LINEAGENTSESSIONSTATE_NOTREADY | \
LINEAGENTSESSIONSTATE_READY | \
LINEAGENTSESSIONSTATE_BUSYONCALL | \
LINEAGENTSESSIONSTATE_BUSYWRAPUP | \
LINEAGENTSESSIONSTATE_ENDED | \
LINEAGENTSESSIONSTATE_RELEASED)
#define AllAgentSessionStatus \
(LINEAGENTSESSIONSTATUS_NEWSESSION | \
LINEAGENTSESSIONSTATUS_STATE | \
LINEAGENTSESSIONSTATUS_UPDATEINFO)
#define AllAgentStatusEx \
(LINEAGENTSTATUSEX_NEWAGENT | \
LINEAGENTSTATUSEX_STATE | \
LINEAGENTSTATUSEX_UPDATEINFO)
#define AllAgentStatesEx \
(LINEAGENTSTATEEX_NOTREADY | \
LINEAGENTSTATEEX_READY | \
LINEAGENTSTATEEX_BUSYACD | \
LINEAGENTSTATEEX_BUSYINCOMING | \
LINEAGENTSTATEEX_BUSYOUTGOING | \
LINEAGENTSTATEEX_UNKNOWN | \
LINEAGENTSTATEEX_RELEASED)
#define AllBearerModes1_0 \
(LINEBEARERMODE_VOICE | \
LINEBEARERMODE_SPEECH | \
LINEBEARERMODE_MULTIUSE | \
LINEBEARERMODE_DATA | \
LINEBEARERMODE_ALTSPEECHDATA | \
LINEBEARERMODE_NONCALLSIGNALING)
#define AllBearerModes1_4 \
(AllBearerModes1_0 | \
LINEBEARERMODE_PASSTHROUGH)
#define AllBearerModes2_0 \
(AllBearerModes1_4 | \
LINEBEARERMODE_RESTRICTEDDATA)
#define AllCallComplModes \
(LINECALLCOMPLMODE_CAMPON | \
LINECALLCOMPLMODE_CALLBACK | \
LINECALLCOMPLMODE_INTRUDE | \
LINECALLCOMPLMODE_MESSAGE)
#define AllCallParamFlags1_0 \
(LINECALLPARAMFLAGS_SECURE | \
LINECALLPARAMFLAGS_IDLE | \
LINECALLPARAMFLAGS_BLOCKID | \
LINECALLPARAMFLAGS_ORIGOFFHOOK | \
LINECALLPARAMFLAGS_DESTOFFHOOK)
#define AllCallParamFlags2_0 \
(LINECALLPARAMFLAGS_SECURE | \
LINECALLPARAMFLAGS_IDLE | \
LINECALLPARAMFLAGS_BLOCKID | \
LINECALLPARAMFLAGS_ORIGOFFHOOK | \
LINECALLPARAMFLAGS_DESTOFFHOOK | \
LINECALLPARAMFLAGS_NOHOLDCONFERENCE | \
LINECALLPARAMFLAGS_PREDICTIVEDIAL | \
LINECALLPARAMFLAGS_ONESTEPTRANSFER)
#define AllCallSelects \
(LINECALLSELECT_LINE | \
LINECALLSELECT_ADDRESS | \
LINECALLSELECT_CALL)
#define AllForwardModes1_0 \
(LINEFORWARDMODE_UNCOND | \
LINEFORWARDMODE_UNCONDINTERNAL | \
LINEFORWARDMODE_UNCONDEXTERNAL | \
LINEFORWARDMODE_UNCONDSPECIFIC | \
LINEFORWARDMODE_BUSY | \
LINEFORWARDMODE_BUSYINTERNAL | \
LINEFORWARDMODE_BUSYEXTERNAL | \
LINEFORWARDMODE_BUSYSPECIFIC | \
LINEFORWARDMODE_NOANSW | \
LINEFORWARDMODE_NOANSWINTERNAL | \
LINEFORWARDMODE_NOANSWEXTERNAL | \
LINEFORWARDMODE_NOANSWSPECIFIC | \
LINEFORWARDMODE_BUSYNA | \
LINEFORWARDMODE_BUSYNAINTERNAL | \
LINEFORWARDMODE_BUSYNAEXTERNAL | \
LINEFORWARDMODE_BUSYNASPECIFIC)
#define AllForwardModes1_4 \
(AllForwardModes1_0 | \
LINEFORWARDMODE_UNKNOWN | \
LINEFORWARDMODE_UNAVAIL)
#define AllGroupStatus \
(LINEGROUPSTATUS_NEWGROUP | \
LINEGROUPSTATUS_GROUPREMOVED)
#define AllLineStates1_0 \
(LINEDEVSTATE_OTHER | \
LINEDEVSTATE_RINGING | \
LINEDEVSTATE_CONNECTED | \
LINEDEVSTATE_DISCONNECTED | \
LINEDEVSTATE_MSGWAITON | \
LINEDEVSTATE_MSGWAITOFF | \
LINEDEVSTATE_INSERVICE | \
LINEDEVSTATE_OUTOFSERVICE | \
LINEDEVSTATE_MAINTENANCE | \
LINEDEVSTATE_OPEN | \
LINEDEVSTATE_CLOSE | \
LINEDEVSTATE_NUMCALLS | \
LINEDEVSTATE_NUMCOMPLETIONS | \
LINEDEVSTATE_TERMINALS | \
LINEDEVSTATE_ROAMMODE | \
LINEDEVSTATE_BATTERY | \
LINEDEVSTATE_SIGNAL | \
LINEDEVSTATE_DEVSPECIFIC | \
LINEDEVSTATE_REINIT | \
LINEDEVSTATE_LOCK)
#define AllLineStates1_4 \
(AllLineStates1_0 | \
LINEDEVSTATE_CAPSCHANGE | \
LINEDEVSTATE_CONFIGCHANGE | \
LINEDEVSTATE_TRANSLATECHANGE | \
LINEDEVSTATE_COMPLCANCEL | \
LINEDEVSTATE_REMOVED)
#define AllMediaModes1_0 \
(LINEMEDIAMODE_UNKNOWN | \
LINEMEDIAMODE_INTERACTIVEVOICE | \
LINEMEDIAMODE_AUTOMATEDVOICE | \
LINEMEDIAMODE_DIGITALDATA | \
LINEMEDIAMODE_G3FAX | \
LINEMEDIAMODE_G4FAX | \
LINEMEDIAMODE_DATAMODEM | \
LINEMEDIAMODE_TELETEX | \
LINEMEDIAMODE_VIDEOTEX | \
LINEMEDIAMODE_TELEX | \
LINEMEDIAMODE_MIXED | \
LINEMEDIAMODE_TDD | \
LINEMEDIAMODE_ADSI)
#define AllMediaModes1_4 \
(AllMediaModes1_0 | \
LINEMEDIAMODE_VOICEVIEW)
#define AllMediaModes2_1 \
(AllMediaModes1_4 | \
LINEMEDIAMODE_VIDEO)
#define AllProxyStatus \
(LINEPROXYSTATUS_OPEN | \
LINEPROXYSTATUS_CLOSE)
#define AllRequiredACDProxyRequests3_0 \
((1<<LINEPROXYREQUEST_GETAGENTCAPS) | \
(1<<LINEPROXYREQUEST_CREATEAGENT) | \
(1<<LINEPROXYREQUEST_SETAGENTMEASUREMENTPERIOD) | \
(1<<LINEPROXYREQUEST_GETAGENTINFO) | \
(1<<LINEPROXYREQUEST_CREATEAGENTSESSION) | \
(1<<LINEPROXYREQUEST_GETAGENTSESSIONLIST) | \
(1<<LINEPROXYREQUEST_SETAGENTSESSIONSTATE) | \
(1<<LINEPROXYREQUEST_GETAGENTSESSIONINFO) | \
(1<<LINEPROXYREQUEST_GETQUEUELIST) | \
(1<<LINEPROXYREQUEST_SETQUEUEMEASUREMENTPERIOD) | \
(1<<LINEPROXYREQUEST_GETQUEUEINFO) | \
(1<<LINEPROXYREQUEST_GETGROUPLIST) | \
(1<<LINEPROXYREQUEST_SETAGENTSTATEEX))
#define AllQueueStatus \
(LINEQUEUESTATUS_UPDATEINFO | \
LINEQUEUESTATUS_NEWQUEUE | \
LINEQUEUESTATUS_QUEUEREMOVED)
#define AllTerminalModes \
(LINETERMMODE_BUTTONS | \
LINETERMMODE_LAMPS | \
LINETERMMODE_DISPLAY | \
LINETERMMODE_RINGER | \
LINETERMMODE_HOOKSWITCH | \
LINETERMMODE_MEDIATOLINE | \
LINETERMMODE_MEDIAFROMLINE | \
LINETERMMODE_MEDIABIDIRECT)
LONG
PASCAL
LineProlog(
PTCLIENT ptClient,
DWORD dwArgType,
DWORD dwArg,
LPVOID phdXxx,
DWORD dwPrivilege,
HANDLE *phMutex,
BOOL *pbCloseMutex,
DWORD dwTSPIFuncIndex,
TSPIPROC *ppfnTSPI_lineXxx,
PASYNCREQUESTINFO *ppAsyncRequestInfo,
DWORD dwRemoteRequestID,
DWORD *pObjectToDereference,
LPVOID *pContext
#if DBG
,char *pszFuncName
#endif
);
void
PASCAL
LineEpilogSync(
LONG *plResult,
HANDLE hMutex,
BOOL bCloseMutex,
DWORD ObjectToDereference
#if DBG
,char *pszFuncName
#endif
);
PTLINEAPP
PASCAL
IsValidLineApp(
HLINEAPP hLineApp,
PTCLIENT ptClient
);
typedef struct _LINEACCEPT_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN DWORD dwRemoteRequestID;
};
union
{
IN HCALL hCall;
};
union
{
IN DWORD dwUserUserInfoOffset; // valid offset or
};
union
{
IN DWORD dwSize;
};
} LINEACCEPT_PARAMS, *PLINEACCEPT_PARAMS;
typedef struct _LINEADDTOCONFERENCE_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN DWORD dwRemoteRequestID;
};
union
{
IN HCALL hConfCall;
};
union
{
IN HCALL hConsultCall;
};
} LINEADDTOCONFERENCE_PARAMS, *PLINEADDTOCONFERENCE_PARAMS;
typedef struct _LINEAGENTSPECIFIC_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN DWORD dwRemoteRequestID;
};
// IN DWORD hfnPostProcessProc;
IN DWORD hfnPostProcessProc;
union
{
IN HLINE hLine;
};
union
{
IN DWORD dwAddressID;
};
union
{
IN DWORD dwAgentExtensionIDIndex;
};
// IN ULONG_PTR lpParams; // pointer to client buffer
IN DWORD hpParams;
union
{
IN DWORD dwParamsOffset; // valid offset or
};
union
{
IN DWORD dwParamsSize;
};
} LINEAGENTSPECIFIC_PARAMS, *PLINEAGENTSPECIFIC_PARAMS;
typedef struct _LINEANSWER_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN DWORD dwRemoteRequestID;
};
union
{
IN HCALL hCall;
};
union
{
IN DWORD dwUserUserInfoOffset; // valid offset or
};
union
{
IN DWORD dwUserUserInfoSize;
};
} LINEANSWER_PARAMS, *PLINEANSWER_PARAMS;
typedef struct _LINEBLINDTRANSFER_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN DWORD dwRemoteRequestID;
};
union
{
IN HCALL hCall;
};
union
{
IN DWORD dwDestAddressOffset; // always valid offset
};
union
{
IN DWORD dwCountryCode;
};
} LINEBLINDTRANSFER_PARAMS, *PLINEBLINDTRANSFER_PARAMS;
typedef struct _LINECLOSE_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN HLINE hLine;
};
OUT DWORD dwCallbackInstance;
} LINECLOSE_PARAMS, *PLINECLOSE_PARAMS;
typedef struct _LINECLOSEMSPINSTANCE_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN HLINE hLine;
};
} LINECLOSEMSPINSTANCE_PARAMS, *PLINECLOSEMSPINSTANCE_PARAMS;
typedef struct _LINECOMPLETECALL_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN DWORD dwRemoteRequestID;
};
IN DWORD hfnPostProcessProc;
union
{
IN HCALL hCall;
};
IN DWORD hpdwCompletionID;
union
{
IN DWORD dwCompletionMode;
};
union
{
IN DWORD dwMessageID;
};
} LINECOMPLETECALL_PARAMS, *PLINECOMPLETECALL_PARAMS;
typedef struct _LINECOMPLETETRANSFER_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN DWORD dwRemoteRequestID;
};
IN DWORD hfnPostProcessProc;
union
{
IN HCALL hCall;
};
union
{
IN HCALL hConsultCall;
};
IN DWORD hpConfCallHandle; // pointer to client buffer
union
{
IN DWORD dwTransferMode;
};
} LINECOMPLETETRANSFER_PARAMS, *PLINECOMPLETETRANSFER_PARAMS;
typedef struct _LINECONDITIONALMEDIADETECTION_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN HLINE hLine;
};
union
{
IN DWORD dwMediaModes;
};
union
{
IN DWORD dwCallParamsOffset;
};
union
{
IN DWORD dwAsciiCallParamsCodePage;
};
} LINECONDITIONALMEDIADETECTION_PARAMS, *PLINECONDITIONALMEDIADETECTION_PARAMS;
typedef struct _LINECONFIGPROVIDER_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN DWORD dwwndOwner;
};
union
{
IN DWORD dwPermanentProviderID;
};
} LINECONFIGPROVIDER_PARAMS, *PLINECONFIGPROVIDER_PARAMS;
typedef struct _LINECREATEAGENT_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN DWORD dwRemoteRequestID;
};
// IN DWORD hfnPostProcessProc;
IN DWORD hfnPostProcessProc;
union
{
IN HLINE hLine;
};
union
{
IN DWORD dwAgentIDOffset; // valid offset or
};
// TAPI_NO_DATA
union
{
IN DWORD dwAgentPINOffset; // valid offset or
// TAPI_NO_DATA
};
// IN ULONG_PTR lphAgent; // pointer to client buffer
IN DWORD hpAgent; // pointer to client buffer
} LINECREATEAGENT_PARAMS, * PLINECREATEAGENT_PARAMS;
typedef struct _LINECREATEAGENTSESSION_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN DWORD dwRemoteRequestID;
};
// IN DWORD hfnPostProcessProc;
IN DWORD hfnPostProcessProc;
union
{
IN HLINE hLine;
};
union
{
IN HAGENT hAgent;
};
union
{
IN DWORD dwAgentPINOffset; // valid offset or
// TAPI_NO_DATA
};
union
{
IN DWORD dwWorkingAddressID;
};
union
{
IN DWORD dwGroupIDOffset;
};
union
{
IN DWORD dwGroupIDSize;
};
IN DWORD hpAgentSessionHandle; // pointer to client buffer
} LINECREATEAGENTSESSION_PARAMS, *PLINECREATEAGENTSESSION_PARAMS;
typedef struct _LINECREATEMSPINSTANCE_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN HLINE hLine;
};
union
{
IN DWORD dwAddressID;
};
} LINECREATEMSPINSTANCE_PARAMS, *PLINECREATEMSPINSTANCE_PARAMS;
typedef struct _LINEDEALLOCATECALL_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN HCALL hCall;
};
} LINEDEALLOCATECALL_PARAMS, *PLINEDEALLOCATECALL_PARAMS;
typedef struct _LINEDEVSPECIFIC_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN DWORD dwRemoteRequestID;
};
// IN DWORD hfnPostProcessProc;
IN DWORD hfnPostProcessProc;
union
{
IN HLINE hLine;
};
union
{
IN DWORD dwAddressID;
};
union
{
IN HCALL hCall;
};
IN DWORD hpParams; // pointer to client buffer
union
{
IN DWORD dwParamsOffset; // valid offset or
};
union
{
IN DWORD dwParamsSize;
};
} LINEDEVSPECIFIC_PARAMS, *PLINEDEVSPECIFIC_PARAMS;
typedef struct _LINEDEVSPECIFICEX_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN DWORD dwRemoteRequestID;
};
// IN DWORD hfnPostProcessProc;
IN DWORD hfnPostProcessProc;
union
{
IN DWORD dwProviderID;
};
union
{
IN DWORD dwDeviceID;
};
union
{
IN DWORD dwAddressID;
};
union
{
IN HCALL hCall;
};
union
{
IN HCALLHUB hCallHub;
};
union
{
IN DWORD dwSelect;
};
IN DWORD hpParams; // pointer to client buffer
union
{
IN DWORD dwParamsOffset; // valid offset or
// TAPI_NO_DATA
};
union
{
IN DWORD dwParamsSize;
};
} LINEDEVSPECIFICEX_PARAMS, *PLINEDEVSPECIFICEX_PARAMS;
typedef struct _LINEDEVSPECIFICFEATURE_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN DWORD dwRemoteRequestID;
};
// IN DWORD hfnPostProcessProc;
IN DWORD hfnPostProcessProc;
union
{
IN DWORD hLine;
};
union
{
IN DWORD dwFeature;
};
IN DWORD hpParams; // pointer to client buffer
union
{
IN DWORD dwParamsOffset; // valid offset or
// TAPI_NO_DATA
};
union
{
IN DWORD dwParamsSize;
};
} LINEDEVSPECIFICFEATURE_PARAMS, *PLINEDEVSPECIFICFEATURE_PARAMS;
typedef struct _LINEDIAL_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN DWORD dwRemoteRequestID;
};
union
{
IN HCALL hCall;
};
union
{
IN DWORD dwDestAddressOffset; // always valid offset
};
union
{
IN DWORD dwCountryCode;
};
} LINEDIAL_PARAMS, *PLINEDIAL_PARAMS;
typedef struct _LINEDROP_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN DWORD dwRemoteRequestID;
};
union
{
IN HCALL hCall;
};
union
{
IN DWORD dwUserUserInfoOffset; // valid offset or
};
union
{
IN DWORD dwSize;
};
} LINEDROP_PARAMS, *PLINEDROP_PARAMS;
typedef struct _LINEFORWARD_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN DWORD dwRemoteRequestID;
};
IN DWORD hfnPostProcessProc;
union
{
IN DWORD hLine;
};
union
{
IN DWORD bAllAddresses;
};
union
{
IN DWORD dwAddressID;
};
union
{
IN DWORD dwForwardListOffset; // always valid offset
};
union
{
IN DWORD dwNumRingsNoAnswer;
};
IN DWORD hpConsultCall; // pointer to client buffer
union
{
IN DWORD dwCallParamsOffset; // valid offset or
// TAPI_NO_DATA
};
union
{
IN DWORD dwAsciiCallParamsCodePage;
};
} LINEFORWARD_PARAMS, *PLINEFORWARD_PARAMS;
typedef struct _LINEGATHERDIGITS_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
IN DWORD hfnPostProcessProc;
union
{
IN HCALL hCall;
};
#if NEWTAPI32
union
{
IN DWORD dwEndToEndID;
};
#endif
union
{
IN DWORD dwDigitModes;
};
// IN ULONG_PTR lpsDigits; // pointer to client buffer
IN DWORD hpsDigits; // pointer to client buffer
union
{
IN DWORD dwNumDigits;
};
union
{
IN DWORD dwTerminationDigitsOffset; // valid offset or
// TAPI_NO_DATA
};
union
{
IN DWORD dwFirstDigitTimeout;
};
union
{
IN DWORD dwInterDigitTimeout;
};
} LINEGATHERDIGITS_PARAMS, *PLINEGATHERDIGITS_PARAMS;
typedef struct _LINEGENERATEDIGITS_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN DWORD hCall;
};
union
{
IN DWORD dwDigitMode;
};
union
{
IN DWORD dwDigitsOffset; // always valid offset
};
union
{
IN DWORD dwDuration;
};
union
{
IN DWORD dwEndToEndID; // Used for remotesp only
};
} LINEGENERATEDIGITS_PARAMS, *PLINEGENERATEDIGITS_PARAMS;
typedef struct _LINEGENERATETONE_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN HCALL hCall;
};
union
{
IN DWORD dwToneMode;
};
union
{
IN DWORD dwDuration;
};
union
{
IN DWORD dwNumTones;
};
union
{
IN DWORD dwTonesOffset; // valid offset or
};
IN DWORD _Unused_; // placeholdr for following
// Size arg on clnt side
union
{
IN DWORD dwEndToEndID; // Used for remotesp only
};
} LINEGENERATETONE_PARAMS, *PLINEGENERATETONE_PARAMS;
typedef struct _LINEGETADDRESSCAPS_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN HLINEAPP hLineApp;
};
union
{
IN DWORD dwDeviceID;
};
union
{
IN DWORD dwAddressID;
};
union
{
IN DWORD dwAPIVersion;
};
union
{
IN DWORD dwExtVersion;
};
union
{
IN DWORD dwAddressCapsTotalSize; // size of client buffer
OUT DWORD dwAddressCapsOffset; // valid offset on success
};
} LINEGETADDRESSCAPS_PARAMS, *PLINEGETADDRESSCAPS_PARAMS;
typedef struct _LINEGETADDRESSID_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN HLINE hLine;
};
union
{
OUT DWORD dwAddressID;
};
union
{
IN DWORD dwAddressMode;
};
union
{
IN DWORD dwAddressOffset; // always valid offset
};
union
{
IN DWORD dwSize;
};
} LINEGETADDRESSID_PARAMS, *PLINEGETADDRESSID_PARAMS;
typedef struct _LINEGETADDRESSSTATUS_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN HLINE hLine;
};
union
{
OUT DWORD dwAddressID;
};
union
{
IN DWORD dwAddressStatusTotalSize; // size of client buffer
OUT DWORD dwAddressStatusOffset; // valid offset on success
};
} LINEGETADDRESSSTATUS_PARAMS, *PLINEGETADDRESSSTATUS_PARAMS;
typedef struct _LINEGETAGENTACTIVITYLIST_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN DWORD dwRemoteRequestID;
};
IN DWORD hfnPostProcessProc;
union
{
IN HLINE hLine;
};
union
{
IN DWORD dwAddressID;
};
// IN ULONG_PTR lpAgentActivityList; // pointer to client buffer
IN DWORD hpAgentActivityList; // pointer to client buffer
union
{
IN DWORD dwActivityListTotalSize;
};
} LINEGETAGENTACTIVITYLIST_PARAMS, *PLINEGETAGENTACTIVITYLIST_PARAMS;
typedef struct _LINEGETAGENTCAPS_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN DWORD dwRemoteRequestID;
};
IN DWORD hfnPostProcessProc;
union
{
IN HLINEAPP hLineApp;
};
union
{
IN DWORD dwDeviceID;
};
union
{
IN DWORD dwAddressID;
};
union
{
IN DWORD dwAppAPIVersion;
};
// IN ULONG_PTR lpAgentCaps; // pointer to client buffer
IN DWORD hpAgentCaps; // pointer to client buffer
union
{
IN DWORD dwAgentCapsTotalSize;
};
} LINEGETAGENTCAPS_PARAMS, *PLINEGETAGENTCAPS_PARAMS;
typedef struct _LINEGETAGENTGROUPLIST_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN DWORD dwRemoteRequestID;
};
IN DWORD hfnPostProcessProc;
union
{
IN HLINE hLine;
};
union
{
IN DWORD dwAddressID;
};
// IN ULONG_PTR lpAgentGroupList; // pointer to client buffer
IN DWORD hpAgentGroupList; // pointer to client buffer
union
{
IN DWORD dwAgentGroupListTotalSize;
};
} LINEGETAGENTGROUPLIST_PARAMS, *PLINEGETAGENTGROUPLIST_PARAMS;
typedef struct _LINEGETAGENTINFO_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN DWORD dwRemoteRequestID;
};
IN DWORD hfnPostProcessProc;
union
{
IN HLINE hLine;
};
union
{
IN HAGENT hAgent;
};
// IN ULONG_PTR lpAgentInfo; // pointer to client buffer
IN DWORD hpAgentInfo; // pointer to client buffer
union
{
IN DWORD dwAgentInfoTotalSize;
};
} LINEGETAGENTINFO_PARAMS, *PLINEGETAGENTINFO_PARAMS;
typedef struct _LINEGETAGENTSESSIONINFO_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN DWORD dwRemoteRequestID;
};
IN DWORD hfnPostProcessProc;
union
{
IN HLINE hLine;
};
union
{
IN HAGENTSESSION hAgentSession;
};
// IN ULONG_PTR lpAgentSessionInfo; // pointer to client buffer
IN DWORD hpAgentSessionInfo; // pointer to client buffer
union
{
IN DWORD dwAgentSessionInfoTotalSize;
};
} LINEGETAGENTSESSIONINFO_PARAMS, *PLINEGETAGENTSESSIONINFO_PARAMS;
typedef struct _LINEGETAGENTSESSIONLIST_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN DWORD dwRemoteRequestID;
};
IN DWORD hfnPostProcessProc;
union
{
IN HLINE hLine;
};
union
{
IN HAGENT hAgent;
};
// IN ULONG_PTR lpSessionList; // pointer to client buffer
IN DWORD hpSessionList; // pointer to client buffer
union
{
IN DWORD dwSessionListTotalSize;
};
} LINEGETAGENTSESSIONLIST_PARAMS, *PLINEGETAGENTSESSIONLIST_PARAMS;
typedef struct _LINEGETAGENTSTATUS_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN DWORD dwRemoteRequestID;
};
IN DWORD hfnPostProcessProc;
union
{
IN HLINE hLine;
};
union
{
IN DWORD dwAddressID;
};
// IN ULONG_PTR lpAgentStatus; // pointer to client buffer
IN DWORD hpAgentStatus; // pointer to client buffer
union
{
IN DWORD dwAgentStatusTotalSize;
};
} LINEGETAGENTSTATUS_PARAMS, *PLINEGETAGENTSTATUS_PARAMS;
typedef struct _LINEGETAPPPRIORITY_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN DWORD dwAppNameOffset; // always valid offset
};
union
{
IN DWORD dwMediaMode;
};
union
{
IN DWORD dwExtensionIDOffset; // valid offset or
};
//IN ULONG_PTR _Unused_; // padding for Size type on
IN DWORD _Unused_; // padding for Size type on
// client side
union
{
IN DWORD dwRequestMode;
};
union
{
IN DWORD dwExtensionNameTotalSize; // size of client buf or
// TAPI_NO_DATA
OUT DWORD dwExtensionNameOffset; // valid offset or
// TAPI_NO_DATA on succes
};
union
{
OUT DWORD dwPriority;
};
} LINEGETAPPPRIORITY_PARAMS, *PLINEGETAPPPRIORITY_PARAMS;
typedef struct _LINEGETCALLADDRESSID_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN HCALL hCall;
};
union
{
OUT DWORD dwAddressID;
};
} LINEGETCALLADDRESSID_PARAMS, *PLINEGETCALLADDRESSID_PARAMS;
typedef struct _LINEGETCALLHUBTRACKING_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN HLINE hLine;
};
union
{
IN DWORD dwTrackingInfoTotalSize; // size of client buffer
OUT DWORD dwTrackingInfoOffset; // valid offset on success
};
} LINEGETCALLHUBTRACKING_PARAMS, *PLINEGETCALLHUBTRACKING_PARAMS;
typedef struct _LINEGETCALLIDS_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN HCALL hCall;
};
union
{
OUT DWORD dwAddressID;
};
union
{
OUT DWORD dwCallID;
};
union
{
OUT DWORD dwRelatedCallID;
};
} LINEGETCALLIDS_PARAMS, *PLINEGETCALLIDS_PARAMS;
typedef struct _LINEGETCALLINFO_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN HCALL hCall;
};
union
{
IN DWORD dwCallInfoTotalSize; // size of client buffer
OUT DWORD dwCallInfoOffset; // valid offset on success
};
} LINEGETCALLINFO_PARAMS, *PLINEGETCALLINFO_PARAMS;
typedef struct _LINEGETCALLSTATUS_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN HCALL hCall;
};
union
{
IN DWORD dwCallStatusTotalSize; // size of client buffer
OUT DWORD dwCallStatusOffset; // valid offset on success
};
} LINEGETCALLSTATUS_PARAMS, *PLINEGETCALLSTATUS_PARAMS;
typedef struct _LINEGETCONFRELATEDCALLS_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN HCALL hCall;
};
union
{
IN DWORD dwCallListTotalSize; // size of client buffer
OUT DWORD dwCallListOffset; // valid offset on success
};
} LINEGETCONFRELATEDCALLS_PARAMS, *PLINEGETCONFRELATEDCALLS_PARAMS;
typedef struct _LINEGETCOUNTRY_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN DWORD dwCountryID;
};
union
{
IN DWORD dwAPIVersion;
};
union
{
IN DWORD dwDestCountryID;
};
union
{
IN DWORD dwCountryListTotalSize; // size of client buffer
OUT DWORD dwCountryListOffset; // valid offset on success
};
} LINEGETCOUNTRY_PARAMS, *PLINEGETCOUNTRY_PARAMS;
typedef struct _LINEGETCOUNTRYGROUP_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN DWORD dwCountryIdOffset;
};
union
{
IN OUT DWORD dwCountryIdSize;
};
union
{
OUT DWORD dwCountryGroupOffset;
};
union
{
IN OUT DWORD dwCountryGroupSize;
};
} LINEGETCOUNTRYGROUP_PARAMS, *PLINEGETCOUNTRYGROUP_PARAMS;
typedef struct _LINEGETDEVCAPS_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN HLINEAPP hLineApp;
};
union
{
IN DWORD dwDeviceID;
};
union
{
IN DWORD dwAPIVersion;
};
union
{
IN DWORD dwExtVersion;
};
union
{
IN DWORD dwDevCapsTotalSize; // size of client buffer
OUT DWORD dwDevCapsOffset; // valid offset on success
};
} LINEGETDEVCAPS_PARAMS, *PLINEGETDEVCAPS_PARAMS;
typedef struct _LINEGETDEVCONFIG_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN DWORD dwDeviceID;
};
union
{
IN DWORD dwDeviceConfigTotalSize; // size of client buffer
OUT DWORD dwDeviceConfigOffset; // valid offset on success
};
union
{
IN DWORD dwDeviceClassOffset; // always valid offset
};
} LINEGETDEVCONFIG_PARAMS, *PLINEGETDEVCONFIG_PARAMS;
typedef struct _LINEGETGROUPLIST_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN DWORD dwRemoteRequestID;
};
IN DWORD hfnPostProcessProc;
union
{
IN HLINE hLine;
};
// IN ULONG_PTR lpGroupList; // pointer to client buffer
IN DWORD hpGroupList; // pointer to client buffer
union
{
IN DWORD dwGroupListTotalSize;
};
} LINEGETGROUPLIST_PARAMS, *PLINEGETGROUPLIST_PARAMS;
typedef struct _LINEGETHUBRELATEDCALLS_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN HCALLHUB hCallHub;
};
union
{
IN HCALL hCall;
};
union
{
IN DWORD dwCallListTotalSize; // size of client buffer
OUT DWORD dwCallListOffset; // valid offset on success
};
} LINEGETHUBRELATEDCALLS_PARAMS, *PLINEGETHUBRELATEDCALLS_PARAMS;
typedef struct _LINEGETICON_PARAMS
{
OUT LONG lResult;
DWORD dwUnused;
IN DWORD dwDeviceID;
IN DWORD dwDeviceClassOffset; // valid offset or
OUT HICON hIcon;
} LINEGETICON_PARAMS, *PLINEGETICON_PARAMS;
typedef struct _LINEGETID_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN HLINE hLine;
};
union
{
IN DWORD dwAddressID;
};
union
{
IN DWORD hCall;
};
union
{
IN DWORD dwSelect;
};
union
{
IN DWORD dwDeviceIDTotalSize; // size of client buffer
OUT DWORD dwDeviceIDOffset; // valid offset on success
};
union
{
IN DWORD dwDeviceClassOffset; // always valid offset
};
} LINEGETID_PARAMS, *PLINEGETID_PARAMS;
typedef struct _LINEGETLINEDEVSTATUS_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN HLINE hLine;
};
union
{
IN DWORD dwLineDevStatusTotalSize; // size of client buffer
OUT DWORD dwLineDevStatusOffset; // valid offset on success
};
union
{
OUT DWORD dwAPIVersion;
};
} LINEGETLINEDEVSTATUS_PARAMS, *PLINEGETLINEDEVSTATUS_PARAMS;
typedef struct _LINEGETPROXYSTATUS_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN HLINEAPP hLineApp;
};
union
{
IN DWORD dwDeviceID;
};
union
{
IN DWORD dwAppAPIVersion;
};
union
{
IN DWORD dwProxyStatusTotalSize; // size of client buffer
OUT DWORD dwProxyStatusOffset; // valid offset on success
};
union
{
OUT DWORD dwAPIVersion;
};
} LINEGETPROXYSTATUS_PARAMS, *PLINEGETPROXYSTATUS_PARAMS;
typedef struct _LINEGETNEWCALLS_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN HLINE hLine;
};
union
{
IN DWORD dwAddressID;
};
union
{
IN DWORD dwSelect;
};
union
{
IN DWORD dwCallListTotalSize; // size of client buffer
OUT DWORD dwCallListOffset; // valid offset on success
};
} LINEGETNEWCALLS_PARAMS, *PLINEGETNEWCALLS_PARAMS;
typedef struct _LINEGETNUMADDRESSIDS_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN HLINE hLine;
};
union
{
OUT DWORD dwNumAddresses;
};
} LINEGETNUMADDRESSIDS_PARAMS, *PLINEGETNUMADDRESSIDS_PARAMS;
typedef struct _LINEGETNUMRINGS_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN HLINE hLine;
};
union
{
IN DWORD dwAddressID;
};
union
{
OUT DWORD dwNumRings;
};
} LINEGETNUMRINGS_PARAMS, *PLINEGETNUMRINGS_PARAMS;
typedef struct _LINEGETPROVIDERLIST_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN DWORD dwAPIVersion;
};
union
{
IN DWORD dwProviderListTotalSize; // size of client buf
OUT DWORD dwProviderListOffset; // valid offset on success
};
} LINEGETPROVIDERLIST_PARAMS, *PLINEGETPROVIDERLIST_PARAMS;
typedef struct _LINEGETQUEUEINFO_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN DWORD dwRemoteRequestID;
};
IN DWORD hfnPostProcessProc;
union
{
IN HLINE hLine;
};
union
{
IN DWORD dwQueueID;
};
// IN ULONG_PTR lpQueueInfo; // pointer to client buffer
IN DWORD phQueueInfo; // pointer to client buffer
union
{
IN DWORD dwQueueInfoTotalSize;
};
} LINEGETQUEUEINFO_PARAMS, *PLINEGETQUEUEINFO_PARAMS;
typedef struct _LINEGETQUEUELIST_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN DWORD dwRemoteRequestID;
};
IN DWORD hfnPostProcessProc;
union
{
IN HLINE hLine;
};
union
{
IN DWORD dwGroupIDOffset;
};
union
{
IN DWORD dwGroupIDSize;
};
//IN ULONG_PTR lpQueueList; // pointer to client buffer
IN DWORD hpQueueList; // pointer to client buffer
union
{
IN DWORD dwQueueListTotalSize;
};
} LINEGETQUEUELIST_PARAMS, *PLINEGETQUEUELIST_PARAMS;
typedef struct _LINEGETREQUEST_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN HLINEAPP hLineApp;
};
union
{
IN DWORD dwRequestMode;
};
union
{
OUT DWORD dwRequestBufferOffset; // valid offset on success
};
union
{
IN OUT DWORD dwSize;
};
} LINEGETREQUEST_PARAMS, *PLINEGETREQUEST_PARAMS;
typedef struct _LINEGETSTATUSMESSAGES_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN HLINE hLine;
};
union
{
OUT DWORD dwLineStates;
};
union
{
OUT DWORD dwAddressStates;
};
} LINEGETSTATUSMESSAGES_PARAMS, *PLINEGETSTATUSMESSAGES_PARAMS;
typedef struct _LINEHANDOFF_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN HCALL hCall;
};
union
{
IN DWORD dwFileNameOffset; // valid offset or
};
union
{
IN DWORD dwMediaMode;
};
} LINEHANDOFF_PARAMS, *PLINEHANDOFF_PARAMS;
typedef struct _LINEHOLD_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN DWORD dwRemoteRequestID;
};
union
{
IN HCALL hCall;
};
} LINEHOLD_PARAMS, *PLINEHOLD_PARAMS;
typedef struct _LINEINITIALIZE_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
OUT HLINEAPP hLineApp;
};
union
{
IN DWORD hInstance;
};
union
{
IN DWORD InitContext;
};
union
{
IN DWORD dwFriendlyNameOffset; // always valid offset
};
union
{
OUT DWORD dwNumDevs;
};
union
{
IN DWORD dwModuleNameOffset; // always valid offset
};
union
{
IN DWORD dwAPIVersion;
};
} LINEINITIALIZE_PARAMS, *PLINEINITIALIZE_PARAMS;
typedef struct _LINEMAKECALL_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN DWORD dwRemoteRequestID;
};
IN DWORD hfnPostProcessProc;
union
{
IN HLINE hLine;
};
IN DWORD hpCall;
union
{
IN DWORD dwDestAddressOffset; // valid offset or
};
union
{
IN DWORD dwCountryCode;
};
union
{
IN DWORD dwCallParamsOffset; // valid offset or
};
union
{
IN DWORD dwAsciiCallParamsCodePage;
};
} LINEMAKECALL_PARAMS, *PLINEMAKECALL_PARAMS;
typedef struct _LINEMONITORDIGITS_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN HCALL hCall;
};
union
{
IN DWORD dwDigitModes;
};
} LINEMONITORDIGITS_PARAMS, *PLINEMONITORDIGITS_PARAMS;
typedef struct _LINEMONITORMEDIA_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN HCALL hCall;
};
union
{
IN DWORD dwMediaModes;
};
} LINEMONITORMEDIA_PARAMS, *PLINEMONITORMEDIA_PARAMS;
typedef struct _LINEMONITORTONES_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN HCALL hCall;
};
union
{
IN DWORD dwTonesOffset; // valid offset or
};
union
{
IN DWORD dwNumEntries; // really dwNumEntries *
};
union
{
IN DWORD dwToneListID; // Used for remotesp only
};
} LINEMONITORTONES_PARAMS, *PLINEMONITORTONES_PARAMS;
typedef struct _LINENEGOTIATEAPIVERSION_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN HLINEAPP hLineApp;
};
union
{
IN DWORD dwDeviceID;
};
union
{
IN DWORD dwAPILowVersion;
};
union
{
IN DWORD dwAPIHighVersion;
};
union
{
OUT DWORD dwAPIVersion;
};
union
{
OUT DWORD dwExtensionIDOffset; // valid offset on success
};
union
{
IN OUT DWORD dwSize;
};
} LINENEGOTIATEAPIVERSION_PARAMS, *PLINENEGOTIATEAPIVERSION_PARAMS;
typedef struct _NEGOTIATEAPIVERSIONFORALLDEVICES_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN HLINEAPP hLineApp;
};
union
{
IN DWORD dwNumLineDevices;
};
union
{
IN DWORD dwNumPhoneDevices;
};
union
{
IN DWORD dwAPIHighVersion;
};
union
{
OUT DWORD dwLineAPIVersionListOffset; // valid offset on success
};
union
{
IN OUT DWORD dwLineAPIVersionListSize;
};
union
{
OUT DWORD dwLineExtensionIDListOffset;// valid offset on success
};
union
{
IN OUT DWORD dwLineExtensionIDListSize;
};
union
{
OUT DWORD dwPhoneAPIVersionListOffset;// valid offset on success
};
union
{
IN OUT DWORD dwPhoneAPIVersionListSize;
};
union
{
OUT DWORD dwPhoneExtensionIDListOffset;// valid offset on success
};
union
{
IN OUT DWORD dwPhoneExtensionIDListSize;
};
} NEGOTIATEAPIVERSIONFORALLDEVICES_PARAMS,
*PNEGOTIATEAPIVERSIONFORALLDEVICES_PARAMS;
typedef struct _LINENEGOTIATEEXTVERSION_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN HLINEAPP hLineApp;
};
union
{
IN DWORD dwDeviceID;
};
union
{
IN DWORD dwAPIVersion;
};
union
{
IN DWORD dwExtLowVersion;
};
union
{
IN DWORD dwExtHighVersion;
};
union
{
OUT DWORD dwExtVersion;
};
} LINENEGOTIATEEXTVERSION_PARAMS, *PLINENEGOTIATEEXTVERSION_PARAMS;
typedef struct _LINEOPEN_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN HLINEAPP hLineApp;
};
union
{
IN DWORD dwDeviceID;
};
union
{
OUT DWORD hLine;
};
union
{
IN DWORD dwAPIVersion;
};
union
{
IN DWORD dwExtVersion;
};
IN DWORD OpenContext;
union
{
IN DWORD dwPrivileges;
};
union
{
IN DWORD dwMediaModes;
};
union
{
IN DWORD dwCallParamsOffset; // valid offset or
};
union
{
IN DWORD dwAsciiCallParamsCodePage;
};
union
{
IN DWORD dwCallParamsReturnTotalSize;// size of client buffer
OUT DWORD dwCallParamsReturnOffset; // valid offset on success
};
//
// The following is a "remote line handle". When the client is
// remotesp.tsp running on a remote machine, this will be some
// non-NULL value, and tapisrv should use this handle in status/etc
// indications to the client rather than the std hLine. If the
// client is not remote.tsp then this value will be NULL.
//
union
{
IN HLINE hRemoteLine;
};
} LINEOPEN_PARAMS, *PLINEOPEN_PARAMS;
typedef struct _LINEPARK_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN DWORD dwRemoteRequestID;
};
IN DWORD hfnPostProcessProc;
union
{
IN HCALL hCall;
};
union
{
IN DWORD dwParkMode;
};
union
{
IN DWORD dwDirAddressOffset; // valid offset or
};
// TAPI_NO_DATA
// IN ULONG_PTR lpNonDirAddress; // pointer to client buffer
IN DWORD hpNonDirAddress; // pointer to client buffer
union
{
IN DWORD dwNonDirAddressTotalSize; // size of client buffer
// for sync func would be
// dwXxxOffset
};
} LINEPARK_PARAMS, *PLINEPARK_PARAMS;
typedef struct _LINEPICKUP_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN DWORD dwRemoteRequestID;
};
IN DWORD hfnPostProcessProc;
union
{
IN HLINE hLine;
};
union
{
IN DWORD dwAddressID;
};
// IN ULONG_PTR lphCall; // pointer to client buffer
IN DWORD hpCall; // pointer to client buffer
union
{
IN DWORD dwDestAddressOffset; // valid offset or
};
union
{
IN DWORD dwGroupIDOffset; // always valid offset
};
} LINEPICKUP_PARAMS, *PLINEPICKUP_PARAMS;
typedef struct _LINEPREPAREADDTOCONFERENCE_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN DWORD dwRemoteRequestID;
};
IN DWORD hfnPostProcessProc;
union
{
IN HCALL hConfCall;
};
// IN ULONG_PTR lphConsultCall; // pointer to client buffer
IN DWORD hpConsultCall; // pointer to client buffer
union
{
IN DWORD dwCallParamsOffset; // valid offset or
};
union
{
IN DWORD dwAsciiCallParamsCodePage;
};
} LINEPREPAREADDTOCONFERENCE_PARAMS, *PLINEPREPAREADDTOCONFERENCE_PARAMS;
typedef struct _LINEPROXYMESSAGE_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN HLINE hLine;
};
union
{
IN HCALL hCall;
};
union
{
IN DWORD dwMsg;
};
union
{
IN DWORD dwParam1;
};
union
{
IN DWORD dwParam2;
};
union
{
IN DWORD dwParam3;
};
} LINEPROXYMESSAGE_PARAMS, *PLINEPROXYMESSAGE_PARAMS;
typedef struct _LINEPROXYRESPONSE_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN HLINE hLine;
};
union
{
IN DWORD dwInstance;
};
union
{
IN DWORD dwProxyResponseOffset; // valid offset or
};
union
{
IN DWORD dwResult;
};
} LINEPROXYRESPONSE_PARAMS, *PLINEPROXYRESPONSE_PARAMS;
typedef struct _LINEREDIRECT_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN DWORD dwRemoteRequestID;
};
union
{
IN HCALL hCall;
};
union
{
IN DWORD dwDestAddressOffset; // always valid offset
};
union
{
IN DWORD dwCountryCode;
};
} LINEREDIRECT_PARAMS, *PLINEREDIRECT_PARAMS;
typedef struct _LINEREGISTERREQUESTRECIPIENT_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN HLINEAPP hLineApp;
};
union
{
IN DWORD dwRegistrationInstance;
};
union
{
IN DWORD dwRequestMode;
};
union
{
IN DWORD bEnable;
};
} LINEREGISTERREQUESTRECIPIENT_PARAMS, *PLINEREGISTERREQUESTRECIPIENT_PARAMS;
typedef struct _LINERELEASEUSERUSERINFO_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN HCALL hCall;
};
} LINERELEASEUSERUSERINFO_PARAMS, *PLINERELEASEUSERUSERINFO_PARAMS;
typedef struct _LINEREMOVEFROMCONFERENCE_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN DWORD dwRemoteRequestID;
};
union
{
IN HCALL hCall;
};
} LINEREMOVEFROMCONFERENCE_PARAMS, *PLINEREMOVEFROMCONFERENCE_PARAMS;
typedef struct _LINESECURECALL_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN DWORD dwRemoteRequestID;
};
union
{
IN HCALL hCall;
};
} LINESECURECALL_PARAMS, *PLINESECURECALL_PARAMS;
typedef struct _LINESELECTEXTVERSION_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN HLINE hLine;
};
union
{
IN DWORD dwExtVersion;
};
} LINESELECTEXTVERSION_PARAMS, *PLINESELECTEXTVERSION_PARAMS;
typedef struct _LINESENDUSERUSERINFO_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN DWORD dwRemoteRequestID;
};
union
{
IN HCALL hCall;
};
union
{
IN DWORD dwUserUserInfoOffset; // valid offset or
};
union
{
IN DWORD dwSize;
};
} LINESENDUSERUSERINFO_PARAMS, *PLINESENDUSERUSERINFO_PARAMS;
typedef struct _LINESETAGENTACTIVITY_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN DWORD dwRemoteRequestID;
};
union
{
IN HLINE hLine;
};
union
{
IN DWORD dwAddressID;
};
union
{
IN DWORD dwActivityID;
};
} LINESETAGENTACTIVITY_PARAMS, *PLINESETAGENTACTIVITY_PARAMS;
typedef struct _LINESETAGENTGROUP_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN DWORD dwRemoteRequestID;
};
union
{
IN HLINE hLine;
};
union
{
IN DWORD dwAddressID;
};
union
{
IN DWORD dwAgentGroupListOffset;
};
} LINESETAGENTGROUP_PARAMS, *PLINESETAGENTGROUP_PARAMS;
typedef struct _LINESETAGENTMEASUREMENTPERIOD_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN DWORD dwRemoteRequestID;
};
union
{
IN HLINE hLine;
};
union
{
IN HAGENT hAgent;
};
union
{
IN DWORD dwMeasurementPeriod;
};
} LINESETAGENTMEASUREMENTPERIOD_PARAMS, *PLINESETAGENTMEASUREMENTPERIOD_PARAMS;
typedef struct _LINESETAGENTSESSIONSTATE_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN DWORD dwRemoteRequestID;
};
union
{
IN HLINE hLine;
};
union
{
IN HAGENTSESSION hAgentSession;
};
union
{
IN DWORD dwAgentState;
};
union
{
IN DWORD dwNextAgentState;
};
} LINESETAGENTSESSIONSTATE_PARAMS, *PLINESETAGENTSESSIONSTATE_PARAMS;
typedef struct _LINESETAGENTSTATE_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN DWORD dwRemoteRequestID;
};
union
{
IN HLINE hLine;
};
union
{
IN DWORD dwAddressID;
};
union
{
IN DWORD dwAgentState;
};
union
{
IN DWORD dwNextAgentState;
};
} LINESETAGENTSTATE_PARAMS, *PLINESETAGENTSTATE_PARAMS;
typedef struct _LINESETAGENTSTATEEX_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN DWORD dwRemoteRequestID;
};
union
{
IN HLINE hLine;
};
union
{
IN HAGENT hAgent;
};
union
{
IN DWORD dwAgentState;
};
union
{
IN DWORD dwNextAgentState;
};
} LINESETAGENTSTATEEX_PARAMS, *PLINESETAGENTSTATEEX_PARAMS;
typedef struct _LINESETAPPPRIORITY_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN DWORD dwAppNameOffset; // always valid offset
};
union
{
IN DWORD dwMediaMode;
};
union
{
IN DWORD dwExtensionIDOffset; // valid offset or
};
// IN ULONG_PTR _Unused_; // padding for Size type on
IN DWORD _Unused_; // padding for Size type on
// client side
union
{
IN DWORD dwRequestMode;
};
union
{
IN DWORD dwExtensionNameOffset; // valid offset or
};
union
{
IN DWORD dwPriority;
};
} LINESETAPPPRIORITY_PARAMS, *PLINESETAPPPRIORITY_PARAMS;
typedef struct _LINESETAPPSPECIFIC_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN HCALL hCall;
};
union
{
IN DWORD dwAppSpecific;
};
} LINESETAPPSPECIFIC_PARAMS, *PLINESETAPPSPECIFIC_PARAMS;
typedef struct _LINESETCALLDATA_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN DWORD dwRemoteRequestID;
};
union
{
IN HCALL hCall;
};
union
{
IN DWORD dwCallDataOffset; // valid offset or
};
union
{
IN DWORD dwCallDataSize;
};
} LINESETCALLDATA_PARAMS, *PLINESETCALLDATA_PARAMS;
typedef struct _LINESETCALLHUBTRACKING_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN HLINE hLine;
};
union
{
IN DWORD dwTrackingInfoOffset; // always valid offset
};
} LINESETCALLHUBTRACKING_PARAMS, *PLINESETCALLHUBTRACKING_PARAMS;
typedef struct _LINESETCALLPARAMS_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN DWORD dwRemoteRequestID;
};
union
{
IN HCALL hCall;
};
union
{
IN DWORD dwBearerMode;
};
union
{
IN DWORD dwMinRate;
};
union
{
IN DWORD dwMaxRate;
};
union
{
IN DWORD dwDialParamsOffset; // valid offset or
};
// IN ULONG_PTR _Unused_; // placeholdr for following
IN DWORD _Unused_; // placeholdr for following
// Size arg on clnt side
} LINESETCALLPARAMS_PARAMS, *PLINESETCALLPARAMS_PARAMS;
typedef struct _LINESETCALLPRIVILEGE_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN HCALL hCall;
};
union
{
IN DWORD dwPrivilege;
};
} LINESETCALLPRIVILEGE_PARAMS, *PLINESETCALLPRIVILEGE_PARAMS;
typedef struct _LINESETCALLQUALITYOFSERVICE_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN DWORD dwRemoteRequestID;
};
union
{
IN HCALL hCall;
};
union
{
IN DWORD dwSendingFlowspecOffset; // always valid offset
};
union
{
IN DWORD dwSendingFlowspecSize;
};
union
{
IN DWORD dwReceivingFlowspecOffset; // always valid offset
};
union
{
IN DWORD dwReceivingFlowspecSize;
};
} LINESETCALLQUALITYOFSERVICE_PARAMS, *PLINESETCALLQUALITYOFSERVICE_PARAMS;
typedef struct _LINESETCALLTREATMENT_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN DWORD dwRemoteRequestID;
};
union
{
IN HCALL hCall;
};
union
{
IN DWORD dwTreatment;
};
} LINESETCALLTREATMENT_PARAMS, *PLINESETCALLTREATMENT_PARAMS;
typedef struct _LINESETDEFAULTMEDIADETECTION_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN HLINE hLine;
};
union
{
IN DWORD dwMediaModes;
};
} LINESETDEFAULTMEDIADETECTION_PARAMS, *PLINESETDEFAULTMEDIADETECTION_PARAMS;
typedef struct _LINESETDEVCONFIG_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN DWORD dwDeviceID;
};
union
{
IN DWORD dwDeviceConfigOffset; // always valid offset
};
union
{
IN DWORD dwSize;
};
union
{
IN DWORD dwDeviceClassOffset; // always valid offset
};
} LINESETDEVCONFIG_PARAMS, *PLINESETDEVCONFIG_PARAMS;
typedef struct _LINESETLINEDEVSTATUS_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN DWORD dwRemoteRequestID;
};
union
{
IN HLINE hLine;
};
union
{
IN DWORD dwStatusToChange;
};
union
{
IN DWORD fStatus;
};
} LINESETLINEDEVSTATUS_PARAMS, *PLINESETLINEDEVSTATUS_PARAMS;
typedef struct _LINESETMEDIACONTROL_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN HLINE hLine;
};
union
{
IN DWORD dwAddressID;
};
union
{
IN HCALL hCall;
};
union
{
IN DWORD dwSelect;
};
union
{
IN DWORD dwDigitListOffset; // valid offset or
};
union
{
IN DWORD dwDigitListNumEntries; // actually dwNumEntries *
};
union
{
IN DWORD dwMediaListOffset; // valid offset or
};
union
{
IN DWORD dwMediaListNumEntries; // actually dwNumEntries *
};
union
{
IN DWORD dwToneListOffset; // valid offset or
};
union
{
IN DWORD dwToneListNumEntries; // actually dwNumEntries *
};
union
{
IN DWORD dwCallStateListOffset; // valid offset or
};
union
{
IN DWORD dwCallStateListNumEntries; // actually dwNumEntries *
};
} LINESETMEDIACONTROL_PARAMS, *PLINESETMEDIACONTROL_PARAMS;
typedef struct _LINESETMEDIAMODE_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN HCALL hCall;
};
union
{
IN DWORD dwMediaModes;
};
} LINESETMEDIAMODE_PARAMS, *PLINESETMEDIAMODE_PARAMS;
typedef struct _LINESETNUMRINGS_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN HLINE hLine;
};
union
{
IN DWORD dwAddressID;
};
union
{
IN DWORD dwNumRings;
};
} LINESETNUMRINGS_PARAMS, *PLINESETNUMRINGS_PARAMS;
typedef struct _LINESETQUEUEMEASUREMENTPERIOD_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN DWORD dwRemoteRequestID;
};
union
{
IN HLINE hLine;
};
union
{
IN DWORD dwQueueID;
};
union
{
IN DWORD dwMeasurementPeriod;
};
} LINESETQUEUEMEASUREMENTPERIOD_PARAMS, *PLINESETQUEUEMEASUREMENTPERIOD_PARAMS;
typedef struct _LINESETSTATUSMESSAGES_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN HLINE hLine;
};
union
{
IN DWORD dwLineStates;
};
union
{
IN DWORD dwAddressStates;
};
} LINESETSTATUSMESSAGES_PARAMS, *PLINESETSTATUSMESSAGES_PARAMS;
typedef struct _LINESETTERMINAL_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN DWORD dwRemoteRequestID;
};
union
{
IN HLINE hLine;
};
union
{
IN DWORD dwAddressID;
};
union
{
IN HCALL hCall;
};
union
{
IN DWORD dwSelect;
};
union
{
IN DWORD dwTerminalModes;
};
union
{
IN DWORD dwTerminalID;
};
union
{
IN DWORD bEnable;
};
} LINESETTERMINAL_PARAMS, *PLINESETTERMINAL_PARAMS;
typedef struct _LINESETUPCONFERENCE_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN DWORD dwRemoteRequestID;
};
IN DWORD hfnPostProcessProc;
union
{
IN HCALL hCall;
};
union
{
IN HLINE hLine;
};
// IN ULONG_PTR lphConfCall; // pointer to client buffer
IN DWORD hpConfCall; // pointer to client buffer
// IN ULONG_PTR lphConsultCall; // pointer to client buffer
IN DWORD hpConsultCall; // pointer to client buffer
union
{
IN DWORD dwNumParties;
};
union
{
IN DWORD dwCallParamsOffset; // valid offset or
};
union
{
IN DWORD dwAsciiCallParamsCodePage;
};
} LINESETUPCONFERENCE_PARAMS, *PLINESETUPCONFERENCE_PARAMS;
typedef struct _LINESETUPTRANSFER_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN DWORD dwRemoteRequestID;
};
IN DWORD hfnPostProcessProc;
union
{
IN HCALL hCall;
};
// IN ULONG_PTR lphConsultCall; // pointer to client buffer
IN DWORD hpConsultCall; // pointer to client buffer
union
{
IN DWORD dwCallParamsOffset; // valid offset or
};
union
{
IN DWORD dwAsciiCallParamsCodePage;
};
} LINESETUPTRANSFER_PARAMS, *PLINESETUPTRANSFER_PARAMS;
typedef struct _LINESHUTDOWN_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN HLINEAPP hLineApp;
};
} LINESHUTDOWN_PARAMS, *PLINESHUTDOWN_PARAMS;
typedef struct _LINESWAPHOLD_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN DWORD dwRemoteRequestID;
};
union
{
IN HCALL hActiveCall;
};
union
{
IN HCALL hHeldCall;
};
} LINESWAPHOLD_PARAMS, *PLINESWAPHOLD_PARAMS;
typedef struct _LINEUNCOMPLETECALL_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN DWORD dwRemoteRequestID;
};
union
{
IN HLINE hLine;
};
union
{
IN DWORD dwCompletionID;
};
} LINEUNCOMPLETECALL_PARAMS, *PLINEUNCOMPLETECALL_PARAMS;
typedef struct _LINEUNHOLD_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN DWORD dwRemoteRequestID;
};
union
{
IN HCALL hCall;
};
} LINEUNHOLD_PARAMS, *PLINEUNHOLD_PARAMS;
typedef struct _LINEUNPARK_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN DWORD dwRemoteRequestID;
};
IN DWORD hfnPostProcessProc;
union
{
IN HLINE hLine;
};
union
{
IN DWORD dwAddressID;
};
IN DWORD hpCall; // pointer to client buffer
union
{
IN DWORD dwDestAddressOffset; // always valid offset
};
} LINEUNPARK_PARAMS, *PLINEUNPARK_PARAMS;
typedef struct _LINEMSPIDENTIFY_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN DWORD dwDeviceID;
};
union
{
OUT DWORD dwCLSIDOffset;
};
union
{
IN OUT DWORD dwCLSIDSize;
};
} LINEMSPIDENTIFY_PARAMS, *PLINEMSPIDENTIFY_PARAMS;
typedef struct _LINERECEIVEMSPDATA_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN HLINE hLine;
};
union
{
IN HCALL hCall;
};
union
{
IN DWORD dwBufferOffset;
};
union
{
IN DWORD dwBufferSize;
};
} LINERECEIVEMSPDATA_PARAMS, *PLINERECEIVEMSPDATA_PARAMS;
typedef struct _R_LOCATIONS_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN HLINEAPP dwhLineApp;
};
union
{
IN DWORD dwDeviceID;
};
union
{
IN DWORD dwAPIVersion;
};
union
{
IN DWORD dwParmsToCheckFlags;
};
union
{
IN DWORD dwLocationsTotalSize; // size of client buffer
OUT DWORD dwLocationsOffset; // valid offset on success
};
} R_LOCATIONS_PARAMS, *PR_LOCATIONS_PARAMS;
typedef struct _W_LOCATIONS_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN DWORD nNumLocations;
};
union
{
IN DWORD dwChangedFlags;
};
union
{
IN DWORD dwCurrentLocationID;
};
union
{
IN DWORD dwLocationListOffset;
};
} W_LOCATIONS_PARAMS, *PW_LOCATIONS_PARAMS;
typedef struct _ALLOCNEWID_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN DWORD hKeyToUse;
OUT DWORD dwNewID;
};
} ALLOCNEWID_PARAMS, *P_ALLOCNEWID_PARAMS;
typedef struct _PERFORMANCE_PARAMS
{
union
{
OUT LONG lResult;
};
DWORD dwUnused;
union
{
IN DWORD dwCookie;
};
union
{
IN DWORD dwPerformanceTotalSize; // size of client buffer
OUT DWORD dwLocationsOffset; // valid offset on success
};
} PERFORMANCE_PARAMS, *PPERFORMANCE_PARAMS;