草庐IT

c++ - 使用 GetModuleHandle 获取指向 IMAGE_DOS_HEADER 的指针?

一旦我的进程加载到内存中,我就试图获取它的图像库。据我了解,您可以调用GetModuleHandle来获取图像库。我的问题是,返回的句柄是否实质上指向IMAGE_DOS_HEADER结构,以便您可以执行以下操作:PIMAGE_DOS_HEADERDosHeader;DosHeader=(PIMAGE_DOS_HEADER)GetModuleHandle(NULL);如果这不正确,您还可以使用什么其他方法? 最佳答案 这是正确的,但如果您想要dll的模块句柄,则需要指定其路径。否则,您将获得进程exe的句柄。您还应该首先检查返回的HM

c - 为什么这个 MSVC API 是这样定义的?

errno_t_dupenv_s(char**buffer,size_t*sizeInBytes,constchar*varname);我有几个问题:为什么需要指向指针(**)的指针而不是指针(*)?为什么sizeInBytes是必需的,strlen(buffer)不可用吗? 最佳答案 msvc下任何以_s为后缀的函数都是安全函数,这意味着它不会对传递的数据的完整性做出任何假设。正是出于这个原因,字符串的长度是必需的,因为您不能假设它以null终止或根本终止(您可能也只想要一半的字符串,但这是副作用)。安全函数都返回错误代码,这样就

c - FIFO 不会在读取时阻塞

为什么下面的程序不会在第二次read调用时阻塞?intpid=fork();if(pid){intfifo=open("testfifo",O_RDWR);charbuf[20];while(1){read(fifo,buf,10);puts(buf);}}else{intfifo=open("testfifo",O_WRONLY);write(fifo,"teststring",10);close(fifo);}return0;第二个read调用继续返回0,即使fifo变空并且它应该阻塞read调用。我错过了什么吗?操作系统是Windows,管道是用mknodtestfifop创建的

c++ - Windows 中 _strnicmp 的 LPTSTR 等价物是什么?

是否有一个LPTSTR等效于_strnicmp,它接收2个LPTSTR字符串,以及要比较的TCHAR数量?使用cwinapi顺便说一句 最佳答案 它是_tcsncicmp,见thedocumentation. 关于c++-Windows中_strnicmp的LPTSTR等价物是什么?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/7525844/

c - Visual Studio 2010 运行时检查失败 #3

看来微软在VS2010上又要适得其反了。这是我的代码#include"string.h"typedefstructs_test{unsignedchara[20];}t_test,*p_test;voidinitialize(t_testt){memset(t.a,0,20);}voidmain(){t_testt;initialize(t);}它抛出Run-TimeCheckFailure#3-Thevariable't'isbeingusedwithoutbeinginitialized.嗯...因为在其他情况下,运行时检查器确实有帮助,所以我不太可能在解决方案中将其关闭。但是我到

c - Windows 服务 C

我已经用C语言编写了一个Windows服务,但是缺少关于用这种语言编写服务的文档意味着我有一些事情需要帮助。我想创建一个配置文件,服务会读取该配置文件以获取一些设置/选项。我想知道最好的方法是什么以及如何去做。服务.exe将与其他文件/程序一起安装在用户指定的位置。我的第一个问题是,我应该将此配置文件保存在与服务.exe相同的目录中,还是应该将其放在我为我的程序创建的%appdata%文件夹中?服务如何找到配置文件。我应该将配置文件的位置存储在注册表中并将注册表项硬编码到服务中吗?或者是否可以安装该服务,使其将配置文件路径作为默认命令行参数?或者我应该将我的配置文件保存在与服务.exe

c# - Windows 应用程序和 Spy++

我不明白为什么我可以使用Spy++获取某些Windows应用程序的句柄、窗口类等。例如,iexplore.exe,它只是不适用于url文本框或任何文本,如果加载页面中有编辑框区域;还有一些Windows应用程序我只得到外层的属性,而它的内部按钮、文本框或组合框是不可访问的。在这些应用程序中,我应该怎么做才能接触到它们?谢谢:) 最佳答案 这些程序使用无窗口控件。他们不使用标准的Windows控件,而是在一个巨大的容器中自行绘制和处理所有内容。 关于c#-Windows应用程序和Spy++

c - 在 Windows XP 上运行应用程序时出现 "The specified procedure could not be found"错误(异常 c0000139)

我们有一个dll在Vista和Win7上运行良好一段时间,但在XP上运行时,我们在LoadLibrary时遇到错误“找不到指定的过程”()被调用加载它。我已经尝试使用配置文件选项通过DependencyWalker运行它,将全局标志设置为显示加载器快照,我能从中得到的唯一看似有用的信息是:LDR:SnappingimportsforMyDll.dllfromKERNEL32.dllLDR:LdrGetProcedureAddressbyNAME-RtlGetLastWin32ErrorLDR:exceptionc0000139thrownwithinfunctionLdrpSnapIA

c++ - 如何在代码块 (Windows) 的 C 项目中包含 curl 库?

这个问题看起来很简单。我尝试了很多方法,只是为了使用code::blockside在我的C项目中包含curl,但无济于事。我想将cURL的库用于需要http功能的控制台应用程序项目。如果有人成功这样做,那么非常感谢您的帮助。:)之前发生的事情:-我将所有cURL文件复制到我的项目并链接库(扩展名为.a或.lib的库)-然后当我构建项目时。出现了很多undefinedreference。这是我正在测试的代码:#include#include#includeintmain(){curl_global_init(CURL_GLOBAL_ALL);CURL*myHandle;CURLcoder

c - 在 win32/C/C++ 中共享内存和 IPC 的最快进程技术

我正在编写一个导出标准化接口(interface)(VST)并由外部应用程序托管的实时库。库必须发布一个表,该表可以被同一进程中的任何线程查看(如果它知道在哪里查看)——明确地说,这个表必须可以被进程空间中的所有dll查看——如果他们知道在哪里查看看。访问表必须很快。虚拟内存似乎有点矫枉过正,我考虑过使用窗口句柄(现在仍然可以)来消息泵,但我更喜欢一种更快的方法,如果有的话。此外,PE中的共享数据段是我希望尽可能避免的。我想我几乎宁愿使用窗口句柄。我目前不关心同步,事后我可以处理。我只是想要一些关于在进程空间内发布表的最快技术的建议。 最佳答案