62 lines
1.7 KiB
C
62 lines
1.7 KiB
C
#ifndef _CALLINFO_H
|
|
#define _CALLINFO_H
|
|
|
|
//
|
|
// Shared information between DDE and LRPC
|
|
//
|
|
typedef ULONG TIMERID;
|
|
typedef ULONG CALLID, FAR * LPCALLID;
|
|
//
|
|
// the call info holds all information for one particular outgoing call
|
|
//
|
|
typedef struct tagCallInfo CallInfo, CALLINFO, FAR* LPCALLINFO;
|
|
|
|
struct tagCallInfo {
|
|
UINT m_id; // this is the callinfo id for the table lookup
|
|
HWND m_hwndSvr; // window of callee
|
|
HWND m_hwndCli; // window of caller
|
|
BOOL m_fWait; // wait for acknowledge
|
|
BOOL m_fRejected; // call was rejected
|
|
DWORD m_dwServerCall; // set by HIC, passed to RetryRejectedCall (ack/busyack/nak/error)
|
|
HRESULT m_hresult; // the return value of this loop
|
|
|
|
// info to retry the call
|
|
WORD m_wMsg;
|
|
WPARAM m_wParam;
|
|
LPARAM m_lParam;
|
|
|
|
// timer status for this callinfo
|
|
WORD m_wTimer;
|
|
|
|
// Note: Call State
|
|
// here we remember the current call state we are in
|
|
// if the call was at the 'root' level the call state is 0
|
|
// REVIEW: this is not ready yet and used to detect if we call
|
|
// out on an external call.
|
|
DWORD m_dwCallState;
|
|
|
|
//
|
|
// internaly used to manage multiple
|
|
LONG m_lid;
|
|
LPVOID m_pData;
|
|
LPCALLINFO m_pCINext;
|
|
};
|
|
|
|
//
|
|
// The origin of RunModalLoop is needed for the priority of message.
|
|
// If call by LRPC, lrpc messages are peeked first.
|
|
//
|
|
typedef enum tagCALLORIGIN {
|
|
CALLORIGIN_LRPC = 1,
|
|
CALLORIGIN_DDE = 2,
|
|
} CALLORIGIN;
|
|
|
|
// function used by DDE and LRPC
|
|
STDAPI CoRunModalLoop (LPCALLINFO pCI, WORD wOrigin);
|
|
STDAPI_(DWORD) CoHandleIncomingCall( HWND hwndCaller, WORD wCallType, LPINTERFACEINFO lpIfInfo = NULL);
|
|
STDAPI_(DWORD) CoSetAckState(LPCALLINFO pCI, BOOL fWait, BOOL fRejected = FALSE, DWORD dwServerCall = 0);
|
|
|
|
#endif // _CALLINFO_H
|
|
|
|
|