首页 > 其他分享 >有趣的ReadFile函数第4个参数

有趣的ReadFile函数第4个参数

时间:2023-08-14 17:01:20浏览次数:39  
标签:函数 win7 ReadFile 参数 win10 此参数 有趣 NULL

最近使用ReadFile对文件进行异步读取时发现微软对于此接口的第4个参数有特别备注win7上此参数不能为空:

[out, optional] lpNumberOfBytesRead

指向使用同步 hFile 参数时接收读取的字节数的变量的指针。 ReadFile 将此值设置为零,然后再执行任何工作或错误检查。 如果这是一个异步操作,请对此参数使用 NULL ,以避免潜在的错误结果。

仅当 lpOverlapped 参数不为 NULL 时,此参数才可为 NULL。

Windows 7: 此参数不能为 NULL。

找来了win7和win10的kernelbase.dll对比了一下发现微软在win10上默默修复了此接口的一个bug,即win7上当调用NtReadFile失败后未判断此参数的有效性而直接对其进行了赋值操作。

win7如下所示:

win10如下:

 

标签:函数,win7,ReadFile,参数,win10,此参数,有趣,NULL
From: https://www.cnblogs.com/csstudy/p/17629146.html

相关文章

  • 无涯教程-Perl - scalar函数
    描述此函数强制EXPR的判断在标量context中进行,即使它通常在列表context中也可以使用。语法以下是此函数的简单语法-scalarEXPR返回值此函数返回标量。例以下是显示其基本用法的示例代码-#!/usr/bin/perl-w@a=(1,2,3,4);@b=(10,20,30,40);@c=(@a,@b)......
  • 6.0 Python 使用函数装饰器
    装饰器可以使函数执行前和执行后分别执行其他的附加功能,这种在代码运行期间动态增加功能的方式,称之为"装饰器"(Decorator),装饰器的功能非常强大,装饰器一般接受一个函数对象作为参数,以对其进行增强,相当于C++中的构造函数,与析构函数。装饰器本质上是一个python函数,它可以让其他函数......
  • 6.0 Python 使用函数装饰器
    装饰器可以使函数执行前和执行后分别执行其他的附加功能,这种在代码运行期间动态增加功能的方式,称之为"装饰器"(Decorator),装饰器的功能非常强大,装饰器一般接受一个函数对象作为参数,以对其进行增强,相当于C++中的构造函数,与析构函数。装饰器本质上是一个python函数,它可以让其他函......
  • SAP UI5 框架 Manifest.js 里 getObject 函数的实现解析
    我们在SAPUI5manifest.json文件里定义的配置信息,通过下图Manifest.js文件里的getObject函数返回给消费者。这是一个名为getObject的JavaScript函数,主要用于通过给定的路径访问对象的子成员。下面是这段代码的中文注释:/***通过给定路径访问一个对象的子成员的实......
  • 无涯教程-Perl - rmdir函数
    描述此函数删除EXPR指定的目录,如果省略,则删除$_。如果目录为空,则仅删除目录。语法以下是此函数的简单语法-rmdirEXPRrmdir返回值如果失败,此函数返回0,如果成功,则返回1。例以下是显示其基本用法的示例代码,在/tmp内创建一个目录testdir-#!/usr/bin/perl-wr......
  • C语言学习 函数
    一.函数的概念C语⾔中的函数就是⼀个完成某项特定的任务的⼀⼩段代码。在C语言中,我们常见的函数类型有两种:库函数和自定义类型函数。二.库函数#库函数1.标准库和头文件C语言标准中规定了C语言的各种语法规则,C语言并不提供库函数;ANSIC规定了一些常用的函数的标准,被称为标准库。C语......
  • 无涯教程-Perl - rindex函数
    描述此函数的操作类似于index,不同之处在于它返回STR中最后一次出现SUBSTR的位置。如果指定了POSITION,则返回该位置或该位置之前的最后一次出现。语法以下是此函数的简单语法-rindexSTR,SUBSTR,POSITIONrindexSTR,SUBSTR返回值该函数在失败时返回undef,否则返回......
  • 【Python&RS】GDAL库Warp函数介绍
    ​        GDAL(GeospatialDataAbstractionLibrary)是一个在X/MIT许可协议下的开源栅格空间数据转换库。它利用抽象数据模型来表达所支持的各种文件格式。它还有一系列命令行工具来进行数据转换和处理。 Python的GDAL库作为栅格数据的处理转换库,其支持几百种栅格数......
  • python 学习-函数-匹配替换等操作
    1.re.match匹配re.match(pattern,string)`:从字符串的开头匹配正则表达式,返回一个匹配对象。如果没有找到匹配的子串,返回`None`str='choice:['app1-ui','app2-ui']'#查找str是否以空格开头第一个有效字符是choice的的行,如果是打印okifre.match(r'\s+choice.*',str):......
  • 第11周项目1-函数版型号图(1)
    问题及代码:/**Copyright(c)2014,烟台大学计算机学院*Allrightsreserved.*文件名称:MADE33.cpp*作者:孙化龙*完成日期:2014年11月6日*版本号:v1.0**问题描述:补充程序*/#include<iostream>usingnamespacestd;voidprintstars(intm)//定义能输出一行m......