草庐IT

handle_buf

全部标签

C++ WinSock2 : WSA_INVALID_HANDLE on connect() call

美好的一天!我是一个在高级语言方面有一定经验的程序员,但这是我第一次深入研究低级语言的套接字代码,所以请多多包涵。我似乎在调用connect()时出错。在我的主要函数中,WSAGetLastError()打印出这是错误号6,根据MSDN是WSA_INVALID_HANDLE。这看起来很奇怪,因为在MSDNpagefortheconnect()function上没有详细说明该特定错误代码。(除非我要失明),而且我的谷歌搜索都没有结果我使用的是自定义socket_t结构,因为我的代码旨在(最终)跨平台。socket_connect()函数从主代码页调用。socket_t定义:typedef

c - 启动 Windows 驱动程序时出错 : The handle is invalid

我是一名Web开发人员,决定涉足内核模式开发。我安装了WDK8.1、VisualStudioProfessional2013,并设置了Windows7VM来调试和测试我的驱动程序。我从thistutorial开始我下载解决方案并构建驱动程序。我无法执行教程中描述的部署步骤,因此我尝试使用OSRDriverLoader安装驱动程序我能够注册驱动程序,但是当我尝试启动它时出现以下错误。C:\Windows\system32>sc启动KmfSmall[SC]启动服务失败6:句柄无效。这是驱动程序的代码:#include#includeDRIVER_INITIALIZEDriverEntry;

c++ - 在 CreateProcess 之后调用 GetModuleFileNameEx 时出现 ERROR_INVALID_HANDLE

成功调用CreateProcess后,我尝试使用GetModuleFileNameEx获取创建的进程的路径(lpApplicationName和lpCommandLine参数可以变化或为空,因此在这种情况下它们不可靠)。问题是GetModuleFileNameEx失败并出现错误6(ERROR_INVALID_HANDLE),从而使其缓冲区中包含无效数据。我无法理解原因,因为CreateProcess成功并且进程句柄应该已正确保存在pi.hProcess中。希望您能有所启发,在此先感谢您!编辑:更新:我注意到删除CREATE_SUSPENDED也可以解决此问题,但我需要设置该标志。我该怎

c++ - 将 32 位值转换为 HANDLE

我正在处理一个提供32位自定义句柄的组件,我想使用标准的WindowsHANDLE类型来包装它。在遗留组件中,我看到了以下两种转换方法的使用://valueis32-bitsautovalue=GetCustomHandle();HANDLEhA=HANDLE(value);HANDLEhB=(void*)(SIZE_T)value;hA和hB总是等价的吗?如果不是,在什么情况下不是?在这种情况下,我认为它们总是等价的,因为:函数式转换和类C转换之间没有区别。HANDLE等同于void*。void*和SIZE_T的大小在32位系统上为32位,在64位系统上为64位。谢谢。

windows - 是否存在函数 CreateFile 返回 INVALID_HANDLE_VALUE 而 GetLastError() 返回 ERROR_ALREADY_EXISTS 的情况

我在MSDN上搜索了一下HANDLEWINAPICreateFile(_In_LPCTSTRlpFileName,_In_DWORDdwDesiredAccess,_In_DWORDdwShareMode,_In_opt_LPSECURITY_ATTRIBUTESlpSecurityAttributes,_In_DWORDdwCreationDisposition,_In_DWORDdwFlagsAndAttributes,_In_opt_HANDLEhTemplateFile);如果dwCreationDisposition==CREATE_ALWAYS或OPEN_ALWAYS,它表

php - curl 窗口 : the provided file handle is not writable

我在执行curl请求时随机“无错误地挂起”。我正在尝试检测来源,因为Web服务器和php日志没有显示任何错误,所以我尝试启用CURLOT_STDERR。我有以下代码:$file='curl.txt';$curl=curl_init();$curl_log=fopen($file,'rw');var_export(is_writable($file));$url='http://www.google.com';curl_setopt_array($curl,array(CURLOPT_URL=>$url,CURLOPT_VERBOSE=>1,CURLOPT_STDERR=>$curl_l

string - 批处理 : Handle numbers above 2^32

我想在依赖于我的可用存储空间的批处理文件中执行操作,但它失败了(有趣的是,只是有时),因为可用空间超过2GB,使得变量无法设置。这是批处理文件:cd"C:\Users\Fabian\Desktop\ScreenRecordings\Auto"for/F"usebackqdelims==tokens=2"%%xin(`wmiclogicaldiskwhere"DeviceID='C:'"getFreeSpace/format:value`)do(setFreeSpace=%%x)if(%FreeSpace%)LSS(2499522027520)(for/F"delims="%%ain('

c++ - 为什么错误 1400 Invalid window handle?

#include#include#includeHWNDWindowHandle;HINSTANCEInstance;constwchar_tWindowClassName[]=L"TempProjcet";LRESULTCALLBACKWindowProc(HWND_windowHandle,UINT_msg,WPARAM_param,LPARAM_param1){switch(_msg){caseWM_PAINT:{PAINTSTRUCTps;HDChdc=BeginPaint(WindowHandle,&ps);FillRect(hdc,&ps.rcPaint,(HBRUSH)(

Windows 内核驱动程序 : Does the "HANDLE UniqueThread" in "CLIENT_ID CreatingThreadId" is the same during the process loading?

我正在尝试编写一个APCdll注入(inject)驱动程序,我找到了this示例并考虑根据我的需要对其进行修改。在我理解了代码之后,我想到了如何修改它(我的问题由此而来)。在code,作者使用了PsLookupThreadByThreadId接收指向目标进程的ETHREAD结构的引用指针。PsLookupThreadByThreadId(pSpi->Threads[0].ClientId.UniqueThread,&Thread)但要得到SYSTEM_THREAD_INFORMATION对于UniqueThreadhandle,他用过ZwQuerySystemInformation我想

windows - 是什么导致 WriteFile 返回错误 38 (ERROR_HANDLE_EOF)?

什么会导致WriteFile返回错误38(ERROR_HANDLE_EOF,已到达文件末尾)?本例中的"file"是一个邮槽。我的程序的工作方式是我有一个创建多个子进程的进程(作为Windows服务运行)。每个child都打开一个同名的邮槽,以便将状态信息发送回其parent。在我的小规模测试中,这工作正常,但我看到了当我有多个进程时的情况运行(如16)我收到此错误。下面的代码显示了我如何在子进程中打开和写入邮槽。可能是因为父级读取邮槽的速度不够快?有没有办法增加邮槽的容量,从而永远不会到达文件末尾?我真的不明白邮槽怎么会变满,只要因为有磁盘空间(有很多)。chargLocalSlot