• Windows内核编程之:返回状态值


    /************************************************************************
    * 返回状态值
    *DDK大部分返回值类型是NTSTATUS类型。查看DDK.h文件,可以看到:
    *************************************************************************/

    typedef LONG NTSTATUS;

    //NTSTATUS就是一个32位的整数,其每位有着不同的含义

    在执行为内核函数后,应该查看该函数的返回状态
    如果状态码高位为0,无论其它位置是否设置,该状态码代表成功
    绝对不能用状态代码与0比较来判断操作是否成功
    而应该使用NT_SUCCESS宏,其用法:

    NTSTATUS status = Foo(...);
    if(NT_SUCCESS(status))
    {
    //函数执行成功
    }

    /*常用NTSTATUS状态返回值*/

    //分类                                    描述
    STATUS_SUCCESS                            //函数执行成功
    STATUS_UNSUCCESSFUL                        //函数执行不成功
    STATUS_NOT_IMPLEMENTED                    //函数未被实现
    STATUS_INVALID_INFO_CLASS                //输入参数是无效的类别
    STATUS_INFO_LENGTH_MISMATCH                //输入参数长度不匹配
    STATUS_ACCESS_VIOLATION                    //不允许访问
    STATUS_IN_PAGE_ERROR                    //发生页故障
    STATUS_INVALID_HANDLE                    //输入是无效的句柄
    STATUS_INVALID_PARAMETER                //输入是无效的参数
    STATUS_NO_SUCH_DEVICE                    //指定的设备不存在
    STATUS_NO_SUCH_FILE                        //指定的文件不存在
    STATUS_INVALID_DEVICE_REQUEST            //无效的设备请求
    STATUS_END_OF_FILE                        //文件已到结尾
    STATUS_INVALID_SYSTEM_SERVICE            //无效的系统调用
    STATUS_ACCESS_DENIED                    //访问被拒绝
    STATUS_BUFFER_TOO_SMALL                    //输入的缓冲区过小
    STATUS_OBJECT_TYPE_MISMATCH                //输入的对象类型不匹配
    STATUS_OBJECT_NAME_INVALID                //输入的对象名无效
    STATUS_OBJECT_NAME_NOT_FOUND            //输入的对象没有找到
    STATUS_PORT_DISCONNECTED                //无效连接的端口没有被连接
    STATUS_OBJECT_PATH_INVALID                //输入的对象路劲无效
  • 相关阅读:
    2.4 学习总计 之 自己实现底部导航
    2.3 学习总结 之 分页查询
    2.2 学习总结 之 servlet 的两次抽取
    Rocket
    Rocket
    Rocket
    Rocket
    Rocket
    Rocket
    Rocket
  • 原文地址:https://www.cnblogs.com/qintangtao/p/3020191.html
Copyright © 2020-2023  润新知