mirror of https://github.com/tongzx/nt5src
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
206 lines
2.5 KiB
206 lines
2.5 KiB
/*++
|
|
|
|
Copyright (c) 1995 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
ipinip\driver.h
|
|
|
|
Abstract:
|
|
|
|
Headers for driver.c
|
|
|
|
Revision History:
|
|
|
|
|
|
--*/
|
|
|
|
|
|
//
|
|
// The number of IRP_MJ_CREATEs we have received
|
|
//
|
|
|
|
ULONG g_ulNumCreates;
|
|
|
|
//
|
|
// The state of the driver
|
|
//
|
|
|
|
DWORD g_dwDriverState;
|
|
|
|
//
|
|
// The lock to protect the driver state
|
|
//
|
|
|
|
RT_LOCK g_rlStateLock;
|
|
|
|
//
|
|
// The mutext that serializes binds and unbinds
|
|
//
|
|
|
|
WAN_RESOURCE g_wrBindMutex;
|
|
|
|
//
|
|
// The state of the driver.
|
|
//
|
|
|
|
#define DRIVER_STOPPED 0
|
|
#define DRIVER_STARTING 1
|
|
#define DRIVER_STARTED 2
|
|
|
|
|
|
//
|
|
// Timeout value for start is 10 seconds.
|
|
// So in 100ns it becomes
|
|
//
|
|
|
|
#define START_TIMEOUT (LONGLONG)(10 * 1000 * 1000 * 10)
|
|
|
|
//
|
|
// The event to signal when we have started
|
|
//
|
|
|
|
KEVENT g_keStartEvent;
|
|
|
|
//
|
|
// The event to signal when all the threads go to 0 and state is STOPPED
|
|
//
|
|
|
|
KEVENT g_keStateEvent;
|
|
|
|
//
|
|
// Event to signal when our close adapter function is done
|
|
//
|
|
|
|
KEVENT g_keCloseEvent;
|
|
|
|
//
|
|
// The number of "threads" in the driver
|
|
//
|
|
|
|
ULONG g_ulNumThreads;
|
|
|
|
NTSTATUS
|
|
DriverEntry(
|
|
IN PDRIVER_OBJECT DriverObject,
|
|
IN PUNICODE_STRING RegistryPath
|
|
);
|
|
|
|
NTSTATUS
|
|
WanDispatch(
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
IN PIRP Irp
|
|
);
|
|
|
|
VOID
|
|
WanUnload(
|
|
PDRIVER_OBJECT DriverObject
|
|
);
|
|
|
|
BOOLEAN
|
|
WanpSetupExternalName(
|
|
PUNICODE_STRING pusNtName,
|
|
PWCHAR pwcDosName,
|
|
BOOLEAN bCreate
|
|
);
|
|
|
|
NTSTATUS
|
|
WanpStartDriver(
|
|
VOID
|
|
);
|
|
|
|
VOID
|
|
WanpStopDriver(
|
|
VOID
|
|
);
|
|
|
|
NTSTATUS
|
|
WanpRegisterWithIp(
|
|
VOID
|
|
);
|
|
|
|
VOID
|
|
WanpDeregisterWithIp(
|
|
VOID
|
|
);
|
|
|
|
BOOLEAN
|
|
EnterDriverCode(
|
|
VOID
|
|
);
|
|
|
|
VOID
|
|
ExitDriverCode(
|
|
VOID
|
|
);
|
|
|
|
VOID
|
|
WanpSetDemandDialCallback(
|
|
BOOLEAN bSetPointer
|
|
);
|
|
|
|
BOOLEAN
|
|
WanpInitializeDriverStructures(
|
|
VOID
|
|
);
|
|
|
|
NDIS_STATUS
|
|
WanpInitializeNdis(
|
|
VOID
|
|
);
|
|
|
|
NTSTATUS
|
|
OpenRegKey(
|
|
OUT PHANDLE phHandle,
|
|
IN PUNICODE_STRING pusKeyName
|
|
);
|
|
|
|
NTSTATUS
|
|
GetRegDWORDValue(
|
|
HANDLE KeyHandle,
|
|
PWCHAR ValueName,
|
|
PULONG ValueData
|
|
);
|
|
|
|
VOID
|
|
WanpDeinitializeNdis(
|
|
VOID
|
|
);
|
|
|
|
VOID
|
|
WanNdisUnload(
|
|
VOID
|
|
);
|
|
|
|
BOOLEAN
|
|
IsEntryOnList(
|
|
PLIST_ENTRY pleHead,
|
|
PLIST_ENTRY pleEntry
|
|
);
|
|
|
|
VOID
|
|
WanpInitializeResource(
|
|
IN PWAN_RESOURCE pLock
|
|
);
|
|
|
|
VOID
|
|
WanpAcquireResource(
|
|
IN PWAN_RESOURCE pLock
|
|
);
|
|
|
|
VOID
|
|
WanpReleaseResource(
|
|
IN PWAN_RESOURCE pLock
|
|
);
|
|
|
|
INT
|
|
ConvertGuidToString(
|
|
IN GUID *pGuid,
|
|
OUT PWCHAR pwszGuid
|
|
);
|
|
|
|
VOID
|
|
WanpClearPendingIrps(
|
|
VOID
|
|
);
|
|
|