2301_76247106 2025-09-23 13:13 采纳率: 8%
浏览 10

windows samples demo ddproxy和inspect 运行咨询

最近在看微软的ddproxy和inspect例子,按照readme编译了下,测试了下发现驱动中classifyfn函数无法被触发,整体功能无法进行测试,有人了解是为什么吗

  • 写回答

5条回答 默认 最新

  • 阿里嘎多学长 2025-09-23 13:13
    关注

    阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程

    问题分析

    你最近在研究微软提供的ddproxy和inspect示例。按照README说明书编译了这些例子,但是当执行时,驱动中的classifyfn函数无法被触发,导致整个功能无法正常测试。你想知道是为什么。

    解决方案

    1. 检查classifyfn函数的注册: 确保classifyfn函数正确注册在Windows Driver Framework中。可以使用DeviceIoControl函数来测试是否函数被正确注册。

    2. 检查驱动的加载顺序: 确保你的驱动在系统启动时正确加载。可以使用设备管理器查看驱动是否已载入。

    3. 检查微软示例的README: 确保你按照README说明书正确编译并部署示例。

    4. 检查系统日志: 检查系统事件日志以查看是否有其他错误或者警告。

    核心代码

    // 检查classifyfn函数的注册
    NTSTATUS RegisterDeviceFunctions(PDRIVER_OBJECT pDriverObject)
    {
        NTSTATUS status;
        status = IoCreateDevice(pDriverObject, 0, NULL, FILE_DEVICE_UNKNOWN, 0, TRUE, &pDriverObject->DeviceObject);
        if (!NT_SUCCESS(status))
        {
            return status;
        }
    
        // 注册classifyfn函数
        status = IoRegisterMiscCallback(pDriverObject, MY_GUID_CLASSIFY_FN);
        if (!NT_SUCCESS(status))
        {
            IoDeleteDevice(pDriverObject->DeviceObject);
            return status;
        }
    
        return STATUS_SUCCESS;
    }
    
    // 检查驱动的加载顺序
    NTSTATUS DriverEntry(PDRIVER_OBJECT pDriverObject, PUNICODE_STRING pRegistryPath)
    {
        NTSTATUS status;
        status = RegisterDeviceFunctions(pDriverObject);
        if (!NT_SUCCESS(status))
        {
            return status;
        }
    
        // 设备管理器查看驱动是否已载入
        pDriverObject->DriverUnload = UnloadDevice;
        return STATUS_SUCCESS;
    }
    

    我希望这些信息能够帮助你解决问题。

    评论

报告相同问题?

问题事件

  • 创建了问题 9月23日