2020-09-30 17:12:29 +02:00

932 lines
23 KiB
C
Raw Permalink Blame History

/***************************************************************************\
|* Copyright (c) 1994 Microsoft Corporation *|
|* Developed for Microsoft by TriplePoint, Inc. Beaverton, Oregon *|
|* *|
|* This file is part of the HT Communications DSU41 WAN Miniport Driver. *|
\***************************************************************************/
/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Module Name:
htdsu.h
Abstract:
This module defines the software structures and values used to support
the NDIS Minport driver on the HT DSU41 controller. It's a good place
to look when your trying to figure out how the driver structures are
related to each other.
This driver conforms to the NDIS 3.0 Miniport interface.
Author:
Larry Hattery - TriplePoint, Inc. (larryh@tpi.com) Jun-94
Environment:
Include this file at the top of each module in the Miniport driver.
Revision History:
---------------------------------------------------------------------------*/
#ifndef _HTDSU_H
#define _HTDSU_H
/*
// NDIS_MINIPORT_DRIVER must be defined before the NDIS include files.
// Normally, it is defined on the command line by setting the C_DEFINES
// variable in the sources build file.
*/
#include <ndis.h>
#include <ndiswan.h>
#include <pshpack1.h> // Force packing on variable length structures
# include <ndistapi.h>
#include <poppack.h>
#include <string.h>
/*
// Include everything here so the driver modules can just include this
// file and get all they need.
*/
#include "debug.h"
#include "card.h"
#include "keywords.h"
/*
// This constant is the maximum NdisStallExecution time allowed to be used
// in an NDIS driver. If you need longer delays, you must wrap the call
// in a loop.
*/
#define _100_MICROSECONDS 100
/*
// The link speeds we support.
*/
#define _64KBPS 64000
#define _56KBPS 57600
/*
// How many logical links does this driver support. Actually, this driver
// defines logical links to be 1:1 with physical links. You are free to
// model them however is appropriate for your adapter.
*/
#define HTDSU_NUM_LINKS 2
/*
// In this driver, there is only one TAPI line device per link structure.
*/
#define HTDSU_TAPI_NUM_LINES HTDSU_NUM_LINKS
/*
// There is only one TAPI address ID per line device (zero based).
*/
#define HTDSU_TAPI_NUM_ADDRESSES 1
#define HTDSU_TAPI_ADDRESSID 0
/*
// There is only one TAPI call per address/line instance.
*/
#define HTDSU_TAPI_NUM_CALLS 1
/*
// This version number is used by the NDIS_TAPI_NEGOTIATE_EXT_VERSION request.
// It is not used by this driver or the current NDISTAPI release.
*/
#define HTDSU_TAPI_EXT_VERSION 0x00010000
/*
// The line mode can be leased or dial-up. In leased mode we can present the
// WAN wrapper with a LINE_UP indication so it can use the connection without
// the TAPI interface. In dialup mode, we need to present a TAPI service
// provider interface so RAS or something else can select the phone number.
// Currently, this driver only supports a single line adapter, but it has
// been written to allow the addition of a second line if the adapter becomes
// available.
*/
typedef enum _HTDSU_LINE_MODE
{
HTDSU_LINEMODE_DIALUP,
HTDSU_LINEMODE_LEASED
} HTDSU_LINE_MODE;
/*
// This structure contains all the link information maintained by the
// Miniport driver. It encompasses both the TAPI and WAN connections.
*/
typedef struct _HTDSU_LINK
{
/* 000
// Pointer back to the Adapter data structure so we can get at it
// when passed a pointer to this structure in NdisMWanSend().
*/
struct _HTDSU_ADAPTER *Adapter;
/* 004
// This is used to select which card channel the link is associated with.
*/
USHORT CardLine;
/* 006
// This is a zero based index used to assign TAPI device ID to the
// link based on TAPI DeviceIdBase assigned to this driver.
*/
USHORT LinkIndex;
/* 008
// Remember what mode the line was set to.
*/
HTDSU_LINE_MODE LineMode;
/* 00C
// The WAN wrapper supplied handle to be used on Miniport calls
// such as NdisMWanIndicateReceive().
*/
NDIS_HANDLE NdisLinkContext;
/* 010
// The Connection wrapper supplied handle for use when indicating
// TAPI LINE_EVENT's.
*/
HTAPI_LINE htLine;
/* 014
// The Connection wrapper supplied handle for use when indicating
// TAPI LINECALLSTATE events.
*/
HTAPI_CALL htCall;
/* 018
// The current TAPI LINEDEVSTATE of the associated with the link.
*/
ULONG DevState; // Current state
ULONG DevStatesCaps; // Events currently supported
ULONG DevStatesMask; // Events currently enabled
/* 024
// The current TAPI LINEADDRESSSTATE of the associated with the link.
*/
ULONG AddressState; // Current state
ULONG AddressStatesCaps; // Events currently supported
ULONG AddressStatesMask; // Events currently enabled
/* 030
// The current TAPI LINECALLSTATE of the associated with the link.
*/
ULONG CallState; // Current state
ULONG CallStatesCaps; // Events currently supported
ULONG CallStatesMask; // Events currently enabled
/* 03C
// The current TAPI media mode(s) supported by the card.
*/
ULONG MediaMode; // Current state
ULONG MediaModesCaps; // Events currently supported
ULONG MediaModesMask; // Events currently enabled
/* 048
// TAPI line address is assigned during installation and saved in the
// registry. It is read from the registry and saved here at init time.
*/
CHAR LineAddress[0x14];
/* 05C
// The speed provided by the link in bits per second. This value is
// passed up by the Miniport during the LINE_UP indication.
*/
ULONG LinkSpeed;
/* 060
// The quality of service provided by the link. This value is passed
// up by the Miniport during the LINE_UP indication.
*/
NDIS_WAN_QUALITY Quality;
/* 064
// The number of rings detected in the current ring sequence.
*/
USHORT RingCount;
/* 066
// The number of packets that should be sent before pausing to wait
// for an acknowledgement. This value is passed up by the Miniport
// during the LINE_UP indication.
*/
USHORT SendWindow;
/* 068
// The number of packets currently queued for transmission on this link.
*/
ULONG NumTxQueued;
/* 06C
// Set TRUE if link is being closed.
*/
BOOLEAN Closing;
/* 06D
// Set TRUE if call is being closed.
*/
BOOLEAN CallClosing;
/* 070
// The current settings associated with this link as passed in via
// the OID_WAN_SET_LINK_INFO request.
*/
NDIS_WAN_SET_LINK_INFO WanLinkInfo;
/*
// This timer is used to keep track of the call state when a call is
// coming in or going out.
*/
NDIS_MINIPORT_TIMER CallTimer;
} HTDSU_LINK, *PHTDSU_LINK;
/*
// Use this macro to determine if a link structure pointer is really valid.
*/
#define IS_VALID_LINK(Adapter, Link) \
(Link && Link->Adapter == Adapter)
/*
// Use this macro to get a pointer to a link structure from a CardLine ID.
*/
#define GET_LINK_FROM_CARDLINE(Adapter, CardLine) \
&(Adapter->WanLinkArray[CardLine-HTDSU_CMD_LINE1])
/*
// Use this macro to get a pointer to a link structure from a LinkIndex.
*/
#define GET_LINK_FROM_LINKINDEX(Adapter, LinkIndex) \
&(Adapter->WanLinkArray[LinkIndex])
/*
// Use this macro to get a pointer to a link structure from a TAPI DeviceID.
*/
#define GET_LINK_FROM_DEVICEID(Adapter, ulDeviceID) \
&(Adapter->WanLinkArray[ulDeviceID - Adapter->DeviceIdBase]); \
ASSERT(ulDeviceID >= Adapter->DeviceIdBase); \
ASSERT(ulDeviceID < Adapter->DeviceIdBase+Adapter->NumLineDevs)
#define GET_DEVICEID_FROM_LINK(Adapter, Link) \
(Link->LinkIndex + Adapter->DeviceIdBase)
/*
// Use this macro to get a pointer to a link structure from a TAPI line handle.
*/
#define GET_LINK_FROM_HDLINE(Adapter, hdLine) \
(PHTDSU_LINK) \
(((PHTDSU_LINK) (hdLine) == &(Adapter->WanLinkArray[0])) ? (hdLine) : \
((PHTDSU_LINK) (hdLine) == &(Adapter->WanLinkArray[1])) ? (hdLine) : 0)
/*
// Use this macro to get a pointer to a link structure from a TAPI call handle.
*/
#define GET_LINK_FROM_HDCALL(Adapter, hdCall) \
(PHTDSU_LINK) \
(((PHTDSU_LINK) (hdCall) == &(Adapter->WanLinkArray[0])) ? (hdCall) : \
((PHTDSU_LINK) (hdCall) == &(Adapter->WanLinkArray[1])) ? (hdCall) : 0)
/*
// This structure contains all the information about a single adapter
// instance this Miniport driver is controlling.
*/
typedef struct _HTDSU_ADAPTER
{
#if DBG
/* 000
// Debug flags control how much debug is displayed in the checked version.
*/
ULONG DbgFlags;
UCHAR DbgID[4];
#endif
/* 008
// This is the handle given by the wrapper for calling ndis
// functions.
*/
NDIS_HANDLE MiniportAdapterHandle;
/* 00C
// Spinlock to protect fields in this structure..
*/
NDIS_SPIN_LOCK Lock;
/* 014
// Lets us know when a transmit is in progress.
*/
BOOLEAN TransmitInProgress;
/* 018
// Packets waiting to be sent when the controller is available.
*/
LIST_ENTRY TransmitIdleList;
/* 020
// Packets currently submitted to the controller waiting for completion.
*/
LIST_ENTRY TransmitBusyList;
/* 028
// Physical address where adapter memory is jumpered to.
*/
NDIS_PHYSICAL_ADDRESS PhysicalAddress;
/* 030
// System address where the adapter memory is mapped to.
*/
PVOID VirtualAddress;
/* 034
// Overlay the adapter memory structure on the virtual address
// where we've mapped it into system I/O (memory) space.
*/
PHTDSU_REGISTERS AdapterRam;
/* 038
// How much memory is on the adapter.
*/
USHORT MemorySize;
/* 03A
// Currently enabled interrupts
*/
USHORT InterruptEnableFlag;
/* 03C
// Currently pending interrupts
*/
USHORT InterruptStatusFlag;
/* 03E
// Interrupt number this adapter is using.
*/
CHAR InterruptNumber;
/* 03F
// A unique instance number to be used to generate a unique
// WAN permanent address (not really permanent, but it's unique).
*/
CHAR InstanceNumber;
/* 040
// Set TRUE if something goes terribly wrong with the hardware.
*/
BOOLEAN NeedReset;
/* 041
// Set TRUE when the DPC is entered, and reset to FALSE when it leaves.
*/
BOOLEAN InTheDpcHandler;
/* 042
// Specifies whether line is to be treated as a leased WAN line
// or a dialup TAPI line.
*/
USHORT LineType;
/* 044
// The DSU41 has only one line, DSU42 has two.
*/
UINT NumLineDevs;
/* 048
// The ulDeviceIDBase field passed in the PROVIDER_INIT request informs a miniport of the zero-based
// starting index that the Connection Wrapper will use when referring to a single adapter<65>s line devices by
// index. For example, if a ulDeviceIDBase of two is specified and the adapter supports three line devices,
// then the Connection Wrapper will use the identifiers two, three, and four to refer to the adapter<65>s three
// devices.
*/
ULONG DeviceIdBase;
/* 04C
// The number of line open calls currently on this adapter.
*/
UINT NumOpens;
/* 050
// NDIS interrupt control structure.
*/
NDIS_MINIPORT_INTERRUPT Interrupt;
/*
// Specifies whether what speed the line is to be configured to.
*/
USHORT LineRate;
/*
// WAN info structure.
*/
NDIS_WAN_INFO WanInfo;
/*
// This holds the TAPI ProviderInfo string returned from HtTapiGetDevCaps
// This is two null terminated strings packed end to end.
*/
CHAR ProviderInfo[48]; // This size is the max allowed by RAS
USHORT ProviderInfoSize; // Size in bytes of both strings.
/*
// WAN/TAPI link managment object for each connection we support.
*/
HTDSU_LINK WanLinkArray[HTDSU_NUM_LINKS];
/*
// This contains the name of our TAPI configuration DLL which is read
// from the registry during initialization. The name of the DLL and
// its path will be saved in the registry during installation.
*/
CHAR ConfigDLLName[128];
} HTDSU_ADAPTER, * PHTDSU_ADAPTER;
/***************************************************************************
// These routines are defined in htdsu.c
*/
NTSTATUS
DriverEntry(
IN PDRIVER_OBJECT DriverObject,
IN PUNICODE_STRING RegistryPath
);
NDIS_STATUS
HtDsuInitialize(
OUT PNDIS_STATUS OpenErrorStatus,
OUT PUINT SelectedMediumIndex,
IN PNDIS_MEDIUM MediumArray,
IN UINT MediumArraySize,
IN NDIS_HANDLE MiniportAdapterHandle,
IN NDIS_HANDLE WrapperConfigurationContext
);
NDIS_STATUS
HtDsuRegisterAdapter(
IN PHTDSU_ADAPTER Adapter,
IN PSTRING AddressList
);
VOID
HtDsuHalt(
IN PHTDSU_ADAPTER Adapter
);
NDIS_STATUS
HtDsuReconfigure(
OUT PNDIS_STATUS OpenErrorStatus,
IN PHTDSU_ADAPTER Adapter,
IN NDIS_HANDLE WrapperConfigurationContext
);
NDIS_STATUS
HtDsuReset(
OUT PBOOLEAN AddressingReset,
IN PHTDSU_ADAPTER Adapter
);
/***************************************************************************
// These routines are defined in interrup.c
*/
extern BOOLEAN
HtDsuCheckForHang(
IN PHTDSU_ADAPTER Adapter
);
extern VOID
HtDsuDisableInterrupt(
IN PHTDSU_ADAPTER Adapter
);
extern VOID
HtDsuEnableInterrupt(
IN PHTDSU_ADAPTER Adapter
);
extern VOID
HtDsuISR(
OUT PBOOLEAN InterruptRecognized,
OUT PBOOLEAN QueueMiniportHandleInterrupt,
IN PHTDSU_ADAPTER Adapter
);
VOID
HtDsuHandleInterrupt(
IN PHTDSU_ADAPTER Adapter
);
VOID
HtDsuPollAdapter(
IN PVOID SystemSpecific1,
IN PHTDSU_ADAPTER Adapter,
IN PVOID SystemSpecific2,
IN PVOID SystemSpecific3
);
/***************************************************************************
// These routines are defined in receive.c
*/
VOID
HtDsuReceivePacket(
IN PHTDSU_ADAPTER Adapter
);
/***************************************************************************
// These routines are defined in request.c
*/
NDIS_STATUS
HtDsuQueryInformation(
IN PHTDSU_ADAPTER Adapter,
IN NDIS_OID Oid,
IN PVOID InformationBuffer,
IN ULONG InformationBufferLength,
OUT PULONG BytesWritten,
OUT PULONG BytesNeeded
);
NDIS_STATUS
HtDsuSetInformation(
IN PHTDSU_ADAPTER Adapter,
IN NDIS_OID Oid,
IN PVOID InformationBuffer,
IN ULONG InformationBufferLength,
OUT PULONG BytesRead,
OUT PULONG BytesNeeded
);
/***************************************************************************
// These routines are defined in send.c
*/
NDIS_STATUS
HtDsuWanSend(
IN NDIS_HANDLE MacBindingHandle,
IN PHTDSU_LINK Link,
IN PNDIS_WAN_PACKET Packet
);
VOID
HtDsuTransmitComplete(
IN PHTDSU_ADAPTER Adapter
);
/***************************************************************************
// These routines are defined in card.c
*/
NDIS_STATUS
CardIdentify(
IN PHTDSU_ADAPTER Adapter
);
NDIS_STATUS
CardDoCommand(
IN PHTDSU_ADAPTER Adapter,
IN USHORT CardLine,
IN USHORT CommandValue
);
NDIS_STATUS
CardInitialize(
IN PHTDSU_ADAPTER Adapter,
IN BOOLEAN PerformSelfTest
);
VOID
CardLineConfig(
IN PHTDSU_ADAPTER Adapter,
IN USHORT CardLine
);
VOID
CardLineDisconnect(
IN PHTDSU_ADAPTER Adapter,
IN USHORT CardLine
);
VOID
CardPrepareTransmit(
IN PHTDSU_ADAPTER Adapter,
IN USHORT CardLine,
IN USHORT Length
);
VOID
CardGetReceiveInfo(
IN PHTDSU_ADAPTER Adapter,
OUT PUSHORT CardLine,
OUT PUSHORT BytesReceived,
OUT PUSHORT Status
);
VOID
CardDialNumber(
IN PHTDSU_ADAPTER Adapter,
IN USHORT CardLine,
IN PUCHAR DialString,
IN ULONG DialStringLength
);
/***************************************************************************
// These routines are defined in link.c
*/
VOID
LinkInitialize(
IN PHTDSU_ADAPTER Adapter,
IN PSTRING AddressList
);
PHTDSU_LINK
LinkAllocate(
IN PHTDSU_ADAPTER Adapter,
IN HTAPI_LINE htLine,
IN USHORT LinkIndex
);
VOID
LinkRelease(
IN PHTDSU_LINK Link
);
VOID
LinkLineUp(
IN PHTDSU_LINK Link
);
VOID
LinkLineDown(
IN PHTDSU_LINK Link
);
VOID
LinkLineError(
IN PHTDSU_LINK Link,
IN ULONG Errors
);
/***************************************************************************
// These routines are defined in tapi.c
*/
NDIS_STATUS
HtTapiQueryInformation(
IN PHTDSU_ADAPTER Adapter,
IN NDIS_OID Oid,
IN PVOID InformationBuffer,
IN ULONG InformationBufferLength,
OUT PULONG BytesWritten,
OUT PULONG BytesNeeded
);
NDIS_STATUS
HtTapiSetInformation(
IN PHTDSU_ADAPTER Adapter,
IN NDIS_OID Oid,
IN PVOID InformationBuffer,
IN ULONG InformationBufferLength,
OUT PULONG BytesRead,
OUT PULONG BytesNeeded
);
NDIS_STATUS
HtTapiConfigDialog(
IN PHTDSU_ADAPTER Adapter,
IN PNDIS_TAPI_CONFIG_DIALOG Request
);
NDIS_STATUS
HtTapiDevSpecific(
IN PHTDSU_ADAPTER Adapter,
IN PNDIS_TAPI_DEV_SPECIFIC Request
);
NDIS_STATUS
HtTapiGetAddressCaps(
IN PHTDSU_ADAPTER Adapter,
IN PNDIS_TAPI_GET_ADDRESS_CAPS Request
);
NDIS_STATUS
HtTapiGetAddressID(
IN PHTDSU_ADAPTER Adapter,
IN PNDIS_TAPI_GET_ADDRESS_ID Request
);
NDIS_STATUS
HtTapiGetAddressStatus(
IN PHTDSU_ADAPTER Adapter,
IN PNDIS_TAPI_GET_ADDRESS_STATUS Request
);
NDIS_STATUS
HtTapiGetCallAddressID(
IN PHTDSU_ADAPTER Adapter,
IN PNDIS_TAPI_GET_CALL_ADDRESS_ID Request
);
NDIS_STATUS
HtTapiGetCallInfo(
IN PHTDSU_ADAPTER Adapter,
IN PNDIS_TAPI_GET_CALL_INFO Request
);
NDIS_STATUS
HtTapiGetCallStatus(
IN PHTDSU_ADAPTER Adapter,
IN PNDIS_TAPI_GET_CALL_STATUS Request
);
NDIS_STATUS
HtTapiGetDevCaps(
IN PHTDSU_ADAPTER Adapter,
IN PNDIS_TAPI_GET_DEV_CAPS Request
);
NDIS_STATUS
HtTapiGetDevConfig(
IN PHTDSU_ADAPTER Adapter,
IN PNDIS_TAPI_GET_DEV_CONFIG Request
);
NDIS_STATUS
HtTapiGetExtensionID(
IN PHTDSU_ADAPTER Adapter,
IN PNDIS_TAPI_GET_EXTENSION_ID Request
);
NDIS_STATUS
HtTapiGetID(
IN PHTDSU_ADAPTER Adapter,
IN PNDIS_TAPI_GET_ID Request
);
NDIS_STATUS
HtTapiGetLineDevStatus(
IN PHTDSU_ADAPTER Adapter,
IN PNDIS_TAPI_GET_LINE_DEV_STATUS Request
);
NDIS_STATUS
HtTapiMakeCall(
IN PHTDSU_ADAPTER Adapter,
IN PNDIS_TAPI_MAKE_CALL Request
);
NDIS_STATUS
HtTapiNegotiateExtVersion(
IN PHTDSU_ADAPTER Adapter,
IN PNDIS_TAPI_NEGOTIATE_EXT_VERSION Request
);
NDIS_STATUS
HtTapiOpen(
IN PHTDSU_ADAPTER Adapter,
IN PNDIS_TAPI_OPEN Request
);
NDIS_STATUS
HtTapiProviderInitialize(
IN PHTDSU_ADAPTER Adapter,
IN PNDIS_TAPI_PROVIDER_INITIALIZE Request
);
NDIS_STATUS
HtTapiAccept(
IN PHTDSU_ADAPTER Adapter,
IN PNDIS_TAPI_ACCEPT Request
);
NDIS_STATUS
HtTapiAnswer(
IN PHTDSU_ADAPTER Adapter,
IN PNDIS_TAPI_ANSWER Request
);
NDIS_STATUS
HtTapiClose(
IN PHTDSU_ADAPTER Adapter,
IN PNDIS_TAPI_CLOSE Request
);
NDIS_STATUS
HtTapiCloseCall(
IN PHTDSU_ADAPTER Adapter,
IN PNDIS_TAPI_CLOSE_CALL Request
);
NDIS_STATUS
HtTapiConditionalMediaDetection(
IN PHTDSU_ADAPTER Adapter,
IN PNDIS_TAPI_CONDITIONAL_MEDIA_DETECTION Request
);
NDIS_STATUS
HtTapiDial(
IN PHTDSU_ADAPTER Adapter,
IN PNDIS_TAPI_DIAL Request
);
NDIS_STATUS
HtTapiDrop(
IN PHTDSU_ADAPTER Adapter,
IN PNDIS_TAPI_DROP Request
);
NDIS_STATUS
HtTapiProviderShutdown(
IN PHTDSU_ADAPTER Adapter,
IN PNDIS_TAPI_PROVIDER_SHUTDOWN Request
);
NDIS_STATUS
HtTapiSecureCall(
IN PHTDSU_ADAPTER Adapter,
IN PNDIS_TAPI_SECURE_CALL Request
);
NDIS_STATUS
HtTapiSelectExtVersion(
IN PHTDSU_ADAPTER Adapter,
IN PNDIS_TAPI_SELECT_EXT_VERSION Request
);
NDIS_STATUS
HtTapiSendUserUserInfo(
IN PHTDSU_ADAPTER Adapter,
IN PNDIS_TAPI_SEND_USER_USER_INFO Request
);
NDIS_STATUS
HtTapiSetAppSpecific(
IN PHTDSU_ADAPTER Adapter,
IN PNDIS_TAPI_SET_APP_SPECIFIC Request
);
NDIS_STATUS
HtTapiSetCallParams(
IN PHTDSU_ADAPTER Adapter,
IN PNDIS_TAPI_SET_CALL_PARAMS Request
);
NDIS_STATUS
HtTapiSetDefaultMediaDetection(
IN PHTDSU_ADAPTER Adapter,
IN PNDIS_TAPI_SET_DEFAULT_MEDIA_DETECTION Request
);
NDIS_STATUS
HtTapiSetDevConfig(
IN PHTDSU_ADAPTER Adapter,
IN PNDIS_TAPI_SET_DEV_CONFIG Request
);
NDIS_STATUS
HtTapiSetMediaMode(
IN PHTDSU_ADAPTER Adapter,
IN PNDIS_TAPI_SET_MEDIA_MODE Request
);
NDIS_STATUS
HtTapiSetStatusMessages(
IN PHTDSU_ADAPTER Adapter,
IN PNDIS_TAPI_SET_STATUS_MESSAGES Request
);
VOID
HtTapiAddressStateHandler(
IN PHTDSU_ADAPTER Adapter,
IN PHTDSU_LINK Link,
IN ULONG AddressState
);
VOID
HtTapiCallStateHandler(
IN PHTDSU_ADAPTER Adapter,
IN PHTDSU_LINK Link,
IN ULONG CallState,
IN ULONG StateParam
);
VOID
HtTapiLineDevStateHandler(
IN PHTDSU_ADAPTER Adapter,
IN PHTDSU_LINK Link,
IN ULONG LineDevState
);
VOID
HtTapiResetHandler(
IN PHTDSU_ADAPTER Adapter
);
VOID
HtTapiCallTimerHandler(
IN PVOID SystemSpecific1,
IN PHTDSU_LINK Link,
IN PVOID SystemSpecific2,
IN PVOID SystemSpecific3
);
#endif // _HTDSU_H