WINDOWS内存管理 - 返回状态值

        DDK大部分函数的返回值类型是NTSTATUS类型。查看DDK.h文件,可以看到

typedef LONG NTSTATUS;

NTSTATUS的定义和LONG等价。为了函数的形式统一,所有函数的返回值都是NTSTATUS类型。NTSTATUS就是一个32位的整数,其每位有着不同的含义,如下图:


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

status = FOO(...)
IF(NT_SUCCESS(status))
{
    // 该函数执行成功
}

        DDK定义了大量的状态的返回值,都是形如STATUS_XX定义的宏,如表1所示:

表1常用NTSTATUS状态返回值
分类描述
NTSTATUS_SUCCESS函数执行成功
NTSTATUS_UNSUCCESSFUL函数执行不成功
NTSTATUS_NOT_IMPLEMENTED函数未被实现
NTSTATUS_INVALID_INFO_CLASS输入参数是无效的类别
NTSTATUS_INFO_LENGTH_MISMATCH输入参数长度不匹配
NTSTATUS_ACCESS_VIOLATION不允许访问
NTSTATUS_IN_PAGE_ERROR发生页故障
NTSTATUS_INVALID_HANDLE输入是无效的句柄
NTSTATUS_INVALID_PARAMETER输入是无效的参数
NTSTATUS_NO_SUCH_DEVICE指定的设备不存在
NTSTATUS_NO_SUCH_FILE指定的文件不存在
NTSTATUS_INVALID_DEVICE_REQUEST无效的设备请求
NTSTATUS_END_OF_FILE文件已到结尾
NTSTATUS_INVALID_SYSTEM_SERVICE无效的系统调用
NTSTATUS_ACCESS_DENIED访问被拒绝
NTSTATUS_BUFFER_TOO_SMALL输入的缓冲区过小
NTSTATUS_OBJECT_TYPE_MISMATCH输入的对象类型不匹配
NTSTATUS_OBJECT_NAME_INVALID输入的对象名无效
NTSTATUS_OBJECT_NAME_NOT_FOUND输入的对象没有找到
NTSTATUS_PORT_DISCONNECTED需要链接的端口没有被连接
NTSTATUS_OBJECT_PATH_INVALID输入的对象路径无效

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/504327.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【分类讨论】【割点】1568. 使陆地分离的最少天数

作者推荐 动态规划的时间复杂度优化 本文涉及知识点 分类讨论 割点 LeetCode1568. 使陆地分离的最少天数 给你一个大小为 m x n ,由若干 0 和 1 组成的二维网格 grid ,其中 1 表示陆地, 0 表示水。岛屿 由水平方向或竖直方向上相邻的 1 …

wayland(xdg_wm_base) + egl + opengles 使用 Assimp 加载3D model 最简实例(十三)

文章目录 前言一、3D model 文件介绍1. 3d model 介绍1.1 如何获取3d model 文件1.2 3d model 的文件格式1.3 obj模型数据格式2. 3d 立方体 model 实例——cube.obj二、Assimp 介绍1. Assimp 简介2.ubuntu 上安装libassimp3. 使用Assimp 解析 cube.obj 文件3.1 assimp_load_cub…

舟山群岛 “垃圾不落海”的“她力量”

2月28日下午,天气阴雨绵绵,浙江省舟山市岱山县长涂岛沿港边的一间平房内,渔嫂杨淑雯、杨淑清、庄亚芬正在认真梳理从渔船上、渔港街巷捡回来的一大堆饮料瓶。 分类、装袋、打包,记者发现,这间不大的仓库内&#xff0c…

JavaScript练手小技巧:一文看懂<script>标签的 ansyc 和 defer

<script>标签的 ansyc 和 defer 属性。只对外部加载 JS 文件有效。 <script src"js/app.js" async></script> <script src"js/app.js" defer></script> 普通加载 js&#xff08;同步加载&#xff09;&#xff1a;会打断 …

NCDA设计大赛获奖作品剖析:UI设计如何脱颖而出?

第十二届大赛简介 - 未来设计师全国高校数字艺术设计大赛&#xff08;NCDA&#xff09;开始啦&#xff01;视觉传达设计命题之一: ui 设计&#xff0c;你想知道的都在这里。为了让大家更好的参加这次比赛&#xff0c;本文特别为大家整理了以往NCDA大赛 UI 设计的优秀获奖作品&a…

STM32标准库——(14)I2C通信协议、MPU6050简介

1.I2C通信 I2C 通讯协议(Inter&#xff0d;Integrated Circuit)是由Phiilps公司开发的&#xff0c;由于它引脚少&#xff0c;硬件实现简单&#xff0c;可扩展性强&#xff0c; 不需要USART、CAN等通讯协议的外部收发设备&#xff0c;现在被广泛地使用在系统内多个集成电路(IC)间…

利用IP地址识别风险用户:保护网络安全的重要手段

随着互联网的发展和普及&#xff0c;网络安全问题日益突出&#xff0c;各种网络诈骗、恶意攻击等风险不断涌现&#xff0c;给个人和企业的财产安全和信息安全带来了严重威胁。在这样的背景下&#xff0c;利用IP地址识别风险用户成为了保护网络安全的重要手段之一。IP数据云探讨…

Pytest插件pytest-selenium-让自动化测试更简洁

在现代Web应用的开发中&#xff0c;自动化测试成为确保网站质量的重要手段之一。而Pytest插件 pytest-selenium 则为开发者提供了简单而强大的工具&#xff0c;以便于使用Python进行Web应用的自动化测试。本文将深入介绍 pytest-selenium 插件的基本用法和实际案例&#xff0c;…

搜索算法(算法竞赛、蓝桥杯)--DFS迭代加深

1、B站视频链接&#xff1a;B25 迭代加深 Addition Chains_哔哩哔哩_bilibili 题目链接&#xff1a;Addition Chains - 洛谷 #include <bits/stdc.h> using namespace std; int n,d;//d为搜索的深度 int a[10005];//存储加成的序列bool dfs(int u){//搜索第u层 if(ud)r…

QT实现机器视觉图片查看窗口

QT实现机器视觉常用图像查看器 在机器视觉行业中最常见的控件就是图像查看器了&#xff0c;使用QT实现其实也非常简单&#xff0c;在我出的项目【降龙&#xff1a;算法软件框架】和【重明&#xff1a;工业相机二次开发】中都有用到。可以说只要你要开发一个和机器视觉相关的软…

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的钢材表面缺陷检测系统(Python+PySide6界面+训练代码)

摘要&#xff1a;开发钢材表面缺陷检测系统对于保障制造质量和提高生产效率具有关键作用。本篇博客详细介绍了如何运用深度学习构建一个钢材表面缺陷检测系统&#xff0c;并提供了完整的实现代码。该系统基于强大的YOLOv8算法&#xff0c;并对比了YOLOv7、YOLOv6、YOLOv5&#…

ABAP - SALV教程 01- 开篇:打开SALV的三种方式之一

关于SALV&#xff0c;这里参考巨佬江正军的文章讲解&#xff0c;在做SAP开发的遇到困难和瓶颈的时候&#xff0c;每每读到巨佬的文章都会灵感爆发、醍醐灌顶。https://www.cnblogs.com/jiangzhengjun/p/4291387.html 博主由于是由JAVA转型的ABAP开发&#xff0c;刚接触ABAP的时…