gpt4 book ai didi

c - 如何读取 GetHandleInformation 函数中的标志

转载 作者:行者123 更新时间:2023-11-30 20:11:20 24 4
gpt4 key购买 nike

我在使用 GetHandleInformation 函数时遇到问题。下面是源码

#include <windows.h>
#include <stdio.h>

int main()
{
HANDLE hFile;
char Nazwa[]="C:\\testfile.txt";
BOOL test;
DWORD dFlags;

hFile=CreateFile(Nazwa,
GENERIC_WRITE,
FILE_SHARE_WRITE,
NULL,
CREATE_ALWAYS,
FILE_ATTRIBUTE_NORMAL |FILE_ATTRIBUTE_ARCHIVE | SECURITY_IMPERSONATION,
NULL);
if(hFile==INVALID_HANDLE_VALUE)
printf("Function CreateFile return error: %d\n",GetLastError());

printf("File handle is OK\n");
test=GetHandleInformation(hFile,&dFlags);
//printf("%x\n",dFlags);
printf("The return value is: %d, error: %d\n",test,GetLastError());
CloseHandle(hFile);
DeleteFile(Nazwa);

return 0;
}

我尝试读取 dFlags 变量中的标志值,但仍然设置为 0。有人可以告诉我问题出在哪里吗?我尝试与 HANDLE_FLAG_INHERIT 或 HANDLE_FLAG_PROTECT_FROM_CLOSE 进行比较,但它不起作用。

最佳答案

对于dwFlags来说,零是一个完全有效的值。 。如果两者都不是HANDLE_FLAG_INHERIT也不HANDLE_FLAG_PROTECT_FROM_CLOSE设置后,标志将为 0。

发生的情况是 GetHandleInformation函数有两个参数:第一个是文件句柄,第二个是指向 DWORD 的指针。如果该函数成功,它将用标志填充第二个参数。就您而言,这将是您的 dwFlags多变的。如果函数失败,则 dwFlags 的值未定义。

函数的返回值是您可能尝试检查零或非零值的值。非零表示成功,而零 ( FALSE ) 表示失败。这是BOOL Win32 术语中的值。另请注意,您只能期望 GetLastError如果原始函数调用失败(即返回 FALSE ),则返回有意义的值。您不应该调用GetLastError如果原始函数调用成功(,返回非零值)!

关于c - 如何读取 GetHandleInformation 函数中的标志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40831917/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com