windows-nt/Source/XPSP1/NT/net/rndis/inc/rndisapi.h
2020-09-26 16:20:57 +08:00

171 lines
4.4 KiB
C

/***************************************************************************
Copyright (c) 1999 Microsoft Corporation
Module Name:
RNDISAPI.H
Abstract:
This module defines the Remote NDIS Wrapper API set.
Environment:
kernel mode only
Notes:
THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR
PURPOSE.
Copyright (c) 1999 Microsoft Corporation. All Rights Reserved.
Revision History:
2/8/99 : created
Authors:
Arvind Murching and Tom Green
****************************************************************************/
#ifndef _RNDISAPI_H_
#define _RNDISAPI_H_
#define RNDIS_VERSION 0x00010000
//
// RNDIS Microport Channel type definitions.
//
typedef enum _RM_CHANNEL_TYPE
{
RMC_DATA, // for NDIS Packet messages
RMC_CONTROL // all other messages (Init/Query/Set)
} RM_CHANNEL_TYPE, *PRM_CHANNEL_TYPE;
//
// RNDIS Microport handler templates:
//
typedef
NDIS_STATUS
(*RM_DEVICE_INIT_HANDLER)(
OUT PNDIS_HANDLE pMicroportAdapterContext,
OUT PULONG pMaxReceiveSize,
IN NDIS_HANDLE MiniportAdapterContext,
IN NDIS_HANDLE NdisMiniportHandle,
IN NDIS_HANDLE WrapperConfigurationContext,
IN PDEVICE_OBJECT Pdo
);
typedef
NDIS_STATUS
(*RM_DEVICE_INIT_CMPLT_NOTIFY_HANDLER)(
IN NDIS_HANDLE MicroportAdapterContext,
IN ULONG DeviceFlags,
IN OUT PULONG pMaxTransferSize
);
typedef
VOID
(*RM_DEVICE_HALT_HANDLER)(
IN NDIS_HANDLE MicroportAdapterContext
);
typedef
VOID
(*RM_SHUTDOWN_HANDLER)(
IN NDIS_HANDLE MicroportAdapterContext
);
typedef
VOID
(*RM_UNLOAD_HANDLER)(
IN NDIS_HANDLE MicroportContext
);
typedef
VOID
(*RM_SEND_MESSAGE_HANDLER)(
IN NDIS_HANDLE MicroportAdapterContext,
IN PMDL pMessageHead,
IN NDIS_HANDLE RndisMessageHandle,
IN RM_CHANNEL_TYPE ChannelType
);
typedef
VOID
(*RM_RETURN_MESSAGE_HANDLER)(
IN NDIS_HANDLE MicroportAdapterContext,
IN PMDL pMessageHead,
IN NDIS_HANDLE MicroportMessageContext
);
typedef struct _RNDIS_MICROPORT_CHARACTERISTICS
{
ULONG RndisVersion; // RNDIS_VERSION
ULONG Reserved; // Should be 0
RM_DEVICE_INIT_HANDLER RmInitializeHandler;
RM_DEVICE_INIT_CMPLT_NOTIFY_HANDLER RmInitCompleteNotifyHandler;
RM_DEVICE_HALT_HANDLER RmHaltHandler;
RM_SHUTDOWN_HANDLER RmShutdownHandler;
RM_UNLOAD_HANDLER RmUnloadHandler;
RM_SEND_MESSAGE_HANDLER RmSendMessageHandler;
RM_RETURN_MESSAGE_HANDLER RmReturnMessageHandler;
} RNDIS_MICROPORT_CHARACTERISTICS, *PRNDIS_MICROPORT_CHARACTERISTICS;
//
// RNDIS APIs
//
#ifndef RNDISMP
DECLSPEC_IMPORT
#endif
NDIS_STATUS
RndisMInitializeWrapper(
OUT PNDIS_HANDLE pNdisWrapperHandle,
IN PVOID MicroportContext,
IN PVOID DriverObject,
IN PVOID RegistryPath,
IN PRNDIS_MICROPORT_CHARACTERISTICS pCharacteristics
);
#ifndef RNDISMP
DECLSPEC_IMPORT
#endif
VOID
RndisMSendComplete(
IN NDIS_HANDLE MiniportAdapterContext,
IN NDIS_HANDLE RndisMessageHandle,
IN NDIS_STATUS SendStatus
);
#ifndef RNDISMP
DECLSPEC_IMPORT
#endif
VOID
RndisMIndicateReceive(
IN NDIS_HANDLE MiniportAdapterContext,
IN PMDL pMessageHead,
IN NDIS_HANDLE MicroportMessageContext,
IN RM_CHANNEL_TYPE ChannelType,
IN NDIS_STATUS ReceiveStatus
);
#endif // _RNDISAPI_H_