FAKE PROTOCOL NDIS hook 支持拨号的选项

本文介绍了一种NDIS钩子技术,用于支持NT4与WIN2K的拨号连接。通过定义特定的结构体和处理器,实现对不同操作系统的兼容,并详细展示了NDIS4.1和NDIS5版本中OPEN_BLOCK结构的不同。
NDIS 支持拨号的选项

几年前写 NDIS HOOK,为了支持 NT 4 与 WIN 2K 的拨号定义的一些
结构。当时采用的是 FAKE PROTOCOL 方式, 除了一些拨号声明外其他
都一样。

//Win2K dial network handler
WAN_RECEIVE_HANDLER                g_h2KWanReceive ;
RECEIVE_PACKET_HANDLER                g_h2KWanReceivePacket ;

//NT4 dial network handler
RECEIVE_HANDLER                        g_hNT4WanReceive ;
RECEIVE_PACKET_HANDLER                g_hNT4WanReceivePacket ;

//Tcp/ip handler for NT4 & Win2k
RECEIVE_PACKET_HANDLER                g_hReceivePacket ;
RECEIVE_HANDLER                        g_hReceive ;


// 兼容 NT 使用 NDIS 4.1

typedef struct _NDIS_OPEN_BLOCK41
{
        PNDIS_MAC_BLOCK                                MacHandle;                        // pointer to our MAC
        NDIS_HANDLE                                        MacBindingHandle;        // context when calling MacXX funcs
        PNDIS_ADAPTER_BLOCK                        AdapterHandle;                // pointer to our adapter
        PNDIS_PROTOCOL_BLOCK                ProtocolHandle;                // pointer to our protocol
        NDIS_HANDLE                                        ProtocolBindingContext;// context when calling ProtXX funcs
        PNDIS_OPEN_BLOCK                        AdapterNextOpen;        // used by adapter's OpenQueue
        PNDIS_OPEN_BLOCK                        ProtocolNextOpen;        // used by protocol's OpenQueue
        PFILE_OBJECT                                FileObject;                        // created by operating system
        BOOLEAN                                                Closing;                        // TRUE when removing this struct
        BOOLEAN                                                Unloading;                        // TRUE when processing unload
        NDIS_HANDLE                                        CloseRequestHandle;        // 0 indicates an internal close
        KSPIN_LOCK                                        SpinLock;                        // guards Closing
        PNDIS_OPEN_BLOCK                        NextGlobalOpen;

        //
        // These are optimizations for getting to MAC routines.        They are not
        // necessary, but are here to save a dereference through the MAC block.
        //

        SEND_HANDLER                                SendHandler;
        TRANSFER_DATA_HANDLER                TransferDataHandler;

        //
        // These are optimizations for getting to PROTOCOL routines.  They are not
        // necessary, but are here to save a dereference through the PROTOCOL block.
        //

        SEND_COMPLETE_HANDLER                SendCompleteHandler;
        TRANSFER_DATA_COMPLETE_HANDLER TransferDataCompleteHandler;
        RECEIVE_HANDLER                                ReceiveHandler;
        RECEIVE_COMPLETE_HANDLER        ReceiveCompleteHandler;

        //
        // Extentions to the OPEN_BLOCK since Product 1.
        //
        RECEIVE_HANDLER                                PostNt31ReceiveHandler;
        RECEIVE_COMPLETE_HANDLER        PostNt31ReceiveCompleteHandler;

        //
        // NDIS 4.0 extensions
        //
        RECEIVE_PACKET_HANDLER                ReceivePacketHandler;
        SEND_PACKETS_HANDLER                SendPacketsHandler;

        //
        // Needed for PnP
        //
        UNICODE_STRING                                AdapterName;                // Upcased name of the adapter we are bound to
}NDIS_OPEN_BLOCK41 ,*PNDIS_OPEN_BLOCK41;


// W2K 使用 NDIS 5

