/*************************************************************************** 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_