jjzjj

DWORD_PTR

全部标签

c++ - tr1::unique_ptr 和 SelectObject()

我有一些像这样管理异常安全的原始代码:voidfoo(){HDChdc=//getanHDCHBITMAPhbitmap=//getanHBITMAPHGDIOBJhbitmapOld=SelectObject(hdc,hbitmap);try{//dosomethingthatmaythrowanexception}catch(...){SelectObject(hdc,hbitmapOld);throw;}}现在我想摆脱tryblock并使用unique_ptr自动选择旧位图。所以我写了这样的东西:voidfoo(){//...//HGDIOBJisdefinedasvoid*st

c++ - 使用 DWORD 解析重载函数调用

使用MicrosoftC++2017,64位构建,以下代码行生成编译错误,对重载函数的调用不明确:print(pmc.PageFaultCount);我定义了以下打印函数,希望能明确涵盖所有常用的整数类型:voidprint(int32_tn);voidprint(int64_tn);voidprint(uint32_tn);voidprint(uint64_tn);pmc.PageFaultCount声明为DWORD,记录为无符号32位整数。我希望选择uint32_t重载。这怎么模棱两可?更重要的是,如果上述一组重载不足以打印任何整数,那么什么一组重载就足够了?

c++ - HALF_PTR Windows 数据类型

VS文档说明Halfthesizeofapointer.Usewithinastructurethatcontainsapointerandtwosmallfields.WindowsDataTypes确切地说,这种类型是什么?它是如何使用的? 最佳答案 注意:匿名结构不是标准的,但MSVC采用它们:union{int*aPointerstruct{HALF_PTRlowerBits;HALF_PTRupperBits;};}myvar;//Youcanbeassuredthisunionissizeof(int*)如果您认为它们不

c++ - 一个 DWORD 可以容纳多少个标志?

使用标志有点新,但也不是C++的最佳选择。我只是想知道,一个DWORD可以容纳多少个标志?我假设它是32,因为32位?如果没有,它是否可以至少容纳16个标志,因为我至少需要这个。我可以找到如何使用标志,没问题,但在网络上找不到任何地方说明不同类型的数据类型可以持有的值,我再一次假设它只是他们拥有的位数,但是我找不到足够的信息来澄清这一点。谢谢。 最佳答案 问题是带有标记的C++,所以如果您想存储16个标记,只需使用std::bitset。如果您想确定整数的位大小,请使用cstdint并键入linkeuint16_t、uint64_t

c++ - 在 C++ 中将 DWORD 值写入注册表

我正在尝试用C++以编程方式将DWORD值写入注册表。我做了一些搜索,发现以前有人问过这个问题。我尝试遵循他们的解决方案,但提出了一个非常令人沮丧的问题,据我所知,他们的解决方案尚未解决。这是我的代码:HKEYhKey;LPCWSTRsKeyPath;intiResult;sKeyPath=L"Software\\ABI\\";iResult=RegOpenKeyEx(HKEY_CURRENT_USER,sKeyPath,NULL,KEY_ALL_ACCESS,&hKey);DWORDvalue=0x00000003;iResult=RegSetValueEx(hKey,L"Test"

c++ - DWORD 中的包装值

如何将两个unsignedshort(WORD)值打包成一个unsignedlong(DWORD)值?我知道如何使用HIWORD和LOWORD宏来获取它们,但是是否有一种...某种反向宏用于将它们存储到DWORD很快?我正在使用MicrosoftVisualStudio2012IDE使用C++进行编程。 最佳答案 MAKELONG接受两个WORD并将它们组合成一个DWORD:DWORDMAKELONG(WORDwLow,WORDwHigh);不知道为什么它不叫MAKEDWORD... 关

c++ - boost 文件系统错误(temp_directory_path 返回 <Bad Ptr>)

我正在尝试使用Boost获取当前的临时文件夹:boost::system::error_codeerror;autotmp_path=boost::filesystem::temp_directory_path(error);if(boost::system::errc::success!=error.value()){std::cout在visualstudio2013调试session期间调查tmp_path的值时,tmp_path的值似乎不正确-VS显示{m_pathname=}.以下代码也失败,出现异常“stringtoolong”,这可能与问题有关:std::stringtm

windows - 使用 dnscmd 删除 Windows DNS PTR 条目

在WindowsDNS服务器上,我可以使用以下powershell命令添加资源记录并自动为反向查找区域创建相应的PTRDNS命令。/recordaddmgmt.testrhel1/CreatePTR10.0.0.1有没有办法像上面那样用一个命令删除它们?简而言之,是否有与/createPTR相反的dnscmd开关?像/removePTR或/deletePTR这样的东西?找不到任何这样说的文档 最佳答案 只需确保提供要从反向查找区域中删除的地址:dnscmd./recorddeletemgmt.testrhel1A10.0.0.1

c - C中的DWORD和HANDLE类型有什么区别?

我在C中有一个返回类型为DWORD的线程,但它随后由HANDLE类型指针处理。这两种类型有什么区别?我专门为ANSIC问这个问题。没错,DWORD是uint类型,HANDLE是PVOID,C允许直接强制转换DWORD到HANDLE。但是这些类型有什么不同吗?或者我可以简单地说它们是一样的吗?这是一个在讨论中被问到的问题。我想知道正确答案是什么。 最佳答案 Win32:DWORD32位无符号长型HANDLEvoid*(32位指针)Win64DWORD32位无符号长型HANDLEvoid*(64位指针)不要只是假设你可以将一个转换为另一

c++ - 通过命名管道发送 DWORD

我试图通过命名管道发送一个DWORD数组,但我一直在试图弄清楚如何发送单个DWORD。这是我到目前为止所得到的://CreateapipetosenddataHANDLEpipe=CreateNamedPipe(L"\\\\.\\pipe\\my_pipe",PIPE_ACCESS_OUTBOUND,PIPE_TYPE_BYTE,1,0,0,0,NULL);/*Waitingfortheothersidetoconnectandsomeerrorhandlingcutout*///HereItrytosendtheDWORDDWORDmsg=0xDEADBEEF;DWORDnumByt