ATSP.H

/*++ 

Copyright 1995 - 1998 Microsoft Corporation

Module Name:

atsp.h

Notes:

--*/

#include <windows.h>
#include "tapi.h"
#include "tspi.h"
#include <stdarg.h>
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <string.h>
#include "resource.h"


#define MAX_DEV_NAME_LENGTH 63
#define ATSP_TIMEOUT 60000 // milliseconds


typedef struct _DRVLINE
{
HTAPILINE htLine;

LINEEVENT pfnEventProc;

DWORD dwDeviceID;

char szComm[8];

HTAPICALL htCall;

DWORD dwCallState;

DWORD dwCallStateMode;

DWORD dwMediaMode;

HANDLE hComm;

BOOL bDropInProgress;

OVERLAPPED Overlapped;

} DRVLINE, FAR *PDRVLINE;


typedef struct _DRVLINECONFIG
{
char szPort[8];

char szCommands[64];

} DRVLINECONFIG, FAR *PDRVLINECONFIG;


typedef struct _ASYNC_REQUEST
{
DWORD dwRequestID;

DWORD dwCommand;

char szCommand[32];

struct _ASYNC_REQUEST *pNext;

} ASYNC_REQUEST, *PASYNC_REQUEST;


#if DBG

typedef struct _FUNC_PARAM
{
char *lpszVal;

DWORD dwVal;

} FUNC_PARAM, *PFUNC_PARAM;

#endif

typedef struct _FUNC_INFO
{

#if DBG

char *lpszFuncName;

DWORD dwNumParams;

PFUNC_PARAM aParams;

#endif

LONG lResult;

} FUNC_INFO, *PFUNC_INFO;


DWORD gdwLineDeviceIDBase;
DWORD gdwPermanentProviderID;
HANDLE ghInst;
ASYNC_COMPLETION gpfnCompletionProc;

char gszAtspKey[] = "Software\\Microsoft\\ATSP";
char gszNumLines[] = "NumLines";
char gszDefLineConfigParams[] = "my new line,COM1,L0";

#if DBG

char gszTab[] = " ";
char gszhdLine[] = "hdLine";
char gszhdCall[] = "hdCall";
char gszdwSize[] = "dwSize";
char gszhwndOwner[] = "hwndOwner";
char gszdwDeviceID[] = "dwDeviceID";
char gszdwRequestID[] = "dwRequestID";
char gszlpCallParams[] = "lpCallParams";
char gszdwPermanentProviderID[] = "dwPermanentProviderID";

DWORD gdwDebugLevel = 0;

void
CDECL
DebugOutput(
DWORD dwLevel,
LPCSTR lpszFormat,
...
);

#define DBGOUT(arg) DebugOutput arg

LONG
PASCAL
Epilog(
PFUNC_INFO pInfo,
LONG lResult
);

void
PASCAL
Prolog(
PFUNC_INFO pInfo
);

#else

#define DBGOUT(arg)

#define Epilog(pAsyncRequestInfo, lResult) (lResult)

#define Prolog(pAsyncRequestInfo)

#endif


LPWSTR
PASCAL
My_lstrcpyW(
WCHAR *pString1,
WCHAR *pString2
);

LPVOID
PASCAL
DrvAlloc(
DWORD dwSize
);

VOID
PASCAL
DrvFree(
LPVOID lp
);

void
PASCAL
SetCallState(
PDRVLINE pLine,
DWORD dwCallState,
DWORD dwCallStateMode
);

BOOL
CALLBACK
ConfigDlgProc(
HWND hwnd,
UINT msg,
WPARAM wParam,
LPARAM lParam
);

LONG
PASCAL
ProviderInstall(
char *pszProviderName,
BOOL bNoMultipleInstance
);

void
PASCAL
DropActiveCall(
PDRVLINE pLine
);