typedef struct _NDIS_OPEN_BLOCK5
{
        PNDIS_MAC_BLOCK                                MacHandle;                        // pointer to our MAC
        NDIS_HANDLE                                        MacBindingHandle;        // context when calling MacXX funcs
        PNDIS_ADAPTER_BLOCK                        AdapterHandle;                // pointer to our adapter
        PNDIS_PROTOCOL_BLOCK                ProtocolHandle;                // pointer to our protocol
        NDIS_HANDLE                                        ProtocolBindingContext;// context when calling ProtXX funcs
        PNDIS_OPEN_BLOCK                        AdapterNextOpen;        // used by adapter's OpenQueue
        PNDIS_OPEN_BLOCK                        ProtocolNextOpen;        // used by protocol's OpenQueue
        PNDIS_OPEN_BLOCK                        NextGlobalOpen;
        BOOLEAN                                                Closing;                        // TRUE when removing this struct
        BOOLEAN                                                Unbinding;                        // TRUE when starting to unbind the adapter
        BOOLEAN                                                NoProtRsvdOnRcvPkt;        // Reflect the protocol_options
        BOOLEAN                                                ProcessingOpens;
        PNDIS_STRING                                BindDeviceName;
        KSPIN_LOCK                                        SpinLock;                        // guards Closing
        PNDIS_STRING                                RootDeviceName;

        //
        // These are optimizations for getting to MAC routines.        They are not
        // necessary, but are here to save a dereference through the MAC block.
        //
        union
        {
                SEND_HANDLER                        SendHandler;
                WAN_SEND_HANDLER                WanSendHandler;
        };
        TRANSFER_DATA_HANDLER                TransferDataHandler;

        //
        // These are optimizations for getting to PROTOCOL routines.  They are not
        // necessary, but are here to save a dereference through the PROTOCOL block.
        //
        SEND_COMPLETE_HANDLER                SendCompleteHandler;
        TRANSFER_DATA_COMPLETE_HANDLER TransferDataCompleteHandler;
        RECEIVE_HANDLER                                ReceiveHandler;
        RECEIVE_COMPLETE_HANDLER        ReceiveCompleteHandler;

        //
        // Extentions to the OPEN_BLOCK since Product 1.
        //
        union
        {
                RECEIVE_HANDLER                        PostNt31ReceiveHandler;
                WAN_RECEIVE_HANDLER                WanReceiveHandler;
        };
        RECEIVE_COMPLETE_HANDLER        PostNt31ReceiveCompleteHandler;

        //
        // NDIS 4.0 extensions
        //
        RECEIVE_PACKET_HANDLER                ReceivePacketHandler;
        SEND_PACKETS_HANDLER                SendPacketsHandler;

        //
        // More NDIS 3.0 Cached Handlers
        //
        RESET_HANDLER                                ResetHandler;
        REQUEST_HANDLER                                RequestHandler;
        RESET_COMPLETE_HANDLER                ResetCompleteHandler;
        STATUS_HANDLER                                 StatusHandler;
        STATUS_COMPLETE_HANDLER                StatusCompleteHandler;
        REQUEST_COMPLETE_HANDLER        RequestCompleteHandler;
}NDIS_OPEN_BLOCK5 ,*PNDIS_OPEN_BLOCK5;
【2025年10月最新优化算法】混沌增强领导者黏菌算法(Matlab代码实现)内容概要:本文档介绍了2025年10月最新提出的混沌增强领导者黏菌算法(Matlab代码实现),属于智能优化算法领域的一项前沿研究。该算法结合混沌机制与黏菌优化算法,通过引入领导者策略提升搜索效率和全局寻优能力,适用于复杂工程优化问题的求解。文档不仅提供完整的Matlab实现代码,还涵盖了算法原理、性能验证及与其他优化算法的对比分析,体现了较强的科研复现性和应用拓展性。此外,文中列举了大量相关科研方向和技术应用场景,展示其在微电网调度、路径规划、图像处理、信号分析、电力系统优化等多个领域的广泛应用潜力。; 适合人群:具备一定编程基础和优化理论知识,从事科研工作的研究生、博士生及高校教师,尤其是关注智能优化算法及其在工程领域应用的研发人员;熟悉Matlab编程环境者更佳。; 使用场景及目标:①用于解决复杂的连续空间优化问题,如函数优化、参数辨识、工程设计等;②作为新型元启发式算法的学习与教学案例;③支持高水平论文复现与算法改进创新,推动在微电网、无人机路径规划、电力系统等实际系统中的集成应用; 其他说明:资源包含完整Matlab代码和复现指导,建议结合具体应用场景进行调试与拓展,鼓励在此基础上开展算法融合与性能优化研究。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值