windows编程中,用createfile打开未被初始化的磁盘时,总是返回无效的句柄怎么办

windows编程中,用createfile打开未被初始化的磁盘时,总是返回无效的句柄怎么办

本文目录

  • windows编程中,用createfile打开未被初始化的磁盘时,总是返回无效的句柄怎么办
  • c语言createfile函数用法
  • createfile 函数怎么打开txt文件
  • CreateFile 读写逻辑盘出错,物理盘没有问题
  • createfile失败;代码3.系统找不到指定的路径
  • CreateFile 函数打开设备失败
  • 把光盘里面的文件安装电脑里,显示createfile失败代码1392是什么意思
  • 电脑为什么安装软件的时候总是提示(CreateFile失败,代码5.拒绝访问)
  • createfile打开串口失败,求解答,该如何处理
  • 为什么我用CreateFile打开串口失败

windows编程中,用createfile打开未被初始化的磁盘时,总是返回无效的句柄怎么办


87是参数错误。你检查一下createfile的参数是否有问题。GENERIC_WRITE是写操作,一个未初始化的磁盘是否可写?还有共享属性中应该是FILE_SHARE_READ | FILE_SHARE_WRITE,你写错了一个。还有这种最好提升权限。或者直接要求用管理员身份才能运行

c语言createfile函数用法


1、CreateFile 是一个多功能的函数,可打开或创建以下对象,并返回可访问的句柄:控制台,通信资源,目录(只读打开),磁盘驱动器,文件,邮槽,管道。

2、例程:

#include 《windows.h》
int main()
{
    HANDLE hf = CreateFile(TEXT(“C:\\testa.bin“), GENERIC_WRITE, 0,
        0, CREATE_ALWAYS, 0, 0);
    DWORD written;
    WriteFile(hf, “\x0f\xff\xff\xff\xff\xff“, 6, &written, 0);
    CloseHandle(hf);
    hf = CreateFile(TEXT(“c:\\testb.bin“), GENERIC_WRITE, 0,
        0, OPEN_ALWAYS, 0, 0);
    SetFilePointer(hf, 0, 0, FILE_END);
    WriteFile(hf, “\x0f\xff\xff\xff\xff\xff“, 6, &written, 0);
    CloseHandle(hf);
    return 0;
}

createfile 函数怎么打开txt文件


HANDLE hFile;
DWORD szBuffer;
const char szText = “QQ:610847323“;
char Length;
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,
LPSTR lpCmdLine,int nShowCmd)
{
hFile=CreateFile(“D:\\123.txt“,GENERIC_WRITE,FILE_SHARE_READ,NULL,
OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);//先创建一个空的文件
Length=lstrlen(szText);//计算自己要写入的长度
WriteFile(hFile,szText,Length,szBuffer,NULL);//写入刚才创建的空文件中
return 0;

CreateFile 读写逻辑盘出错,物理盘没有问题


你的打开权限有问题
你只指定了FILE_SHARE_READ,这样Windows会认为你不允许其他程序进行写入、删除操作,但是此时有应用程序在占用了设备,所以CreateFile会失败。
正确做法是:
hDevice = CreateFile(“\\\\.\\E:“, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, NULL,OPEN_EXISTING, 0, NULL);
经过测试,不会报错

createfile失败;代码3.系统找不到指定的路径


应该是文件写入权限设置错误引起的,用系统管理员账号登入系统后安装试试,或在系统管理员权限下找到你项目的文件夹,右键选择“属性“,然后点击“完全“选项卡,点击“添加“,“高级“,“立即查找“,找到平时登入所用帐户,然后“确定“,最后再为登入所用帐户户勾选“写入权限“,

CreateFile 函数打开设备失败


那是因为你创建的是设备名称,这个只能在ring0层访问。
要想在ring3层访问,需要创建ring3层可以访问的符号链接与设备关联
RtlInitUnicodeString(&ustrSymLink,L“\\??\\Jow_SymLink“);
IoCreateSymbolicLink(&ustrSymLink,&uniNtNameString);
ring3层访问的时候CreateFile(“\\\\.\\Jow_SymLink“,........)

把光盘里面的文件安装到电脑里,显示createfile失败代码1392是什么意思


应该是文件写入权限设置错误引起的,用系统管理员账号登入系统后安装试试,或在系统管理员权限下找到你项目的文件夹,右键选择“属性“,然后点击“完全“选项卡,点击“添加“,“高级“,“立即查找“,找到平时登入所用帐户,然后“确定“,最后再为登入所用帐户户勾选“写入权限“,

电脑为什么安装软件的时候总是提示(CreateFile失败,代码5.拒绝访问)


应该是文件写入权限设置
错误
引起的,用
系统管理员
账号登入系统后安装试试,或在系统管理员权限下找到你项目的文件夹,右键选择“属性“,然后点击“完全“选项卡,点击“添加“,“高级“,“立即查找“,找到平时登入所用帐户,然后“确定“,最后再为登入所用帐户户勾选“写入权限“,

createfile打开串口失败,求解答,该如何处理


产生这种奇怪现象的原因是:微软预定义的标准设备中含有“COM1”-“COM9”。所以,“COM1”-“COM9”作为文件名传递给函数时操作系统会自动地将之解析为相应的设备。但对于COM10及以上的串口,“COM10”之类的文件名系统只视之为一般意义上的文件,而非串行设备。
为了增加对COM10及以上串行端口的支持,微软规定,如果要访问这样的设备,应使用这样的文件名(以COM10为例):\\.COM10
所以,对于COM10及以上的串口,CreateFile()的调用样式应调整如下:
CreateFile(
“\\\\.\\COM10“, // 定义串口名
fdwAccess, // 存取模式(读写)
0, // 共享模式:必须设置为0,表示设备独占使用
NULL, // 保密性
OPEN_EXISTING, // 必须设置为OPEN_EXISTING
0, // 文件属性,如果是异步模式,可设置为
NULL // 模版,串口设备必须设置为NULL
);
应该用反斜杠\。

为什么我用CreateFile打开串口失败


要么串口不存在,要么串口已经被其他程序打开了。
你先检查一下自己要打开的串口是否存在,如果你是windows系统,就看设备管理器,
如果你是linux系统就查看/dev下有没有你的串口设备。
如果串口是在的,那么可能有其他程序已经打开它了,正在使用,简单的方法就是重启一下电脑,串口就会回到未打开的状态。

免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部