/*++ Copyright (c) 1990-1995 Microsoft Corporation Module Name: cprotos.h Abstract: NDIS wrapper function prototypes for common functions Author: Environment: Kernel mode, FSD Revision History: Jun-95 Jameel Hyder Split up from a monolithic file --*/ NTSTATUS ndisMIrpCompletion( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp, IN PVOID Context ); #undef NdisMSetAttributes VOID NdisMSetAttributes( IN NDIS_HANDLE MiniportAdapterHandle, IN NDIS_HANDLE MiniportAdapterContext, IN BOOLEAN BusMaster, IN NDIS_INTERFACE_TYPE AdapterType ); NDIS_STATUS ndisPnPNotifyAllTransports( IN PNDIS_MINIPORT_BLOCK Miniport, IN NET_PNP_EVENT_CODE PnpEvent, IN PVOID Buffer, IN ULONG BufferLength ); NDIS_STATUS FASTCALL ndisPnPNotifyBinding( IN PNDIS_OPEN_BLOCK Open, IN PNET_PNP_EVENT NetPnpEvent ); PNDIS_OPEN_BLOCK FASTCALL ndisReferenceNextUnprocessedOpen( IN PNDIS_MINIPORT_BLOCK Miniport ); VOID ndisUnprocessAllOpens( IN PNDIS_MINIPORT_BLOCK Miniport ); NTSTATUS ndisCompletionRoutine( IN PDEVICE_OBJECT pdo, IN PIRP pirp, IN PVOID Context ); NTSTATUS ndisPnPDispatch( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp ); BOOLEAN ndisMIsr( IN PKINTERRUPT KInterrupt, IN PVOID Context ); VOID ndisMDpc( IN PVOID SystemSpecific1, IN PVOID InterruptContext, IN PVOID SystemSpecific2, IN PVOID SystemSpecific3 ); VOID ndisMWakeUpDpcX( IN PKDPC Dpc, IN PVOID Context, IN PVOID SystemContext1, IN PVOID SystemContext2 ); VOID ndisMPollMediaState( IN PNDIS_MINIPORT_BLOCK Miniport ); #undef NdisMSetTimer VOID NdisMSetTimer( IN PNDIS_MINIPORT_TIMER MiniportTimer, IN UINT MillisecondsToDelay ); VOID ndisMDpcX( IN PVOID SystemSpecific1, IN PVOID InterruptContext, IN PVOID SystemSpecific2, IN PVOID SystemSpecific3 ); VOID ndisMTimerDpcX( IN PVOID SystemSpecific1, IN PVOID InterruptContext, IN PVOID SystemSpecific2, IN PVOID SystemSpecific3 ); VOID ndisMWakeUpDpc( IN PKDPC Dpc, IN PVOID Context, IN PVOID SystemContext1, IN PVOID SystemContext2 ); VOID ndisMDeferredDpc( IN PKDPC Dpc, IN PVOID Context, IN PVOID SystemContext1, IN PVOID SystemContext2 ); NDIS_STATUS NdisCoAssignInstanceName( IN NDIS_HANDLE NdisVcHandle, IN PNDIS_STRING BaseInstanceName, OUT PNDIS_STRING pVcInstanceName OPTIONAL ); NDIS_STATUS ndisMChangeClass( IN UINT OldFilterClasses, IN UINT NewFilterClasses, IN NDIS_HANDLE BindingHandle, IN PNDIS_REQUEST NdisRequest, IN BOOLEAN Set ); NDIS_STATUS ndisMReset( IN NDIS_HANDLE NdisBindingHandle ); NDIS_STATUS ndisMRequest( IN NDIS_HANDLE NdisBindingHandle, IN PNDIS_REQUEST NdisRequest ); NDIS_STATUS ndisMRequestX( IN NDIS_HANDLE NdisBindingHandle, IN PNDIS_REQUEST NdisRequest ); VOID FASTCALL ndisMAbortRequests( IN PNDIS_MINIPORT_BLOCK Miniport ); VOID FASTCALL ndisMProcessDeferred( IN PNDIS_MINIPORT_BLOCK Miniport ); NDIS_STATUS ndisMTransferData( IN NDIS_HANDLE NdisBindingHandle, IN NDIS_HANDLE MacReceiveContext, IN UINT ByteOffset, IN UINT BytesToTransfer, IN OUT PNDIS_PACKET Packet, OUT PUINT BytesTransferred ); #undef NdisMTransferDataComplete VOID NdisMTransferDataComplete( IN NDIS_HANDLE MiniportAdapterHandle, IN PNDIS_PACKET Packet, IN NDIS_STATUS Status, IN UINT BytesTransferred ); VOID FASTCALL ndisMDeferredReturnPackets( IN PNDIS_MINIPORT_BLOCK Miniport ); VOID ndisMIndicatePacket( IN PNDIS_MINIPORT_BLOCK Miniport, IN PPNDIS_PACKET PacketArray, IN UINT NumberOfPackets ); VOID ndisMDummyIndicatePacket( IN PNDIS_MINIPORT_BLOCK Miniport, IN PPNDIS_PACKET PacketArray, IN UINT NumberOfPackets ); NTSTATUS ndisWMIDispatch( IN PDEVICE_OBJECT DeviceObject, IN PIRP pirp ); NTSTATUS FASTCALL ndisWmiDisableEvents( IN PNDIS_MINIPORT_BLOCK Miniport, IN LPGUID Guid ); NTSTATUS FASTCALL ndisWmiEnableEvents( IN PNDIS_MINIPORT_BLOCK Miniport, IN LPGUID Guid ); NTSTATUS ndisWmiChangeSingleItem( IN PNDIS_MINIPORT_BLOCK Miniport, IN PWNODE_SINGLE_ITEM wnode, IN ULONG BufferSize, OUT PULONG pReturnSize, IN PIRP Irp ); NTSTATUS ndisWmiChangeSingleInstance( IN PNDIS_MINIPORT_BLOCK Miniport, IN PWNODE_SINGLE_INSTANCE wnode, IN ULONG BufferSize, OUT PULONG pReturnSize, IN PIRP Irp ); NTSTATUS ndisWmiQuerySingleInstance( IN PNDIS_MINIPORT_BLOCK Miniport, IN PWNODE_SINGLE_INSTANCE wnode, IN ULONG BufferSize, OUT PULONG pReturnSize, IN PIRP Irp ); NTSTATUS ndisWmiQueryAllData( IN PNDIS_MINIPORT_BLOCK Miniport, IN LPGUID guid, IN PWNODE_ALL_DATA wnode, IN ULONG BufferSize, OUT PULONG pReturnSize, IN PIRP Irp ); NTSTATUS ndisQueryGuidData( IN PUCHAR Buffer, IN ULONG BufferLength, IN PNDIS_MINIPORT_BLOCK Miniport, IN PNDIS_CO_VC_PTR_BLOCK pVcBlock, IN LPGUID guid, IN PIRP Irp ); BOOLEAN ndisWmiCheckAccess( IN PNDIS_GUID pNdisGuid, IN ULONG DesiredAccess, IN LONG RequiredPrivilege, IN PIRP Irp ); NTSTATUS ndisQueryGuidDataSize( OUT PULONG pBytesNeeded, IN PNDIS_MINIPORT_BLOCK Miniport, IN PNDIS_CO_VC_PTR_BLOCK pVcBlock OPTIONAL, IN LPGUID guid ); NTSTATUS ndisWmiGetGuid( OUT PNDIS_GUID * ppNdisGuid, IN PNDIS_MINIPORT_BLOCK Miniport, IN LPGUID guid, IN NDIS_STATUS status ); NTSTATUS ndisWmiRegister( IN PNDIS_MINIPORT_BLOCK Miniport, IN ULONG_PTR RegistrationType, IN PWMIREGINFO wmiRegInfo, IN ULONG wmiRegInfoSize, IN PULONG pReturnSize ); VOID ndisNotifyWmiBindUnbind( PNDIS_MINIPORT_BLOCK Miniport, PNDIS_PROTOCOL_BLOCK Protocol, BOOLEAN fBind ); VOID ndisNotifyDevicePowerStateChange( PNDIS_MINIPORT_BLOCK Miniport, NDIS_DEVICE_POWER_STATE PowerState ); NDIS_STATUS ndisQuerySupportedGuidToOidList( IN PNDIS_MINIPORT_BLOCK Miniport ); USHORT ndisWmiMapOids( IN OUT PNDIS_GUID pDst, IN IN USHORT cDst, IN PNDIS_OID pOidList, IN USHORT cOidList, IN PNDIS_GUID ndisSupportedList, IN ULONG cSupportedList ); NDIS_STATUS ndisQueryCustomGuids( IN PNDIS_MINIPORT_BLOCK Miniport, IN PNDIS_REQUEST Request, OUT PNDIS_GUID * ppGuidToOid, OUT PUSHORT pcGuidToOid ); NTSTATUS ndisWmiFindInstanceName( IN PNDIS_CO_VC_PTR_BLOCK * ppVcBlock, IN PNDIS_MINIPORT_BLOCK Miniport, IN PWSTR pInstanceName, IN USHORT cbInstanceName ); NDIS_STATUS ndisQuerySetMiniport( IN PNDIS_MINIPORT_BLOCK Miniport, IN PNDIS_CO_VC_PTR_BLOCK pVcBlock OPTIONAL, IN BOOLEAN fSet, IN PNDIS_REQUEST pRequest, IN PLARGE_INTEGER TimeOut OPTIONAL ); NDIS_STATUS ndisMProcessResetRequested( IN PNDIS_MINIPORT_BLOCK Miniport, OUT PBOOLEAN pAddressingReset ); #undef NdisMIndicateStatus VOID NdisMIndicateStatus( IN NDIS_HANDLE MiniportHandle, IN NDIS_STATUS GeneralStatus, IN PVOID StatusBuffer, IN UINT StatusBufferSize ); #undef NdisMIndicateStatusComplete VOID NdisMIndicateStatusComplete( IN NDIS_HANDLE MiniportHandle ); #undef NdisMResetComplete VOID NdisMResetComplete( IN NDIS_HANDLE MiniportAdapterHandle, IN NDIS_STATUS Status, IN BOOLEAN AddressingReset ); VOID ndisMResetCompleteStage1( IN PNDIS_MINIPORT_BLOCK Miniport, IN NDIS_STATUS Status, IN BOOLEAN AddressingReset ); VOID FASTCALL ndisMResetCompleteStage2( IN PNDIS_MINIPORT_BLOCK Miniport ); // // WAN Handlers // NDIS_STATUS ndisMWanSend( IN NDIS_HANDLE NdisBindingHandle, IN NDIS_HANDLE NdisLinkHandle, IN PNDIS_WAN_PACKET Packet ); #undef NdisMWanIndicateReceive VOID NdisMWanIndicateReceive( OUT PNDIS_STATUS Status, IN NDIS_HANDLE MiniportAdapterHandle, IN NDIS_HANDLE NdisLinkContext, IN PUCHAR Packet, IN ULONG PacketSize ); #undef NdisMWanIndicateReceiveComplete VOID NdisMWanIndicateReceiveComplete( IN NDIS_HANDLE MiniportAdapterHandle, IN NDIS_HANDLE NdisLinkContext ); NDIS_STATUS ndisMAllocateRequest( OUT PNDIS_REQUEST * pRequest, IN NDIS_OID Oid, IN PVOID Buffer OPTIONAL, IN ULONG BufferLength ); NDIS_STATUS ndisMFilterOutStatisticsOids( PNDIS_MINIPORT_BLOCK Miniport, PNDIS_REQUEST Request ); // VOID // ndisMFreeInternalRequest( // IN PVOID PRequest // ) #define ndisMFreeInternalRequest(_pRequest) FREE_POOL(_pRequest) VOID ndisMTimerDpc( IN PKDPC Dpc, IN PVOID Context, IN PVOID SystemContext1, IN PVOID SystemContext2 ); VOID FASTCALL ndisMAbortRequests( IN PNDIS_MINIPORT_BLOCK Miniport ); VOID FASTCALL ndisMAbortPackets( IN PNDIS_MINIPORT_BLOCK Miniport, IN PNDIS_OPEN_BLOCK Open OPTIONAL, IN PVOID CancelId OPTIONAL ); BOOLEAN FASTCALL ndisMLoopbackPacketX( IN PNDIS_MINIPORT_BLOCK Miniport, IN PNDIS_PACKET Packet ); BOOLEAN FASTCALL ndisMIsLoopbackPacket( IN PNDIS_MINIPORT_BLOCK Miniport, IN PNDIS_PACKET Packet, OUT PNDIS_PACKET * LoopbackPacket OPTIONAL ); VOID ndisMRundownRequests( IN PNDIS_WORK_ITEM pWorkItem ); VOID FASTCALL ndisMDoRequests( IN PNDIS_MINIPORT_BLOCK Miniport ); VOID ndisMCopyFromPacketToBuffer( IN PNDIS_PACKET Packet, IN UINT Offset, IN UINT BytesToCopy, OUT PCHAR Buffer, OUT PUINT BytesCopied ); BOOLEAN FASTCALL ndisMCreateDummyFilters( IN PNDIS_MINIPORT_BLOCK Miniport ); VOID FASTCALL ndisMAdjustFilters( IN PNDIS_MINIPORT_BLOCK Miniport, IN PFILTERDBS FilterDB ); LONG ndisMDoMiniportOp( IN PNDIS_MINIPORT_BLOCK Miniport, IN BOOLEAN Query, IN ULONG Oid, IN PVOID Buf, IN LONG BufSize, IN LONG ErrorCodesToReturn, IN BOOLEAN fMandatory ); VOID ndisMOpenAdapter( OUT PNDIS_STATUS Status, IN PNDIS_OPEN_BLOCK NewOpenP, IN BOOLEAN UsingEncapsulation ); VOID FASTCALL ndisMSyncQueryInformationComplete( IN PNDIS_MINIPORT_BLOCK Miniport, IN NDIS_STATUS Status ); #undef NdisMSetInformationComplete VOID NdisMSetInformationComplete( IN NDIS_HANDLE MiniportAdapterHandle, IN NDIS_STATUS Status ); #undef NdisMQueryInformationComplete VOID NdisMQueryInformationComplete( IN NDIS_HANDLE MiniportAdapterHandle, IN NDIS_STATUS Status ); VOID FASTCALL ndisMSyncSetInformationComplete( IN PNDIS_MINIPORT_BLOCK Miniport, IN NDIS_STATUS Status ); VOID ndisMRequestSetInformationPost( IN PNDIS_MINIPORT_BLOCK Miniport, IN PNDIS_REQUEST Request, IN NDIS_STATUS Status ); BOOLEAN FASTCALL ndisMQueueRequest( IN PNDIS_MINIPORT_BLOCK Miniport, IN PNDIS_REQUEST Request ); VOID FASTCALL ndisMRestoreFilterSettings( IN PNDIS_MINIPORT_BLOCK Miniport, IN PNDIS_OPEN_BLOCK Open OPTIONAL, IN BOOLEAN fReset ); NDIS_STATUS FASTCALL ndisMSetPacketFilter( IN PNDIS_MINIPORT_BLOCK Miniport, IN PNDIS_REQUEST Request ); NDIS_STATUS FASTCALL ndisMSetProtocolOptions( IN PNDIS_MINIPORT_BLOCK Miniport, IN PNDIS_REQUEST Request ); NDIS_STATUS FASTCALL ndisMSetCurrentLookahead( IN PNDIS_MINIPORT_BLOCK Miniport, IN PNDIS_REQUEST Request ); NDIS_STATUS FASTCALL ndisMSetMulticastList( IN PNDIS_MINIPORT_BLOCK Miniport, IN PNDIS_REQUEST Request ); NDIS_STATUS FASTCALL ndisMSetFunctionalAddress( IN PNDIS_MINIPORT_BLOCK Miniport, IN PNDIS_REQUEST Request ); NDIS_STATUS FASTCALL ndisMSetGroupAddress( IN PNDIS_MINIPORT_BLOCK Miniport, IN PNDIS_REQUEST Request ); NDIS_STATUS FASTCALL ndisMSetFddiMulticastList( IN PNDIS_MINIPORT_BLOCK Miniport, IN PNDIS_REQUEST Request ); NDIS_STATUS FASTCALL ndisMSetAddWakeUpPattern( IN PNDIS_MINIPORT_BLOCK Miniport, IN PNDIS_REQUEST Request ); NDIS_STATUS FASTCALL ndisMSetRemoveWakeUpPattern( IN PNDIS_MINIPORT_BLOCK Miniport, IN PNDIS_REQUEST Request ); NDIS_STATUS FASTCALL ndisMSetEnableWakeUp( IN PNDIS_MINIPORT_BLOCK Miniport, IN PNDIS_REQUEST Request ); NDIS_STATUS ndisMSetInformation( IN PNDIS_MINIPORT_BLOCK Miniport, IN PNDIS_REQUEST Request ); NDIS_STATUS FASTCALL ndisMQueryCurrentPacketFilter( IN PNDIS_MINIPORT_BLOCK Miniport, IN PNDIS_REQUEST Request ); NDIS_STATUS FASTCALL ndisMQueryMediaSupported( IN PNDIS_MINIPORT_BLOCK Miniport, IN PNDIS_REQUEST Request ); NDIS_STATUS FASTCALL ndisMQueryEthernetMulticastList( IN PNDIS_MINIPORT_BLOCK Miniport, IN PNDIS_REQUEST Request ); NDIS_STATUS FASTCALL ndisMQueryLongMulticastList( IN PNDIS_MINIPORT_BLOCK Miniport, IN PNDIS_REQUEST Request ); NDIS_STATUS FASTCALL ndisMQueryShortMulticastList( IN PNDIS_MINIPORT_BLOCK Miniport, IN PNDIS_REQUEST Request ); NDIS_STATUS FASTCALL ndisMQueryMaximumFrameSize( IN PNDIS_MINIPORT_BLOCK Miniport, IN PNDIS_REQUEST Request ); NDIS_STATUS FASTCALL ndisMQueryMaximumTotalSize( IN PNDIS_MINIPORT_BLOCK Miniport, IN PNDIS_REQUEST Request ); NDIS_STATUS FASTCALL ndisMQueryNetworkAddress( IN PNDIS_MINIPORT_BLOCK Miniport, IN PNDIS_REQUEST Request ); NDIS_STATUS FASTCALL ndisMQueryWakeUpPatternList( IN PNDIS_MINIPORT_BLOCK Miniport, IN PNDIS_REQUEST Request ); NDIS_STATUS FASTCALL ndisMQueryEnableWakeUp( IN PNDIS_MINIPORT_BLOCK Miniport, IN PNDIS_REQUEST Request ); NDIS_STATUS ndisMQueryInformation( IN PNDIS_MINIPORT_BLOCK Miniport, IN PNDIS_REQUEST Request ); NDIS_STATUS FASTCALL ndisMDispatchRequest( IN PNDIS_MINIPORT_BLOCK Miniport, IN PNDIS_REQUEST Request, IN BOOLEAN fQuery ); // // X Filter // VOID FASTCALL XFilterLockHandler( IN PETH_FILTER Filter, IN OUT PLOCK_STATE pLockState ); VOID XRemoveAndFreeBinding( IN PX_FILTER Filter, IN PX_BINDING_INFO Binding ); VOID XRemoveBindingFromLists( IN PX_FILTER Filter, IN PX_BINDING_INFO Binding ); NDIS_STATUS XFilterAdjust( IN PX_FILTER Filter, IN NDIS_HANDLE NdisFilterHandle, IN UINT FilterClasses, IN BOOLEAN Set ); VOID XUndoFilterAdjust( IN PX_FILTER Filter, IN PX_BINDING_INFO Binding ); BOOLEAN XNoteFilterOpenAdapter( IN PX_FILTER Filter, IN NDIS_HANDLE NdisBindingHandle, OUT PNDIS_HANDLE NdisFilterHandle ); // // EthFilterxxx // BOOLEAN EthCreateFilter( IN UINT MaximumMulticastAddresses, IN PUCHAR AdapterAddress, OUT PETH_FILTER * Filter ); VOID EthDeleteFilter( IN PETH_FILTER Filter ); NDIS_STATUS EthDeleteFilterOpenAdapter( IN PETH_FILTER Filter, IN NDIS_HANDLE NdisFilterHandle ); NDIS_STATUS EthChangeFilterAddresses( IN PETH_FILTER Filter, IN NDIS_HANDLE NdisFilterHandle, IN UINT AddressCount, IN CHAR Addresses[][ETH_LENGTH_OF_ADDRESS], IN BOOLEAN Set ); BOOLEAN EthShouldAddressLoopBack( IN PETH_FILTER Filter, IN CHAR Address[ETH_LENGTH_OF_ADDRESS] ); UINT EthNumberOfOpenFilterAddresses( IN PETH_FILTER Filter, IN NDIS_HANDLE NdisFilterHandle ); VOID EthQueryGlobalFilterAddresses( OUT PNDIS_STATUS Status, IN PETH_FILTER Filter, IN UINT SizeOfArray, OUT PUINT NumberOfAddresses, IN OUT CHAR AddressArray[][ETH_LENGTH_OF_ADDRESS] ); VOID EthQueryOpenFilterAddresses( OUT PNDIS_STATUS Status, IN PETH_FILTER Filter, IN NDIS_HANDLE NdisFilterHandle, IN UINT SizeOfArray, OUT PUINT NumberOfAddresses, IN OUT CHAR AddressArray[][ETH_LENGTH_OF_ADDRESS] ); VOID EthFilterIndicateReceive( IN PETH_FILTER Filter, IN NDIS_HANDLE MacReceiveContext, IN PCHAR Address, IN PVOID HeaderBuffer, IN UINT HeaderBufferSize, IN PVOID LookaheadBuffer, IN UINT LookaheadBufferSize, IN UINT PacketSize ); VOID EthFilterIndicateReceiveComplete( IN PETH_FILTER Filter ); BOOLEAN FASTCALL ethFindMulticast( IN UINT NumberOfAddresses, IN CHAR AddressArray[][ETH_LENGTH_OF_ADDRESS], IN CHAR MulticastAddress[ETH_LENGTH_OF_ADDRESS] ); VOID ethCompleteChangeFilterAddresses( IN PETH_FILTER Filter, IN NDIS_STATUS Status, IN PETH_BINDING_INFO LocalBinding OPTIONAL, IN BOOLEAN WriteFilterHeld ); VOID ethFilterDprIndicateReceivePacket( IN NDIS_HANDLE MiniportHandle, IN PPNDIS_PACKET ReceivedPackets, IN UINT NumberOfPackets ); VOID EthFilterDprIndicateReceive( IN PETH_FILTER Filter, IN NDIS_HANDLE MacReceiveContext, IN PCHAR Address, IN PVOID HeaderBuffer, IN UINT HeaderBufferSize, IN PVOID LookaheadBuffer, IN UINT LookaheadBufferSize, IN UINT PacketSize ); VOID EthFilterDprIndicateReceiveComplete( IN PETH_FILTER Filter ); // UINT // ethNumberOfGlobalAddresses( // IN PETH_FILTER Filter // ); #define ethNumberOfGlobalAddresses(_Filter) (_Filter)->NumAddresses // // FddiFilterxxxx // BOOLEAN FddiCreateFilter( IN UINT MaximumMulticastLongAddresses, IN UINT MaximumMulticastShortAddresses, IN PUCHAR AdapterLongAddress, IN PUCHAR AdapterShortAddress, OUT PFDDI_FILTER * Filter ); VOID FddiDeleteFilter( IN PFDDI_FILTER Filter ); NDIS_STATUS FddiDeleteFilterOpenAdapter( IN PFDDI_FILTER Filter, IN NDIS_HANDLE NdisFilterHandle ); NDIS_STATUS FddiChangeFilterLongAddresses( IN PFDDI_FILTER Filter, IN NDIS_HANDLE NdisFilterHandle, IN UINT AddressCount, IN CHAR Addresses[][FDDI_LENGTH_OF_LONG_ADDRESS], IN BOOLEAN Set ); NDIS_STATUS FddiChangeFilterShortAddresses( IN PFDDI_FILTER Filter, IN NDIS_HANDLE NdisFilterHandle, IN UINT AddressCount, IN CHAR Addresses[][FDDI_LENGTH_OF_SHORT_ADDRESS], IN BOOLEAN Set ); BOOLEAN FddiShouldAddressLoopBack( IN PFDDI_FILTER Filter, IN CHAR Address[], IN UINT LengthOfAddress ); UINT FddiNumberOfOpenFilterLongAddresses( IN PFDDI_FILTER Filter, IN NDIS_HANDLE NdisFilterHandle ); UINT FddiNumberOfOpenFilterShortAddresses( IN PFDDI_FILTER Filter, IN NDIS_HANDLE NdisFilterHandle ); VOID FddiQueryGlobalFilterLongAddresses( OUT PNDIS_STATUS Status, IN PFDDI_FILTER Filter, IN UINT SizeOfArray, OUT PUINT NumberOfAddresses, IN OUT CHAR AddressArray[][FDDI_LENGTH_OF_LONG_ADDRESS] ); VOID FddiQueryGlobalFilterShortAddresses( OUT PNDIS_STATUS Status, IN PFDDI_FILTER Filter, IN UINT SizeOfArray, OUT PUINT NumberOfAddresses, IN OUT CHAR AddressArray[][FDDI_LENGTH_OF_SHORT_ADDRESS] ); VOID FddiQueryOpenFilterLongAddresses( OUT PNDIS_STATUS Status, IN PFDDI_FILTER Filter, IN NDIS_HANDLE NdisFilterHandle, IN UINT SizeOfArray, OUT PUINT NumberOfAddresses, IN OUT CHAR AddressArray[][FDDI_LENGTH_OF_LONG_ADDRESS] ); VOID FddiQueryOpenFilterShortAddresses( OUT PNDIS_STATUS Status, IN PFDDI_FILTER Filter, IN NDIS_HANDLE NdisFilterHandle, IN UINT SizeOfArray, OUT PUINT NumberOfAddresses, IN OUT CHAR AddressArray[][FDDI_LENGTH_OF_SHORT_ADDRESS] ); VOID FddiFilterIndicateReceive( IN PFDDI_FILTER Filter, IN NDIS_HANDLE MacReceiveContext, IN PCHAR Address, IN UINT AddressLength, IN PVOID HeaderBuffer, IN UINT HeaderBufferSize, IN PVOID LookaheadBuffer, IN UINT LookaheadBufferSize, IN UINT PacketSize ); VOID FddiFilterIndicateReceiveComplete( IN PFDDI_FILTER Filter ); BOOLEAN FASTCALL fddiFindMulticastLongAddress( IN UINT NumberOfAddresses, IN CHAR AddressArray[][FDDI_LENGTH_OF_LONG_ADDRESS], IN CHAR MulticastAddress[FDDI_LENGTH_OF_LONG_ADDRESS] ); BOOLEAN FASTCALL fddiFindMulticastShortAddress( IN UINT NumberOfAddresses, IN CHAR AddressArray[][FDDI_LENGTH_OF_SHORT_ADDRESS], IN CHAR MulticastAddress[FDDI_LENGTH_OF_SHORT_ADDRESS] ); VOID fddiCompleteChangeFilterLongAddresses( IN PFDDI_FILTER Filter, IN NDIS_STATUS Status ); VOID fddiCompleteChangeFilterShortAddresses( IN PFDDI_FILTER Filter, IN NDIS_STATUS Status ); VOID FddiFilterDprIndicateReceive( IN PFDDI_FILTER Filter, IN NDIS_HANDLE MacReceiveContext, IN PCHAR Address, IN UINT AddressLength, IN PVOID HeaderBuffer, IN UINT HeaderBufferSize, IN PVOID LookaheadBuffer, IN UINT LookaheadBufferSize, IN UINT PacketSize ); VOID FddiFilterDprIndicateReceiveComplete( IN PFDDI_FILTER Filter ); VOID fddiFilterDprIndicateReceivePacket( IN NDIS_HANDLE MiniportHandle, IN PPNDIS_PACKET ReceivedPackets, IN UINT NumberOfPackets ); // UINT // fddiNumberOfShortGlobalAddresses( // IN PFDDI_FILTER Filter // ); #define fddiNumberOfShortGlobalAddresses(_Filter) (_Filter)->NumShortAddresses // UINT // fddiNumberOfLongGlobalAddresses( // IN PFDDI_FILTER Filter // ); #define fddiNumberOfLongGlobalAddresses(_Filter) (_Filter)->NumLongAddresses // // TrFilterxxx // BOOLEAN TrCreateFilter( IN PUCHAR AdapterAddress, OUT PTR_FILTER * Filter ); VOID TrDeleteFilter( IN PTR_FILTER Filter ); NDIS_STATUS TrDeleteFilterOpenAdapter( IN PTR_FILTER Filter, IN NDIS_HANDLE NdisFilterHandle ); NDIS_STATUS TrChangeFunctionalAddress( IN PTR_FILTER Filter, IN NDIS_HANDLE NdisFilterHandle, IN CHAR FunctionalAddressArray[TR_LENGTH_OF_FUNCTIONAL], IN BOOLEAN Set ); NDIS_STATUS TrChangeGroupAddress( IN PTR_FILTER Filter, IN NDIS_HANDLE NdisFilterHandle, IN CHAR GroupAddressArray[TR_LENGTH_OF_FUNCTIONAL], IN BOOLEAN Set ); BOOLEAN TrShouldAddressLoopBack( IN PTR_FILTER Filter, IN CHAR DestinationAddress[TR_LENGTH_OF_ADDRESS], IN CHAR SourceAddress[TR_LENGTH_OF_ADDRESS] ); VOID TrFilterIndicateReceive( IN PTR_FILTER Filter, IN NDIS_HANDLE MacReceiveContext, IN PVOID HeaderBuffer, IN UINT HeaderBufferSize, IN PVOID LookaheadBuffer, IN UINT LookaheadBufferSize, IN UINT PacketSize ); VOID TrFilterIndicateReceiveComplete( IN PTR_FILTER Filter ); VOID trUndoChangeFunctionalAddress( IN OUT PTR_FILTER Filter, IN PTR_BINDING_INFO Binding ); VOID trUndoChangeGroupAddress( IN OUT PTR_FILTER Filter, IN PTR_BINDING_INFO Binding ); VOID trCompleteChangeGroupAddress( IN OUT PTR_FILTER Filter, IN PTR_BINDING_INFO Binding ); VOID TrFilterDprIndicateReceive( IN PTR_FILTER Filter, IN NDIS_HANDLE MacReceiveContext, IN PVOID HeaderBuffer, IN UINT HeaderBufferSize, IN PVOID LookaheadBuffer, IN UINT LookaheadBufferSize, IN UINT PacketSize ); VOID TrFilterDprIndicateReceiveComplete( IN PTR_FILTER Filter ); VOID trFilterDprIndicateReceivePacket( IN NDIS_HANDLE MiniportHandle, IN PPNDIS_PACKET ReceivedPackets, IN UINT NumberOfPackets ); // // ArcFilterxxx // #if ARCNET VOID ndisMArcCopyFromBufferToPacket( IN PCHAR Buffer, IN UINT BytesToCopy, IN PNDIS_PACKET Packet, IN UINT Offset, OUT PUINT BytesCopied ); BOOLEAN FASTCALL ndisMArcnetSendLoopback( IN PNDIS_MINIPORT_BLOCK Miniport, IN PNDIS_PACKET Packet ); NDIS_STATUS ndisMBuildArcnetHeader( PNDIS_MINIPORT_BLOCK Miniport, PNDIS_OPEN_BLOCK Open, PNDIS_PACKET Packet ); VOID ndisMFreeArcnetHeader( IN PNDIS_MINIPORT_BLOCK Miniport, IN PNDIS_PACKET Packet, IN PNDIS_OPEN_BLOCK Open ); VOID ArcDeleteFilter( IN PARC_FILTER Filter ); NDIS_STATUS ndisMArcTransferData( IN NDIS_HANDLE NdisBindingHandle, IN NDIS_HANDLE MacReceiveContext, IN UINT ByteOffset, IN UINT BytesToTransfer, IN OUT PNDIS_PACKET Packet, OUT PUINT BytesTransferred ); VOID ndisMArcIndicateEthEncapsulatedReceive( IN PNDIS_MINIPORT_BLOCK Miniport, IN PVOID HeaderBuffer, IN PVOID DataBuffer, IN UINT Length ); VOID arcUndoFilterAdjust( IN PARC_FILTER Filter, IN PARC_BINDING_INFO Binding ); NDIS_STATUS ArcConvertOidListToEthernet( IN PNDIS_OID OidList, IN PULONG NumberOfOids ); NDIS_STATUS ArcAllocateBuffers( IN PARC_FILTER Filter ); NDIS_STATUS ArcAllocatePackets( IN PARC_FILTER Filter ); VOID ArcDiscardPacketBuffers( IN PARC_FILTER Filter, IN PARC_PACKET Packet ); VOID ArcDestroyPacket( IN PARC_FILTER Filter, IN PARC_PACKET Packet ); BOOLEAN ArcConvertToNdisPacket( IN PARC_FILTER Filter, IN PARC_PACKET Packet, IN BOOLEAN ConvertWholePacket ); #endif // // WORK ITEM ROUTINES. // VOID FASTCALL ndisMDeQueueWorkItem( IN PNDIS_MINIPORT_BLOCK Miniport, IN NDIS_WORK_ITEM_TYPE WorkItemType, OUT PVOID * WorkItemContext OPTIONAL, OUT PVOID * WorkItemHandler OPTIONAL ); NDIS_STATUS FASTCALL ndisMQueueWorkItem( IN PNDIS_MINIPORT_BLOCK Miniport, IN NDIS_WORK_ITEM_TYPE WorkItemType, OUT PVOID WorkItemContext ); NDIS_STATUS FASTCALL ndisMQueueNewWorkItem( IN PNDIS_MINIPORT_BLOCK Miniport, IN NDIS_WORK_ITEM_TYPE WorkItemType, OUT PVOID WorkItemContext, IN PVOID WorkItemHandler OPTIONAL ); VOID FASTCALL ndisIMDeQueueWorkItem( IN PNDIS_MINIPORT_BLOCK Miniport, IN NDIS_WORK_ITEM_TYPE WorkItemType, OUT PVOID WorkItemContext ); // // SEND HANDLERS // // BOOLEAN FASTCALL ndisMStartSendPackets( IN PNDIS_MINIPORT_BLOCK Miniport ); BOOLEAN FASTCALL ndisMStartSends( IN PNDIS_MINIPORT_BLOCK Miniport ); BOOLEAN FASTCALL ndisMStartWanSends( IN PNDIS_MINIPORT_BLOCK Miniport ); #undef NdisMSendResourcesAvailable VOID NdisMSendResourcesAvailable( IN NDIS_HANDLE MiniportAdapterHandle ); #undef NdisMSendComplete VOID NdisMSendComplete( IN NDIS_HANDLE MiniportAdapterHandle, IN PNDIS_PACKET Packet, IN NDIS_STATUS Status ); VOID ndisMSendCompleteX( IN NDIS_HANDLE MiniportAdapterHandle, IN PNDIS_PACKET Packet, IN NDIS_STATUS Status ); #undef NdisMWanSendComplete VOID NdisMWanSendComplete( IN NDIS_HANDLE MiniportAdapterHandle, IN PNDIS_WAN_PACKET Packet, IN NDIS_STATUS Status ); VOID ndisMSendPackets( IN NDIS_HANDLE NdisBindingHandle, IN PPNDIS_PACKET PacketArray, IN UINT NumberOfPackets ); VOID ndisMSendPacketsX( IN NDIS_HANDLE NdisBindingHandle, IN PPNDIS_PACKET PacketArray, IN UINT NumberOfPackets ); NDIS_STATUS ndisMSend( IN NDIS_HANDLE NdisBindingHandle, IN PNDIS_PACKET Packet ); NDIS_STATUS ndisMSendX( IN NDIS_HANDLE NdisBindingHandle, IN PNDIS_PACKET Packet ); NDIS_STATUS ndisMCoSendPackets( IN NDIS_HANDLE NdisVcHandle, IN PPNDIS_PACKET PacketArray, IN UINT NumberOfPackets ); NDIS_STATUS ndisMRejectSend( IN NDIS_HANDLE NdisBindingHandle, IN PNDIS_PACKET Packet ); VOID ndisMRejectSendPackets( IN NDIS_HANDLE NdisBindingHandle, IN PPNDIS_PACKET Packets, IN UINT NumberOfPackets ); VOID FASTCALL ndisMRestoreOpenHandlers( IN PNDIS_MINIPORT_BLOCK Miniport, IN UCHAR Flags ); VOID FASTCALL ndisMSwapOpenHandlers( IN PNDIS_MINIPORT_BLOCK Miniport, IN NDIS_STATUS Status, IN UCHAR Flags ); NTSTATUS ndisPassIrpDownTheStack( IN PIRP pIrp, IN PDEVICE_OBJECT pNextDeviceObject ); // // Co-Ndis prototypes // VOID ndisNotifyAfRegistration( IN struct _NDIS_AF_NOTIFY * AfNotify ); NDIS_STATUS ndisCreateNotifyQueue( IN PNDIS_MINIPORT_BLOCK Miniport, IN PNDIS_OPEN_BLOCK Open OPTIONAL, IN PCO_ADDRESS_FAMILY AddressFamily OPTIONAL, IN PNDIS_AF_NOTIFY * AfNotify ); BOOLEAN FASTCALL ndisReferenceAf( IN PNDIS_CO_AF_BLOCK AfBlock ); VOID FASTCALL ndisDereferenceAf( IN PNDIS_CO_AF_BLOCK AfBlock ); BOOLEAN FASTCALL ndisReferenceSap( IN PNDIS_CO_SAP_BLOCK SapBlock ); VOID FASTCALL ndisDereferenceSap( IN PNDIS_CO_SAP_BLOCK SapBlock ); BOOLEAN FASTCALL ndisReferenceVcPtr( IN PNDIS_CO_VC_PTR_BLOCK VcPtr ); VOID FASTCALL ndisDereferenceVcPtr( IN PNDIS_CO_VC_PTR_BLOCK VcPtr ); VOID FASTCALL ndisMCoFreeResources( PNDIS_OPEN_BLOCK Open ); // // Fake handlers // NDIS_STATUS ndisMFakeWanSend( IN NDIS_HANDLE NdisBindingHandle, IN NDIS_HANDLE NdisLinkHandle, IN PVOID Packet ); NDIS_STATUS ndisMFakeSend( IN NDIS_HANDLE NdisBindingHandle, IN PNDIS_PACKET Packet ); VOID ndisMFakeSendPackets( IN NDIS_HANDLE NdisBindingHandle, IN PPNDIS_PACKET PacketArray, IN UINT NumberOfPackets ); NDIS_STATUS ndisMFakeReset( IN NDIS_HANDLE NdisBindingHandle ); NDIS_STATUS ndisMFakeRequest( IN NDIS_HANDLE NdisBindingHandle, IN PNDIS_REQUEST NdisRequest ); // // POWER MANAGEMENT ROUTINES // NTSTATUS FASTCALL ndisQueryPowerCapabilities( IN PNDIS_MINIPORT_BLOCK Miniport ); VOID ndisMediaDisconnectWorker( IN PPOWER_WORK_ITEM pWorkItem, IN PVOID Context ); NTSTATUS ndisMediaDisconnectComplete( IN PDEVICE_OBJECT pdo, IN UCHAR MinorFunction, IN POWER_STATE PowerState, IN PVOID Context, IN PIO_STATUS_BLOCK IoStatus ); VOID ndisMediaDisconnectTimeout( IN PVOID SystemSpecific1, IN PVOID Context, IN PVOID SystemSpecific2, IN PVOID SystemSpecific3 ); NTSTATUS ndisWaitWakeComplete( IN PDEVICE_OBJECT pdo, IN UCHAR MinorFunction, IN POWER_STATE PowerState, IN PVOID Context, IN PIO_STATUS_BLOCK IoStatus ); NTSTATUS ndisQueryPowerComplete( IN PDEVICE_OBJECT pdo, IN PIRP pirp, IN PVOID Context ); NTSTATUS ndisMPowerPolicy( IN PNDIS_MINIPORT_BLOCK Miniport, IN SYSTEM_POWER_STATE SystemState, IN PDEVICE_POWER_STATE pDeviceState, IN BOOLEAN fIsQuery ); NTSTATUS ndisQueryPower( IN PIRP pirp, IN PIO_STACK_LOCATION pirpSp, IN PNDIS_MINIPORT_BLOCK Miniport ); VOID FASTCALL ndisPmHaltMiniport( IN PNDIS_MINIPORT_BLOCK Miniport ); NDIS_STATUS ndisPmInitializeMiniport( IN PNDIS_MINIPORT_BLOCK Miniport ); NDIS_STATUS ndisQuerySetMiniportDeviceState( IN PNDIS_MINIPORT_BLOCK Miniport, IN DEVICE_POWER_STATE DeviceState, IN NDIS_OID Oid, IN BOOLEAN fSet ); NTSTATUS ndisSetSystemPowerComplete( IN PDEVICE_OBJECT pdo, IN UCHAR MinorFunction, IN POWER_STATE PowerState, IN PVOID Context, IN PIO_STATUS_BLOCK IoStatus ); VOID ndisDevicePowerOn( IN PPOWER_WORK_ITEM pWorkItem, IN PVOID pContext ); NTSTATUS ndisSetDevicePowerOnComplete( IN PDEVICE_OBJECT pdo, IN PIRP pirp, IN PVOID Context ); VOID ndisDevicePowerDown( IN PPOWER_WORK_ITEM pWorkItem, IN PVOID pContext ); NTSTATUS ndisSetDevicePowerDownComplete( IN PDEVICE_OBJECT pdo, IN PIRP pirp, IN PVOID Context ); NTSTATUS ndisSetPower( IN PIRP pirp, IN PIO_STACK_LOCATION pirpSp, IN PNDIS_MINIPORT_BLOCK Miniport ); NTSTATUS ndisPowerDispatch( IN PDEVICE_OBJECT pdo, IN PIRP pirp ); BOOLEAN FASTCALL ndisQueueOpenOnMiniport( IN PNDIS_MINIPORT_BLOCK Miniport, IN PNDIS_OPEN_BLOCK MiniportOpen ); NDIS_STATUS ndisQueueBindWorkitem( IN PNDIS_MINIPORT_BLOCK Miniport ); VOID ndisQueuedCheckAdapterBindings( IN PNDIS_WORK_ITEM pWorkItem, IN PVOID Context ); BOOLEAN ndisIsMiniportStarted( IN PNDIS_MINIPORT_BLOCK Miniport );