FAKE PROTOCOL NDIS hook 支持拨号的选项

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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;
内容概要:该论文聚焦于T2WI核磁共振图像超分辨率问题,提出了一种利用T1WI模态作为辅助信息的跨模态解决方案。其主要贡献包括:提出基于高频信息约束的网络框架,通过主干特征提取分支和高频结构先验建模分支结合Transformer模块和注意力机制有效重建高频细节;设计渐进式特征匹配融合框架,采用多阶段相似特征匹配算法提高匹配鲁棒性;引入模型量化技术降低推理资源需求。实验结果表明,该方法不仅提高了超分辨率性能,还保持了图像质量。 适合人群:从事医学图像处理、计算机视觉领域的研究人员和工程师,尤其是对核磁共振图像超分辨率感兴趣的学者和技术开发者。 使用场景及目标:①适用于需要提升T2WI核磁共振图像分辨率的应用场景;②目标是通过跨模态信息融合提高图像质量,解决传统单模态方法难以克服的高频细节丢失问题;③为临床诊断提供更高质量的影像资料,帮助医生更准确地识别病灶。 其他说明:论文不仅提供了详细的网络架构设计与实现代码,还深入探讨了跨模态噪声的本质、高频信息约束的实现方式以及渐进式特征匹配的具体过程。此外,作者还对模型进行了量化处理,使得该方法可以在资源受限环境下高效运行。阅读时应重点关注论文中提到的技术创新点及其背后的原理,理解如何通过跨模态信息融合提升图像重建效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值