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.
176 lines
2.5 KiB
176 lines
2.5 KiB
/*++
|
|
|
|
Copyright (c) 1995 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
routing\ip\wanarp\ioctl.c
|
|
|
|
Abstract:
|
|
|
|
Header for ioctl.c
|
|
|
|
Revision History:
|
|
|
|
Amritansh Raghav
|
|
|
|
--*/
|
|
|
|
|
|
//
|
|
// Notification events
|
|
//
|
|
|
|
typedef struct _PENDING_NOTIFICATION
|
|
{
|
|
LIST_ENTRY leNotificationLink;
|
|
|
|
WORK_QUEUE_ITEM wqi;
|
|
|
|
WANARP_NOTIFICATION wnMsg;
|
|
|
|
}PENDING_NOTIFICATION, *PPENDING_NOTIFICATION;
|
|
|
|
//
|
|
// The lookaside list for notifications
|
|
//
|
|
|
|
extern NPAGED_LOOKASIDE_LIST g_llNotificationBlocks;
|
|
|
|
#define WANARP_NOTIFICATION_LOOKASIDE_DEPTH 4
|
|
|
|
//++
|
|
//
|
|
// PPENDING_NOTIFICATION
|
|
// AllocateNotification(
|
|
// VOID
|
|
// )
|
|
//
|
|
// Allocate a notification blob from g_llNotificationBlocks
|
|
//
|
|
//--
|
|
|
|
#define AllocateNotification() \
|
|
ExAllocateFromNPagedLookasideList(&g_llNotificationBlocks)
|
|
|
|
//++
|
|
//
|
|
// VOID
|
|
// FreeNotification(
|
|
// PPENDING_NOTIFICATION pMsg
|
|
// )
|
|
//
|
|
// Free a notification blob to g_llNotificationBlocks
|
|
//
|
|
//--
|
|
|
|
#define FreeNotification(n) \
|
|
ExFreeToNPagedLookasideList(&g_llNotificationBlocks, (n))
|
|
|
|
|
|
//
|
|
// List of pending notifications
|
|
//
|
|
|
|
LIST_ENTRY g_lePendingNotificationList;
|
|
|
|
//
|
|
// List of pending IRPs
|
|
//
|
|
|
|
LIST_ENTRY g_lePendingIrpList;
|
|
|
|
|
|
//
|
|
// Set to true if we want to queue notifications
|
|
//
|
|
|
|
BOOLEAN g_bQueueNotifications;
|
|
|
|
NTSTATUS
|
|
WanProcessNotification(
|
|
PIRP pIrp,
|
|
ULONG ulInLength,
|
|
ULONG ulOutLength
|
|
);
|
|
|
|
NTSTATUS
|
|
WanAddUserModeInterface(
|
|
PIRP pIrp,
|
|
ULONG ulInLength,
|
|
ULONG ulOutLength
|
|
);
|
|
|
|
NTSTATUS
|
|
WanDeleteUserModeInterface(
|
|
PIRP pIrp,
|
|
ULONG ulInLength,
|
|
ULONG ulOutLength
|
|
);
|
|
|
|
VOID
|
|
WanpCleanOutInterfaces(
|
|
VOID
|
|
);
|
|
|
|
VOID
|
|
WanpDeleteInterface(
|
|
PUMODE_INTERFACE pInterface
|
|
);
|
|
|
|
NTSTATUS
|
|
WanDeleteAdapters(
|
|
PIRP pIrp,
|
|
ULONG ulInLength,
|
|
ULONG ulOutLength
|
|
);
|
|
|
|
NTSTATUS
|
|
WanProcessConnectionFailure(
|
|
PIRP pIrp,
|
|
ULONG ulInLength,
|
|
ULONG ulOutLength
|
|
);
|
|
|
|
NTSTATUS
|
|
WanGetIfStats(
|
|
PIRP pIrp,
|
|
ULONG ulInLength,
|
|
ULONG ulOutLength
|
|
);
|
|
|
|
NTSTATUS
|
|
WanMapServerAdapter(
|
|
PIRP pIrp,
|
|
ULONG ulInLength,
|
|
ULONG ulOutLength
|
|
);
|
|
|
|
NTSTATUS
|
|
WanStartStopQueuing(
|
|
PIRP pIrp,
|
|
ULONG ulInLength,
|
|
ULONG ulOutLength
|
|
);
|
|
|
|
VOID
|
|
WanCancelNotificationIrp(
|
|
PDEVICE_OBJECT pDeviceObject,
|
|
PIRP pIrp
|
|
);
|
|
|
|
VOID
|
|
WanpCompleteIrp(
|
|
PPENDING_NOTIFICATION pEvent
|
|
);
|
|
|
|
NTSTATUS
|
|
WanpGetNewIndex(
|
|
OUT PULONG pulIndex
|
|
);
|
|
|
|
VOID
|
|
WanpFreeIndex(
|
|
IN ULONG ulIndex
|
|
);
|
|
|