//****************************************************************************
//
// File: mcxioctl.h
// Content: This file contains the declaration for Unimodem
// DeviceIOControl.
//
// Copyright (c) 1992-1995, Microsoft Corporation, all rights reserved
//
//****************************************************************************
#ifndef _MCXIOCTL_H_
#define _MCXIOCTL_H_
typedef struct tagMcxOut {
DWORD dwReqID;
DWORD dwResult;
} MCX_OUT, *PMCX_OUT;
typedef struct tagMcxIn {
DWORD dwReqID;
PMCX_OUT pMcxOut;
} MCX_IN, *PMCX_IN;
// Monitor modes for IOCTL_UMDM_START_MONITOR
//
#define MONITOR_NON_CONTINUOUS 0
#define MONITOR_CONTINUOUS 1
// Passthrough modes for IOCTL_UMDM_PASSTHROUGH
//
#define PASSTHROUGH_ON 1
#define PASSTHROUGH_OFF 2
#define PASSTHROUGH_OFF_BUT_CONNECTED 3
// DeviceIOControl operation result
//
#define MDM_SUCCESS 0
#define MDM_PENDING 1
#define MDM_FAILURE 2
#define MDM_HANGUP 3
#define MDM_BUSY 4
#define MDM_NOANSWER 5
#define MDM_NOCARRIER 6
#define MDM_NODIALTONE 7
// Invalid Pending operation ID
//
#define MDM_ID_NULL 0xFFFFFFFF
// MCX interface prototypes
//
LONG MCXOpen (LPTSTR szModemName,
HANDLE hDevice,
LPTSTR szKey,
LPHANDLE lph,
DWORD dwID,
DWORD dwCompletionKey);
LONG
MCXDial(
HANDLE hModem,
LPSTR szData,
MCX_IN *pmcxi,
DWORD DialOptions
);
LONG
MCXClose(
HANDLE hModem,
HANDLE hComm,
BOOL LineClosed
);
LONG MCXInit(HANDLE hModem, MCX_IN *pmcxi);
LONG MCXMonitor(HANDLE hModem, DWORD dwType, MCX_IN *pmcxi);
LONG MCXAnswer(HANDLE hModem, MCX_IN *pmcxi);
LONG MCXHangup(HANDLE hModem, MCX_IN *pmcxi);
LONG MCXGetCommConfig (HANDLE hModem, LPCOMMCONFIG lpCommConfig, LPDWORD lpcb);
LONG MCXSetCommConfig (HANDLE hModem, LPCOMMCONFIG lpCommConfig, DWORD cb);
LONG MCXSetPassthrough(HANDLE hModem, DWORD dwType);
LONG MCXGetNegotiatedRate(HANDLE hModem, LPDWORD lpdwRate);
LONG MCXMonitorRemoteHangup(HANDLE hModem, MCX_IN *pmcxi);
void MCXAsyncComplete (HANDLE hModem, LPOVERLAPPED lpOverlapped);
typedef VOID WINAPI
DISCONNECT_HANDLER(
HANDLE pLineDev
);
LONG WINAPI
McxRegisterDisconectHandler(
HANDLE hModem,
DISCONNECT_HANDLER Handler,
HANDLE Context
);
LONG WINAPI
McxDeregisterDisconnectHandler(
HANDLE hModem
);
#endif // _MCXIOCTL_H_