windows-nt/Source/XPSP1/NT/net/rras/ndis/ndistapi/private.h
2020-09-26 16:20:57 +08:00

245 lines
4.9 KiB
C

/*++ BUILD Version: 0000 // Increment this if a change has global effects
Copyright (c) 1994 Microsoft Corporation
Module Name:
private.h
Abstract:
Private definitions for NdisTapi.sys
Author:
Dan Knudson (DanKn) 20-Feb-1994
Revision History:
--*/
//
// Various definitions
//
typedef enum _PROVIDER_STATUS
{
PROVIDER_STATUS_ONLINE,
PROVIDER_STATUS_OFFLINE,
PROVIDER_STATUS_PENDING_INIT,
PROVIDER_STATUS_PENDING_REINIT,
PROVIDER_STATUS_PENDING_LINE_CREATE
} PROVIDER_STATUS, *PPROVIDER_STATUS;
typedef NDIS_STATUS (*REQUEST_PROC)(NDIS_HANDLE, PNDIS_REQUEST);
typedef struct _DEVICE_INFO {
ULONG DeviceID;
HTAPI_LINE htLine;
HDRV_LINE hdLine;
} DEVICE_INFO, *PDEVICE_INFO;
typedef struct _PROVIDER_INFO
{
struct _PROVIDER_INFO *Next;
PROVIDER_STATUS Status;
NDIS_HANDLE ProviderHandle;
REQUEST_PROC RequestProc;
ULONG ProviderID;
ULONG NumDevices;
ULONG DeviceIDBase;
GUID Guid;
NDIS_WAN_MEDIUM_SUBTYPE MediaType;
ULONG_PTR TempID;
ULONG CreateCount;
KEVENT SyncEvent;
PDEVICE_INFO DeviceInfo;
} PROVIDER_INFO, *PPROVIDER_INFO;
typedef enum _NDISTAPI_STATUS
{
NDISTAPI_STATUS_CONNECTED,
NDISTAPI_STATUS_DISCONNECTED,
NDISTAPI_STATUS_CONNECTING,
NDISTAPI_STATUS_DISCONNECTING
} NDISTAPI_STATUS, *PNDISTAPI_STATUS;
typedef struct _KMDD_DEVICE_EXTENSION
{
//
// Pointer to a list of registered providers. (Some may actually
// not be currently registered, but they were at one point so we've
// saved a placeholder for them should they come back online at some
// point.)
//
PPROVIDER_INFO Providers;
//
// Whether TAPI has the the connection wrapper open
//
NDISTAPI_STATUS Status;
ULONG RefCount;
//
// Pointer to the NdisTapi device object
//
PDEVICE_OBJECT DeviceObject;
//
// BaseID
//
ULONG ProviderBaseID;
//
// The number of line devices we told told TAPI we supported when
// it opened us (some of which may not actually be online at any
// given time)
//
ULONG NdisTapiNumDevices;
//
// Whether we have an outstanding provider init request
//
ULONG Flags;
#define PENDING_LINECREATE 0x00000001
#define CLEANUP_INITIATED 0x00000002
#define EVENTIRP_CANCELED 0x00000004
#define REQUESTIRP_CANCELED 0x00000008
#define DUPLICATE_EVENTIRP 0x00000010
#define CANCELIRP_NOTFOUND 0x00000020
//
// Count of irps canceled through the cancel routine or
// cleanup routine
//
ULONG IrpsCanceledCount;
//
// Count of irps missing when a request is completed by
// the underlying miniport
//
ULONG MissingRequests;
//
// Used to key irp request queue
//
ULONG ulRequestID;
//
// Value return to provider for next NEWCALL msg
//
ULONG htCall;
//
// Outstanding get-events request
//
PIRP EventsRequestIrp;
//
// List of events waiting for service by user-mode
//
LIST_ENTRY ProviderEventList;
ULONG EventCount; // Number of events in queue
//
// List of requests sent to the providers
//
LIST_ENTRY ProviderRequestList;
ULONG RequestCount; // Number of requests in queue
PFILE_OBJECT NCPAFileObject;
//
// Synchronizes access to the device extension following fields
//
KSPIN_LOCK SpinLock;
} KMDD_DEVICE_EXTENSION, *PKMDD_DEVICE_EXTENSION;
typedef struct _PROVIDER_EVENT {
//
// List linkage
//
LIST_ENTRY Linkage;
//
// Event
//
NDIS_TAPI_EVENT Event;
}PROVIDER_EVENT, *PPROVIDER_EVENT;
typedef struct _PROVIDER_REQUEST
{
LIST_ENTRY Linkage; // Link into providerrequest list
// ASSUMED to be first member!!!!
PIRP Irp; // Original IRP
PPROVIDER_INFO Provider; // Provider this is destined for
ULONG RequestID; // unique identifier for request
ULONG Flags; //
#define INTERNAL_REQUEST 0x00000001
PVOID Alignment1;
NDIS_REQUEST NdisRequest; // NDIS_REQUEST storage
PVOID Alignment2;
ULONG Data[1]; // This field is a placeholder for an
// NDIS_TAPI_XXX structure, the first
// ULONG of which is always a request ID.
} PROVIDER_REQUEST, *PPROVIDER_REQUEST;
//
// Our global device extension
//
PKMDD_DEVICE_EXTENSION DeviceExtension;
#if DBG
//
// A var which determines the verboseness of the msgs printed by DBGOUT()
//
//
LONG NdisTapiDebugLevel = 0;
//
// DbgPrint wrapper
//
#define DBGOUT(arg) DbgPrt arg
#else
#define DBGOUT(arg)
#endif