FAKE PROTOCOL NDIS hook 支持拨号的选项

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;
内容概要:本文详细介绍了如何使用Matlab对地表水源热泵系统进行建模,并采用粒子群算法来优化每小时的制冷量和制热量。首先,文章解释了地表水源热泵的工作原理及其重要性,随后展示了如何设定基本参数并构建热泵机组的基础模型。接着,文章深入探讨了粒子群算法的具体实现步骤,包括参数设置、粒子初始化、适应度评估以及粒子位置和速度的更新规则。为了确保优化的有效性和实用性,文中还讨论了如何处理实际应用中的约束条件,如设备的最大能力和制冷/制热模式之间的互斥关系。此外,作者分享了一些实用技巧,例如引入混合优化方法以加快收敛速度,以及在目标函数中加入额外的惩罚项来减少不必要的模式切换。最终,通过对优化结果的可视化分析,验证了所提出的方法能够显著降低能耗并提高系统的运行效率。 适用人群:从事暖通空调系统设计、优化及相关领域的工程师和技术人员,尤其是那些希望深入了解地表水源热泵系统特性和优化方法的专业人士。 使用场景及目标:适用于需要对地表水源热泵系统进行精确建模和优化的情景,旨在找到既满足建筑负荷需求又能使机组运行在最高效率点的制冷/制热量组合。主要目标是在保证室内舒适度的前提下,最大限度地节约能源并延长设备使用寿命。 其他说明:文中提供的Matlab代码片段可以帮助读者更好地理解和复现整个建模和优化过程。同时,作者强调了在实际工程项目中灵活调整相关参数的重要性,以便获得更好的优化效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值