• 关于 dword 的搜索结果

回答

system->crt->main() void crt() { main(); exit(); } //上面是内部实现的,下面是你写的代码。你生成的汇编代码只是下面的。 void main() { return; }######返回出去?表示我也不知道,同求######CRT里有eixt(). int main() { return 0; } 一路F11运行,你就看见了.vc6下有: 00401129 add esp,0Ch 0040112C mov dword ptr [mainret],eax 0040112F mov edx,dword ptr [mainret] 00401132 push edx 00401133 call exit (00401210) $L17377: 00401138 mov eax,dword ptr [ebp-14h] 0040113B mov ecx,dword ptr [eax] 0040113D mov edx,dword ptr [ecx] 0040113F mov dword ptr [ebp-20h],edx 00401142 mov eax,dword ptr [ebp-14h] 00401145 push eax 00401146 mov ecx,dword ptr [ebp-20h] 00401149 push ecx 0040114A call _XcptFilter (004013a0) 0040114F add esp,8 $L17379: 00401152 ret $L17378: 00401153 mov esp,dword ptr [ebp-18h] 00401156 mov edx,dword ptr [ebp-20h] 00401159 push edx 0040115A call _exit (00401230) 看见call _exit了吧.###### 引用来自“周翼翼”的答案 CRT里有eixt(). int main() { return 0; } 一路F11运行,你就看见了.vc6下有: 00401129 add esp,0Ch 0040112C mov dword ptr [mainret],eax 0040112F mov edx,dword ptr [mainret] 00401132 push edx 00401133 call exit (00401210) $L17377: 00401138 mov eax,dword ptr [ebp-14h] 0040113B mov ecx,dword ptr [eax] 0040113D mov edx,dword ptr [ecx] 0040113F mov dword ptr [ebp-20h],edx 00401142 mov eax,dword ptr [ebp-14h] 00401145 push eax 00401146 mov ecx,dword ptr [ebp-20h] 00401149 push ecx 0040114A call _XcptFilter (004013a0) 0040114F add esp,8 $L17379: 00401152 ret $L17378: 00401153 mov esp,dword ptr [ebp-18h] 00401156 mov edx,dword ptr [ebp-20h] 00401159 push edx 0040115A call _exit (00401230) 看见call _exit了吧. .file "t.c" .text .globl main .type main, @function main: .LFB0: .cfi_startproc pushq %rbp .cfi_def_cfa_offset 16 .cfi_offset 6, -16 movq %rsp, %rbp .cfi_def_cfa_register 6 movl %edi, -4(%rbp) movq %rsi, -16(%rbp) movl $0, %eax popq %rbp .cfi_def_cfa 7, 8 ret .cfi_endproc .LFE0: .size main, .-main .ident "GCC: (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3" .section .note.GNU-stack,"",@progbits 表示gcc下这个文件 的汇编文件如上,根本没有 exit 的调用。额…… ######在CRT里.######应该是在CRT里面######楼主找几篇执行文件的组成的文章看看就知道了。 ######在crt动态库里,不在程序里

kun坤 2020-05-29 17:20:54 0 浏览量 回答数 0

问题

c++的诡异语法问题 ///////// 400 请求报错 

kun坤 2020-05-29 10:59:15 2 浏览量 回答数 1

回答

您可以修改窗口REGISTRY来解决此问题, 首先在regedit中打开此路径: HKLM \ SYSTEM \ CurrentControlSet \ Services \ Tcpip \ Parameters 并创建4个新的DWORD键和值: TcpTimedWaitDelay REG_DWORD: 0000001e (hex) MaxUserPort REG_DWORD: 0000fffe (hex) TcpNumConnections REG_DWORD: 00fffffe (hex) TcpMaxDataRetransmissions REG_DWORD: 00000005 (hex)来源:stack overflow

保持可爱mmm 2020-05-17 20:37:56 0 浏览量 回答数 0

新用户福利专场,云服务器ECS低至96.9元/年

新用户福利专场,云服务器ECS低至96.9元/年

问题

windows系统编程的问题:报错

kun坤 2020-06-06 16:41:54 0 浏览量 回答数 1

问题

产生随机的超递增数列

a123456678 2019-12-01 20:28:23 1103 浏览量 回答数 1

问题

DWORD_PTR是什么类型?

a123456678 2019-12-01 19:48:41 1244 浏览量 回答数 1

问题

IOS 中Word,DWord数据类型需要怎么定义与处理呢?

杨冬芳 2019-12-01 20:14:18 1149 浏览量 回答数 1

回答

问题描述:无启用TLS1.2 问题原因: 小程序是需要TLS1.2 解决方案:运行下面的PowerShell,然后运行后重启服务器生效。 如果对你有帮助可以采纳这个回答~ 感谢!  # Enables TLS 1.2 on windows Server 2008 R2 and Windows 7 # These keys do not exist so they need to be created prior to setting values. md "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2" md "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server" md "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client" # Enable TLS 1.2 for client and server SCHANNEL communications new-itemproperty -path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server" -name "Enabled" -value 1 -PropertyType "DWord" new-itemproperty -path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server" -name "DisabledByDefault" -value 0 -PropertyType "DWord" new-itemproperty -path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client" -name "Enabled" -value 1 -PropertyType "DWord" new-itemproperty -path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client" -name "DisabledByDefault" -value 0 -PropertyType "DWord" # Disable SSL 2.0 (PCI Compliance) md "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 2.0\Server" new-itemproperty -path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 2.0\Server" -name Enabled -value 0 -PropertyType "DWord" # Enables TLS 1.2 on Windows Server 2008 R2 and Windows 7 # These keys do not exist so they need to be created prior to setting values. md "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2" md "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server" md "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client" # Enable TLS 1.2 for client and server SCHANNEL communications new-itemproperty -path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server" -name "Enabled" -value 1 -PropertyType "DWord" new-itemproperty -path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server" -name "DisabledByDefault" -value 0 -PropertyType "DWord" new-itemproperty -path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client" -name "Enabled" -value 1 -PropertyType "DWord" new-itemproperty -path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client" -name "DisabledByDefault" -value 0 -PropertyType "DWord" # Disable SSL 2.0 (PCI Compliance) md "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 2.0\Server" new-itemproperty -path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 2.0\Server" -name Enabled -value 0 -PropertyType "DWord"

叶康铭 2019-12-02 00:46:57 0 浏览量 回答数 0

问题

程序长时间运行后出错“XXX.exe 中的 0x70763405 处有未经处理的?报错

爱吃鱼的程序员 2020-06-22 17:02:17 0 浏览量 回答数 1

回答

除了自身的硬件条件外,还需要对你的服务器做出安全设置控制,用2003系统来说下具体安全设置如下: 1、服务器安全设置之--硬盘权限篇 这里着重谈需要的权限,也就是最终文件夹或硬盘需要的权限,可以防御各种木马入侵,提权攻击,跨站攻击等。本实例经过多次试验,安全性能很好,服务器基本没有被木马威胁的担忧了。 硬盘或文件夹: C:\ D:\ E:\ F:\ 类推 主要权限部分: Administrators 完全控制 无 该文件夹,子文件夹及文件 <不是继承的> CREATOR OWNER 完全控制 只有子文件夹及文件 <不是继承的> SYSTEM 完全控制 该文件夹,子文件夹及文件 <不是继承的> 其他权限部分: 如果安装了其他运行环境,比如PHP等,则根据PHP的环境功能要求来设置硬盘权限,一般是安装目录加上users读取运行权限就足够了,比如c:\php的话,就在根目录权限继承的情况下加上users读取运行权限,需要写入数据的比如tmp文件夹,则把users的写删权限加上,运行权限不要,然后把虚拟主机用户的读权限拒绝即可。如果是mysql的话,用一个独立用户运行MYSQL会更安全,下面会有介绍。如果是winwebmail,则最好建立独立的应用程序池和独立IIS用户,然后整个安装目录有users用户的读/运行/写/权限,IIS用户则相同,这个IIS用户就只用在winwebmail的WEB访问中,其他IIS站点切勿使用 硬盘设置需要根据你的实际需要来设置权限! 2、服务器安全设置之--系统服务篇(设置完毕需要重新启动) *除非特殊情况非开不可,下列系统服务要停止并禁用: 1、Alerter 2、Application Layer Gateway Service 3、 Background Intelligent Transfer Service 4、Computer Browser 5、Distributed File System 6、Help and Support 7、Messenger 8、NetMeeting Remote Desktop Sharing 9、Print Spooler 10、Remote Registry 11、Task Scheduler 12、TCP/IP NetBIOS Helper 13、Telnet 14、Workstation 以上是windows2003server标准服务当中需要停止的服务,作为IIS网络服务器,以上服务务必要停止,如果需要SSL证书服务,则设置方法不同。如果你装有虚拟主机系统,设置当然也不一样!更详细设置可以根据自己的需要找更详细的参考资料。 3、服务器安全设置之--组件安全设置篇 (非常重要!!!) A、卸载WScript.Shell 和 Shell.application 组件,将下面的代码保存为一个.BAT文件执行(分2000和2003系统) win2000 regsvr32/u C:\WINNT\System32\wshom.ocx del C:\WINNT\System32\wshom.ocx regsvr32/u C:\WINNT\system32\shell32.dll del C:\WINNT\system32\shell32.dll win2003 regsvr32/u C:\WINDOWS\System32\wshom.ocx del C:\WINDOWS\System32\wshom.ocx regsvr32/u C:\WINDOWS\system32\shell32.dll del C:\WINDOWS\system32\shell32.dll B、改名不安全组件,需要注意的是组件的名称和Clsid都要改,并且要改彻底了,不要照抄,要自己改 【开始→运行→regedit→回车】打开注册表编辑器 然后【编辑→查找→填写Shell.application→查找下一个】 用这个方法能找到两个注册表项: {13709620-C279-11CE-A49E-444553540000} 和 Shell.application 。 第一步:为了确保万无一失,把这两个注册表项导出来,保存为xxxx.reg 文件。 第二步:比如我们想做这样的更改 13709620-C279-11CE-A49E-444553540000 改名为 13709620-C279-11CE-A49E-444553540001 Shell.application 改名为 Shell.application_nohack 第三步:那么,就把刚才导出的.reg文件里的内容按上面的对应关系替换掉,然后把修改好的.reg文件导入到注册表中(双击即可),导入了改名后的注册表项之后,别忘记了删除原有的那两个项目。这里需要注意一点,Clsid中只能是十个数字和ABCDEF六个字母。 其实,只要把对应注册表项导出来备份,然后直接改键名就可以了。 WScript.Shell 和 Shell.application 组件是 脚本入侵过程中,提升权限的重要环节,这两个组件的卸载和修改对应注册键名,可以很大程度的提高虚拟主机的脚本安全性能,一般来说,ASP和php类脚本提升权限的功能是无法实现了,再加上一些系统服务、硬盘访问权限、端口过滤、本地安全策略的设置,虚拟主机因该说,安全性能有非常大的提高,黑客入侵的可能性是非常低了。注销了Shell组件之后,侵入者运行提升工具的可能性就很小了,但是prel等别的脚本语言也有shell能力,为防万一,还是设置一下为好。下面是另外一种设置,大同小异。 一、禁止使用FileSystemObject组件 FileSystemObject可以对文件进行常规操作,可以通过修改注册表,将此组件改名,来防止此类木马的危害。 HKEY_CLASSES_ROOT\Scripting.FileSystemObject\ 改名为其它的名字,如:改为 FileSystemObject_ChangeName 自己以后调用的时候使用这个就可以正常调用此组件了 也要将clsid值也改一下 HKEY_CLASSES_ROOT\Scripting.FileSystemObject\CLSID\项目的值 也可以将其删除,来防止此类木马的危害。 2000注销此组件命令:RegSrv32 /u C:\WINNT\SYSTEM\scrrun.dll 2003注销此组件命令:RegSrv32 /u C:\WINDOWS\SYSTEM\scrrun.dll 如何禁止Guest用户使用scrrun.dll来防止调用此组件? 使用这个命令:cacls C:\WINNT\system32\scrrun.dll /e /d guests 二、禁止使用WScript.Shell组件 WScript.Shell可以调用系统内核运行DOS基本命令 可以通过修改注册表,将此组件改名,来防止此类木马的危害。 HKEY_CLASSES_ROOT\WScript.Shell\及HKEY_CLASSES_ROOT\WScript.Shell.1\ 改名为其它的名字,如:改为WScript.Shell_ChangeName 或 WScript.Shell.1_ChangeName 自己以后调用的时候使用这个就可以正常调用此组件了 也要将clsid值也改一下 HKEY_CLASSES_ROOT\WScript.Shell\CLSID\项目的值 HKEY_CLASSES_ROOT\WScript.Shell.1\CLSID\项目的值 也可以将其删除,来防止此类木马的危害。 三、禁止使用Shell.Application组件 Shell.Application可以调用系统内核运行DOS基本命令 可以通过修改注册表,将此组件改名,来防止此类木马的危害。 HKEY_CLASSES_ROOT\Shell.Application\ 及 HKEY_CLASSES_ROOT\Shell.Application.1\ 改名为其它的名字,如:改为Shell.Application_ChangeName 或 Shell.Application.1_ChangeName 自己以后调用的时候使用这个就可以正常调用此组件了 也要将clsid值也改一下 HKEY_CLASSES_ROOT\Shell.Application\CLSID\项目的值 HKEY_CLASSES_ROOT\Shell.Application\CLSID\项目的值 也可以将其删除,来防止此类木马的危害。 禁止Guest用户使用shell32.dll来防止调用此组件。 2000使用命令:cacls C:\WINNT\system32\shell32.dll /e /d guests 2003使用命令:cacls C:\WINDOWS\system32\shell32.dll /e /d guests 注:操作均需要重新启动WEB服务后才会生效。 四、调用Cmd.exe 禁用Guests组用户调用cmd.exe 2000使用命令:cacls C:\WINNT\system32\Cmd.exe /e /d guests 2003使用命令:cacls C:\WINDOWS\system32\Cmd.exe /e /d guests 通过以上四步的设置基本可以防范目前比较流行的几种木马,但最有效的办法还是通过综合安全设置,将服务器、程序安全都达到一定标准,才可能将安全等级设置较高,防范更多非法入侵。 C、防止Serv-U权限提升 (适用于 Serv-U6.0 以前版本,之后可以直接设置密码) 先停掉Serv-U服务 用Ultraedit打开ServUDaemon.exe 查找 Ascii:LocalAdministrator 和 #l@$ak#.lk;0@P 修改成等长度的其它字符就可以了,ServUAdmin.exe也一样处理。 另外注意设置Serv-U所在的文件夹的权限,不要让IIS匿名用户有读取的权限,否则人家下走你修改过的文件,照样可以分析出你的管理员名和密码。 4、服务器安全设置之--IIS用户设置方法 不同站点使用不用的IIS用户。另外权限的设置要细致。 5、服务器安全设置之--服务器安全和性能配置 把下面文本保存为: windows2000-2003服务器安全和性能注册表自动配置文件.reg 运行即可。[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer] "NoRecentDocsMenu"=hex:01,00,00,00 "NoRecentDocsHistory"=hex:01,00,00,00 [HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon] "DontDisplayLastUserName"="1" [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa] "restrictanonymous"=dword:00000001 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\Parameters] "AutoShareServer"=dword:00000000 "AutoShareWks"=dword:00000000 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters] "EnableICMPRedirect"=dword:00000000 "KeepAliveTime"=dword:000927c0 "SynAttackProtect"=dword:00000002 "TcpMaxHalfOpen"=dword:000001f4 "TcpMaxHalfOpenRetried"=dword:00000190 "TcpMaxConnectResponseRetransmissions"=dword:00000001 "TcpMaxDataRetransmissions"=dword:00000003 "TCPMaxPortsExhausted"=dword:00000005 "DisableIPSourceRouting"=dword:00000002 "TcpTimedWaitDelay"=dword:0000001e "TcpNumConnections"=dword:00004e20 "EnablePMTUDiscovery"=dword:00000000 "NoNameReleaseOnDemand"=dword:00000001 "EnableDeadGWDetect"=dword:00000000 "PerformRouterDiscovery"=dword:00000000 "EnableICMPRedirects"=dword:00000000 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NetBT\Parameters] "BacklogIncrement"=dword:00000005 "MaxConnBackLog"=dword:000007d0 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\AFD\Parameters] "EnableDynamicBacklog"=dword:00000001 "MinimumDynamicBacklog"=dword:00000014 "MaximumDynamicBacklog"=dword:00007530 "DynamicBacklogGrowthDelta"=dword:0000000a 功能:可抵御DDOS攻击2-3万包,提高服务器TCP-IP整体安全性能(效果等于软件防火墙,节约了系统资源) 6、服务器安全设置之--IP安全策略 (仅仅列出需要屏蔽或阻止的端口或协议) 协议 IP协议端口 源地址 目标地址 描述 方式 ICMP -- -- -- ICMP 阻止 UDP 135 任何IP地址 我的IP地址 135-UDP 阻止 UDP 136 任何IP地址 我的IP地址 136-UDP 阻止 UDP 137 任何IP地址 我的IP地址 137-UDP 阻止 UDP 138 任何IP地址 我的IP地址 138-UDP 阻止 UDP 139 任何IP地址 我的IP地址 139-UDP 阻止 TCP 445 任何IP地址-从任意端口 我的IP地址-445 445-TCP 阻止 UDP 445 任何IP地址-从任意端口 我的IP地址-445 445-UDP 阻止 UDP 69 任何IP地址-从任意端口 我的IP地址-69 69-入 阻止 UDP 69 我的IP地址-69 任何IP地址-任意端口 69-出 阻止 TCP 4444 任何IP地址-从任意端口 我的IP地址-4444 4444-TCP 阻止 TCP 1026 我的IP地址-1026 任何IP地址-任意端口 灰鸽子-1026 阻止 TCP 1027 我的IP地址-1027 任何IP地址-任意端口 灰鸽子-1027 阻止 TCP 1028 我的IP地址-1028 任何IP地址-任意端口 灰鸽子-1028 阻止 UDP 1026 我的IP地址-1026 任何IP地址-任意端口 灰鸽子-1026 阻止 UDP 1027 我的IP地址-1027 任何IP地址-任意端口 灰鸽子-1027 阻止 UDP 1028 我的IP地址-1028 任何IP地址-任意端口 灰鸽子-1028 阻止 TCP 21 我的IP地址-从任意端口 任何IP地址-到21端口 阻止tftp出站 阻止 TCP 99 我的IP地址-99 任何IP地址-任意端口 阻止99shell 阻止 以上是IP安全策略里的设置,可以根据实际情况,增加或删除端口 7、服务器安全设置之--本地安全策略设置 安全策略自动更新命令:GPUpdate /force (应用组策略自动生效不需重新启动) 开始菜单—>管理工具—>本地安全策略 A、本地策略——>审核策略 审核策略更改 成功 失败 审核登录事件 成功 失败 审核对象访问 失败 审核过程跟踪 无审核 审核目录服务访问 失败 审核特权使用 失败 审核系统事件 成功 失败 审核账户登录事件 成功 失败 审核账户管理 成功 失败 B、本地策略——>用户权限分配 关闭系统:只有Administrators组、其它全部删除。 通过终端服务拒绝登陆:加入Guests、User组 通过终端服务允许登陆:只加入Administrators组,其他全部删除 C、本地策略——>安全选项 交互式登陆:不显示上次的用户名 启用 网络访问:不允许SAM帐户和共享的匿名枚举 启用 网络访问:不允许为网络身份验证储存凭证 启用 网络访问:可匿名访问的共享 全部删除 网络访问:可匿名访问的命 全部删除 网络访问:可远程访问的注册表路径 全部删除 网络访问:可远程访问的注册表路径和子路径 全部删除 帐户:重命名来宾帐户 重命名一个帐户 帐户:重命名系统管理员帐户 重命名一个帐户 还有很多设置!你可以多找找资料! 答案来源网络,供参考,希望对您有帮助

问问小秘 2019-12-02 03:00:07 0 浏览量 回答数 0

问题

lpv是win32 sdk中什么前缀?

杨冬芳 2019-12-01 19:34:30 920 浏览量 回答数 1

回答

SCHANNEL\Protocols 子项 协议 的注册表项下 SCHANNEL 键用于的控件使用的协议支持由 Schannel.dll 文件,并限制该协议使用 TLS 服务器或 TLS 的客户端。 若要禁止使用的 SSL 3.0 或 TLS 1.0 之外的其他协议,请将 Enabled 值的 DWORD 鍊兼暟鎹改为 0x0 中下面的注册表项,在 协议 键下的每个: 目前的 Microsoft 消息队列使用的客户端和服务器之间只有 PCT 1.0 SCHANNEL\Ciphers 子项 密码 的注册表项下 SCHANNEL 键用于控制如 DES 或 RC4 对称算法的使用。 以下是在 密码 键下的有效注册表项。 SCHANNEL\Ciphers\RC4 128/128 子项: rc4 128/128 此子项是指 128 位 RC4。 要允许此密码算法、 0xffffffff 到更改 启用 值的 DWORD 值数据,否则更改为 0x0 的 DWORD 值数据。 如果不配置 启用 值,启用了默认值。 此注册表项不能应用于不具备 SGC 证书 --------------------------------------------------------------------------------------- des:有好几种:0xffffffff 到更改 启用,否则更改为 0x0 ,不配置 启用 值,启用了默认值,但有很多不允许禁用的算法。。。 TLS 1.0 和SSL 3.0 :{}是要在regedit里建的值: ssl_rsa_export_with_rc4_40_md5 {0x00,0x03} ssl_rsa_with_rc4_128_md5 {0x00,0x04} SSL_RSA_WITH_DES_CBC_SHA {0x00,0x09} ssl_rsa_with_3des_ede_cbc_sha {0x00,0x0A} ssl_rsa_export1024_with_des_cbc_sha {0x00,0x62} ssl_rsa_export1024_with_rc4_56_sha {0x00,0x64} TLS_RSA_WITH_DES_CBC_SHA {0x00,0x09} tls_rsa_with_3des_ede_cbc_sha {0x00,0x0A} tls_rsa_export1024_with_des_cbc_sha {0x00,0x62 tls_rsa_export_with_rc4_40_md5 {0x00,0x03} tls_rsa_with_rc4_128_md5 {0x00,0x04} 1 。。。。SCHANNEL\Ciphers\Triple DES 128/128 子项: 三重 DES 168/168 2 。。。。SCHANNEL\Ciphers\RC2 56/56 子项: DES 56/56 3 SCHANNEL\Hashes\MD5 子项: md5 ===== 例子: [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Hashes\MD5] "Enabled"=dword:00000000 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Hashes\SHA] "Enabled"=dword:ffffffff SCHANNEL\Protocols\PCT 1.0\Client SCHANNEL\Protocols\PCT 1.0\Server SCHANNEL\Protocols\SSL 2.0\Client SCHANNEL\Protocols\SSL 2.0\Server

小旋风柴进 2019-12-02 01:27:17 0 浏览量 回答数 0

回答

你是C语言吗?如果是C语言,enum是等于整形类型的。你在前面加个TEST_TYPE:是什么目的? 如果你想enum定义个类型是如下描述 enum TYPE_E{ a = 0, b = 1 }; enum TYPE_E *pe,te; ... ###### enum TEST_TYPE:unsigned char 后面的:unsigned char是没有必要的,也是不合法的。 编译器会根据枚举数值的范围自动确定数据类型。 ###### 有些源代码使用如下形式: enum XX {     EA = 0,     EB = 1,      ……     FORCE_DWORD = 0x7fffffff }; 迫使编译器使得这种枚举变量是一个DWORD,也就是一般占用4个自己。

爱吃鱼的程序员 2020-06-03 18:03:28 0 浏览量 回答数 0

问题

c++编写驱服务级别的程序的问题

a123456678 2019-12-01 20:07:23 888 浏览量 回答数 1

回答

typedef unsigned __int3264 ULONG_PTR; typedef ULONG_PTR DWORD_PTR;

a123456678 2019-12-02 02:39:21 0 浏览量 回答数 0

回答

#include <TlHelp32.h> #include <pdh.h> #pragma comment(lib,"pdh.lib") #include <PSAPI.H> #pragma comment(lib,"psapi.lib") // 返回指定进程的句柄数 BOOL EnableDebugPrivilege(BOOL fEnable) { BOOL fOK = FALSE; HANDLE hToken = NULL; if(OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES,&hToken)){ TOKEN_PRIVILEGES tp; tp.PrivilegeCount =1; LookupPrivilegeValue(NULL,SE_DEBUG_NAME,&tp.Privileges[0].Luid); tp.Privileges[0].Attributes = fEnable ? SE_PRIVILEGE_ENABLED : 0; AdjustTokenPrivileges(hToken,FALSE,&tp,sizeof(tp),NULL,NULL); fOK = (GetLastError()==ERROR_SUCCESS); CloseHandle(hToken); } return fOK; } DWORD GetProcHandleCount(HANDLE hProcess) { if(!EnableDebugPrivilege(TRUE)) { return 0; } HANDLE hQuery=NULL; PdhOpenQuery(NULL,0,&hQuery); if(NULL==hQuery) { return 0; } HANDLE hCounter=NULL; char szProcessName[MAX_PATH] = "unknown"; HMODULE hMod=NULL; GetModuleBaseName( hProcess, hMod, szProcessName, sizeof(szProcessName) ); char szName[MAX_PATH]=""; _tsplitpath(szProcessName,NULL,NULL,szName,NULL); char szCounterPath[MAX_PATH]=""; sprintf(szCounterPath,"\\Process(%s)\\Handle Count",szName); PdhAddCounter(hQuery,szCounterPath,0,&hCounter); if(NULL==hCounter || INVALID_HANDLE_VALUE==hCounter) { PdhCloseQuery(hQuery); return 0; } DWORD nHandles=0; if(ERROR_SUCCESS==PdhCollectQueryData(hQuery)) { PDH_FMT_COUNTERVALUE pdhfmtHandles; if(ERROR_SUCCESS==PdhGetFormattedCounterValue(hCounter, PDH_FMT_LONG, NULL, &pdhfmtHandles)) nHandles = DWORD(pdhfmtHandles.longValue); } if(NULL!=hCounter && INVALID_HANDLE_VALUE!=hCounter) PdhRemoveCounter(hCounter); if(NULL!=hQuery && INVALID_HANDLE_VALUE!=hQuery) PdhCloseQuery(hQuery); EnableDebugPrivilege(FALSE); return nHandles; }

a123456678 2019-12-02 02:17:34 0 浏览量 回答数 0

回答

这里是编译器决定的,你用VS2008调试就会发现,i的值在调试窗口里都是变化了的。但是const表示的是一个常量,不可变的,如果用const-cast又可将它改变,就自相矛盾了。于是编译器采取了一种方案,在汇编里可以看出端倪: cout << " i = " << i << ", @" << &i << endl; 004142B8 mov esi,esp 004142BA mov eax,dword ptr [__imp_std::endl (41A348h)] 004142BF push eax 004142C0 mov edi,esp 004142C2 lea ecx,[i] 004142C5 push ecx 004142C6 push offset string ", @" (417880h) 004142CB mov ebx,esp 004142CD push 0Ah 004142CF push offset string " i = " (417878h) 004142D4 mov edx,dword ptr [__imp_std::cout (41A34Ch)] 004142DA push edx 10是直接使用的(见上面的push 0Ah),并不是按我们的惯性思维从地址里去取的。

a123456678 2019-12-02 01:58:06 0 浏览量 回答数 0

问题

msvcr100d.dll处有未处理的异常?报错

爱吃鱼的程序员 2020-06-22 19:06:34 0 浏览量 回答数 1

回答

D3DXCreateTextureFromFileEx这个函数有14个参数,在MSDN中的原型(后面中文解释为本人理解,仅供参考,原文请查看MSDN): HRESULT D3DXCreateTextureFromFileEx( LPDIRECT3DDEVICE9 pDevice, //调入是IDirect3DDevice9对象指针 LPCTSTR pSrcFile, //文件名 UINT Width, //图像的宽 UINT Height, //图像的长 UINT MipLevels, //图片的图层,一般用D3DX_DEFAULT,但也用1的 DWORD Usage, //设定这个纹理的使用方法,这个参数可以是0, //D3DUSAGE_RENDERTARGET,和 //D3DUSAGE_DYNAMIC。一般用的是0,也可以使用 D3DUSAGE_DYNAMIC, //这样可以动态改变纹理中的数据。如果纹理不需要动态性改变,就不需要设定这 //个参数为D3DUSAGE_DYNAMIC。 D3DFORMAT Format, // 纹理的格式,可以自己定义,也可以直接定义为D3DFMT_UNKNOWN,让程序 //在载入图像文件时定义象素深度 D3DPOOL Pool, //这是如何管理这些纹理,一般使用D3DPOOL_MANAGED DWORD Filter, //图像像素的过滤方式 DWORD MipFilter, //MIP的像素过滤方式 D3DCOLOR ColorKey, //透明色,设定这个颜色,在显示时,这图像中的这个颜色将忽略 D3DXIMAGE_INFO * pSrcInfo, //记录载入图片信息 PALETTEENTRY * pPalette, //记录调色板信息 LPDIRECT3DTEXTURE9 * ppTexture //用来储存载入图片的纹理对象实例 ); 在上次的公告板中,调用为: D3DXCreateTextureFromFileEx( Device, "Billboard.bmp", D3DX_DEFAULT, D3DX_DEFAULT, D3DX_DEFAULT, 0, D3DFMT_A1R5G5B5, D3DPOOL_MANAGED, D3DX_FILTER_TRIANGLE, D3DX_FILTER_TRIANGLE, D3DCOLOR_RGBA(0,0,0,255), NULL, NULL, &BillboardTexture); 在这里,关键颜色值为D3DFMT_A1R5G5B5(就是RGB都少于5的 颜色),将载入的图片里面的关键颜色值设置为透明色.只要在画时加上 Device->SetRenderState(D3DRS_ALPHATESTENABLE, TRUE); //启用alpha测试 就可以让指定的颜色透明。在公告和粒子系统中可能常用到这个函数。

a123456678 2019-12-02 02:15:30 0 浏览量 回答数 0

回答

typedef struct { DWORD_PTR dwCallback; MCIDEVICEID wDeviceID;//设别ID LPCTSTR lpstrDeviceType;//设备类型 LPCTSTR lpstrElementName;//文件名 LPCTSTR lpstrAlias;//别名 } MCI_OPEN_PARMS;

DM。 2020-05-29 18:12:17 0 浏览量 回答数 0

回答

typedef struct { DWORD_PTR dwCallback; MCIDEVICEID wDeviceID;//设别ID LPCTSTR lpstrDeviceType;//设备类型 LPCTSTR lpstrElementName;//文件名 LPCTSTR lpstrAlias;//别名 } MCI_OPEN_PARMS;

DM。 2020-05-29 18:13:09 0 浏览量 回答数 0

回答

失败时,用 GetLastError() 获取一下出错的代码,可以得到出错的原因。 一则简单的Windows共享内存IPC代码Windows共享内存可以让两个进程对同一块内存进行读写。 以下有2个进程,a.cpp生成A进程,b.cpp生成b进程。那么a进程将不停地读名为"GlobalMyFileMappingObject"的共享内存块,而b进程不停地写名为"GlobalMyFileMappingObject"的共享内存块。从而实现IPC。 //a.cpp #include <windows.h> #include <string.h> #include <string> #include <iostream> #include <tchar.h> using namespace std; #define BUF_SIZE 256 TCHAR szName[]=TEXT("Global\\MyFileMappingObject"); //指向同一块共享内存的名字 int main(int argc, char *argv[]) { HANDLE hMapFile; LPCTSTR pBuf; hMapFile = CreateFileMapping( INVALID_HANDLE_VALUE, // use paging file NULL, // default security PAGE_READWRITE, // read/write access 0, // maximum object size (high-order DWORD) BUF_SIZE, // maximum object size (low-order DWORD) szName); // name of mapping object if (hMapFile == NULL) { _tprintf(TEXT("Could not create file mapping object (%d).\n"), GetLastError()); return 1; } pBuf = (LPTSTR) MapViewOfFile(hMapFile, // handle to map object FILE_MAP_ALL_ACCESS, // read/write permission 0, 0, BUF_SIZE); if (pBuf == NULL) { _tprintf(TEXT("Could not map view of file (%d).\n"), GetLastError()); CloseHandle(hMapFile); return 1; } //从main开始至此,A B process代码一样,都是获取名为"Global\\MyFileMappingObject"的共享内存的指针 //以下代码,A不停地读共享内存pBuf while(1) { cout<<pBuf<<endl; cout<<"A process: hit keyboard to receive from B process"<<endl; getchar(); } UnmapViewOfFile(pBuf); CloseHandle(hMapFile); return 0; } //b.cpp #include <iostream> #include <Windows.h> #include <tchar.h> using namespace std; #define BUF_SIZE 256 TCHAR szName[]=TEXT("Global\\MyFileMappingObject"); //指向同一块共享内存的名字 int main() { HANDLE hMapFile; LPCTSTR pBuf; hMapFile = CreateFileMapping( INVALID_HANDLE_VALUE, // use paging file NULL, // default security PAGE_READWRITE, // read/write access 0, // maximum object size (high-order DWORD) BUF_SIZE, // maximum object size (low-order DWORD) szName); // name of mapping object if (hMapFile == NULL) { _tprintf(TEXT("Could not create file mapping object (%d).\n"), GetLastError()); return 1; } pBuf = (LPTSTR) MapViewOfFile(hMapFile, // handle to map object FILE_MAP_ALL_ACCESS, // read/write permission 0, 0, BUF_SIZE); if (pBuf == NULL) { _tprintf(TEXT("Could not map view of file (%d).\n"), GetLastError()); CloseHandle(hMapFile); return 1; } //从main开始至此,A B process代码一样,都是获取名为"Global\\MyFileMappingObject"的共享内存的指针 //以下代码,B不停写共享内存pBuf while(1) { TCHAR s[BUF_SIZE]; cout<<"B process: plz input sth. to be transfered to A process."<<endl; cin>>s; memcpy((PVOID)pBuf, s, BUF_SIZE); } }

a123456678 2019-12-02 01:58:49 0 浏览量 回答数 0

回答

声明为的局部变量static具有整个正在运行的程序的生命周期,通常存储在数据段中。编译器通过在其中包含值的部分来实现此目的。 未声明为静态的局部变量通常位于堆栈中,并且每次输入变量的作用域时都必须初始化。 查看该static案例的程序集,MSVC 2015输出以下内容: ; Listing generated by Microsoft (R) Optimizing Compiler Version 19.00.24215.1 TITLE MyLBP.c .686P .XMM include listing.inc .model flat INCLUDELIB LIBCMT INCLUDELIB OLDNAMES CONST SEGMENT ?Arr@?1??tfuuuuuuu@@9@9 DQ 04060c00000000000r ; 134 ; tfuuuuuuu'::2'::Arr DQ 03fe15efd20a7955br ; 0.542845 DQ 03fdf59701e4b19afr ; 0.489834 DQ 0bfd8e38e9ab7fcb1r ; -0.388889 DQ 0bfe59f22c01e68a1r ; -0.675676 DQ 0bfeb13b15d5aa410r ; -0.846154 DQ 0bfe2c2355f07776er ; -0.586207 DQ 03fefffffbf935359r ; 1 ... ORG $+1036128 CONST ENDS PUBLIC _tfuuuuuuu EXTRN __fltused:DWORD ; Function compile flags: /Odtp _TEXT SEGMENT _Ind$ = 8 ; size = 4 _tfuuuuuuu PROC ; File c:\users\dennis bush\documents\x2.c ; Line 4 push ebp mov ebp, esp ; Line 106 mov eax, DWORD PTR _Ind$[ebp] fld QWORD PTR ?Arr@?1??tfuuuuuuu@@9@9[eax*8] ; Line 107 pop ebp ret 0 _tfuuuuuuu ENDP _TEXT ENDS END 虽然gcc 4.8.5输出以下内容: .file "MyLBP.c" .text .globl tfuuuuuuu .type tfuuuuuuu, @function tfuuuuuuu: .LFB0: .cfi_startproc pushq %rbp .cfi_def_cfa_offset 16 .cfi_offset 6, -16 movq %rsp, %rbp .cfi_def_cfa_register 6 movl %edi, -4(%rbp) movl -4(%rbp), %eax cltq movq Arr.1724(,%rax,8), %rax movq %rax, -16(%rbp) movsd -16(%rbp), %xmm0 popq %rbp .cfi_def_cfa 7, 8 ret .cfi_endproc .LFE0: .size tfuuuuuuu, .-tfuuuuuuu .section .rodata .align 32 .type Arr.1724, @object .size Arr.1724, 1238400 Arr.1724: .long 0 .long 1080082432 .long 547853659 .long 1071734525 .long 508238255 .long 1071602032 .long 2595749041 .long -1076305010 .long 3223218337 ... .ident "GCC: (GNU) 4.8.5 20150623 (Red Hat 4.8.5-16)" .section .note.GNU-stack,"",@progbits 因此,它们都全局定义数据并直接引用该全局数组。 现在让我们看一下非静态代码。VSMC2015的第一名: ; Listing generated by Microsoft (R) Optimizing Compiler Version 19.00.24215.1 TITLE MyLBP.c .686P .XMM include listing.inc .model flat INCLUDELIB LIBCMT INCLUDELIB OLDNAMES PUBLIC _tfuuuuuuu PUBLIC __real@3e45798ee2308c3a PUBLIC __real@3f40e1cf9350aa3c PUBLIC __real@3f43b1f90beff84b PUBLIC __real@3f4c6220dc6e8066 PUBLIC __real@3f4ea4c648794089 PUBLIC __real@3f50023666188dc0 PUBLIC __real@3f53957e56f300e9 PUBLIC __real@3f55235d7d33b25f PUBLIC __real@3f5828f66e5bd33a PUBLIC __real@3f5c044284dfce31 PUBLIC __real@3f5c87c05341c674 ... EXTRN @__security_check_cookie@4:PROC EXTRN __chkstk:PROC EXTRN _memset:PROC EXTRN ___security_cookie:DWORD EXTRN __fltused:DWORD ; COMDAT __real@bff0000000000000 CONST SEGMENT __real@bff0000000000000 DQ 0bff0000000000000r ; -1 CONST ENDS ; COMDAT __real@bfefffffdfc9a9ad CONST SEGMENT __real@bfefffffdfc9a9ad DQ 0bfefffffdfc9a9adr ; -1 CONST ENDS ; COMDAT __real@bfefffffbf935359 CONST SEGMENT __real@bfefffffbf935359 DQ 0bfefffffbf935359r ; -1 CONST ENDS ; COMDAT __real@bfefffff9f5cfd06 CONST SEGMENT __real@bfefffff9f5cfd06 DQ 0bfefffff9f5cfd06r ; -1 CONST ENDS ; COMDAT __real@bfefffff7f26a6b3 CONST SEGMENT __real@bfefffff7f26a6b3 DQ 0bfefffff7f26a6b3r ; -1 CONST ENDS ; COMDAT __real@bfefffff5ef05060 CONST SEGMENT __real@bfefffff5ef05060 DQ 0bfefffff5ef05060r ; -1 CONST ENDS ... ; Function compile flags: /Odtp _TEXT SEGMENT _Arr$ = -1238404 ; size = 1238400 __$ArrayPad$ = -4 ; size = 4 _Ind$ = 8 ; size = 4 _tfuuuuuuu PROC ; File c:\users\dennis bush\documents\x2.c ; Line 4 push ebp mov ebp, esp mov eax, 1238404 ; 0012e584H call __chkstk mov eax, DWORD PTR ___security_cookie xor eax, ebp mov DWORD PTR __$ArrayPad$[ebp], eax ; Line 5 movsd xmm0, QWORD PTR __real@4060c00000000000 movsd QWORD PTR _Arr$[ebp], xmm0 movsd xmm0, QWORD PTR __real@3fe15efd20a7955b movsd QWORD PTR _Arr$[ebp+8], xmm0 movsd xmm0, QWORD PTR __real@3fdf59701e4b19af movsd QWORD PTR _Arr$[ebp+16], xmm0 movsd xmm0, QWORD PTR __real@bfd8e38e9ab7fcb1 movsd QWORD PTR _Arr$[ebp+24], xmm0 movsd xmm0, QWORD PTR __real@bfe59f22c01e68a1 movsd QWORD PTR _Arr$[ebp+32], xmm0 movsd xmm0, QWORD PTR __real@bfeb13b15d5aa410 movsd QWORD PTR _Arr$[ebp+40], xmm0 movsd xmm0, QWORD PTR __real@bfe2c2355f07776e movsd QWORD PTR _Arr$[ebp+48], xmm0 ... push 1036128 ; 000fcf60H push 0 lea eax, DWORD PTR _Arr$[ebp+202272] push eax call _memset add esp, 12 ; 0000000cH ; Line 106 mov ecx, DWORD PTR _Ind$[ebp] fld QWORD PTR _Arr$[ebp+ecx*8] ; Line 107 mov ecx, DWORD PTR __$ArrayPad$[ebp] xor ecx, ebp call @__security_check_cookie@4 mov esp, ebp pop ebp ret 0 _tfuuuuuuu ENDP _TEXT ENDS END 初始化程序仍存储在全局中。但是,请注意如何在内部给每个值一个名称,并为array中的每个值生成2条移动指令。创建这些名称和明确的动作是为什么生成代码需要这么长时间的原因。 现在是gcc 4.8.5版本: .file "MyLBP.c" .section .rodata .align 32 .LC0: .long 0 .long 1080082432 .long 547853659 .long 1071734525 .long 508238255 .long 1071602032 .long 2595749041 .long -1076305010 .long 3223218337 .long -1075470558 ... .text .globl tfuuuuuuu .type tfuuuuuuu, @function tfuuuuuuu: .LFB0: .cfi_startproc pushq %rbp .cfi_def_cfa_offset 16 .cfi_offset 6, -16 movq %rsp, %rbp .cfi_def_cfa_register 6 subq $1238416, %rsp movl %edi, -1238404(%rbp) leaq -1238400(%rbp), %rax movl $.LC0, %ecx movl $1238400, %edx movq %rcx, %rsi movq %rax, %rdi call memcpy ; <-------------- call to memcpy movl -1238404(%rbp), %eax cltq movq -1238400(%rbp,%rax,8), %rax movq %rax, -1238416(%rbp) movsd -1238416(%rbp), %xmm0 leave .cfi_def_cfa 7, 8 ret .cfi_endproc .LFE0: .size tfuuuuuuu, .-tfuuuuuuu .ident "GCC: (GNU) 4.8.5 20150623 (Red Hat 4.8.5-16)" .section .note.GNU-stack,"",@progbits gcc不会生成明确的指令来复制每个值,而只是调用memcpy将值从全局数据复制到本地数组中,因此生成初始化代码要快得多。 因此,故事的寓意是MSVC在初始化局部变量方面效率非常低下。 另外,如评论中所述,这是已确认的错误,将在VS 2019中修复。 分享

保持可爱mmm 2020-02-09 13:50:21 0 浏览量 回答数 0

回答

运行regedit打开注册表管理器。 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System\ 创建两级文件夹,也就是新建项。CredSSP\Parameters 然后再Parameters下新建DWORD 32位,修改名称AllowEncryptionOracle。 双击修改值为2.

似水的流年 2019-12-02 00:51:10 0 浏览量 回答数 0

回答

同样数据类型用数组就可以了。typedef unsigned short DWORDDWORD dwMsgTable[] = {WM_NULL,WM_ENTERSIZEMOVE 。。。。。。};size_t MSG_TABLE_LEN = sizeof(dwMsgTable)/sizeof(DWORD);这个是为了遍历所有window消息吧,C的话用 switch是不是更好呢

杨冬芳 2019-12-02 02:27:19 0 浏览量 回答数 0

问题

为什么会报错哦?关于C++锁的使用?报错

爱吃鱼的程序员 2020-06-12 11:07:15 0 浏览量 回答数 1

回答

我瞎猜的啊,不一定对。我觉得你这个问题可能是这样的。 1)64 是IMAGE_DOS_HEADER的大小吧。 2)你正确的那个,是两个纯数字相加。然后把结果强制类型转换成指针。 3)错误的那个,是把pCurrentModelDosHeader当作一个指向数组的指针,并把这个指针的位置后移pCurrentModelDosHeader->e_lfanew个单元。换句话说,错误的那个结果应该是等于 ((DWORD)pCurrentModelDosHeader + pCurrentModelDosHeader->e_lfanew * sizeof(IMAGE_DOS_HEADER)) ######@Lance_Ric 不客气,是我不小心蒙上了。######谢谢你######对哦,编译器似乎的确是看成指针数组处理了,我一直认为p+XX才是当做数组处理,没想到倒过来也会被这么处理。 就是winnt.h里面定义的DosHeader。###### 引用来自“chrisg”的评论 我瞎猜的啊,不一定对。我觉得你这个问题可能是这样的。 1)64 是IMAGE_DOS_HEADER的大小吧。 2)你正确的那个,是两个纯数字相加。然后把结果强制类型转换成指针。 3)错误的那个,是把 pCurrentModelDosHeader当作一个指向数组的指针,并把这个指针的位置后移pCurrentModelDosHeader->e_lfanew个单元。换句话说,错误的那个结果应该是等于 ((DWORD)pCurrentModelDosHeader + pCurrentModelDosHeader->e_lfanew * sizeof(IMAGE_DOS_HEADER)) chrisg解释地应该很清楚了。 对于一个指针变量p,和一个unsigned int的变量n相加,p+n相当于p[n]。 你需要的是 (IMAGE_NT_HEADERS32*)(pCurrentModelDosHeader->e_lfanew + (unsigned char *)pCurrentModelDosHeader) (我看到过n[p]相当于n+p的说法,不过没试过。。。) ######嗯,我试验过了,的确成立,谢谢。######为什么指针本身应该就是dword类型的啊?######应为目标程序是32位######确实好

kun坤 2020-05-29 14:51:02 0 浏览量 回答数 0

回答

你取句柄的地址是要干什么呢? “ DWORD* i = &FileMapping;”######哦对,哈哈,我没用mapviewoffile######iConTent的指向已经错了。没必要进行这样复杂的转换!

kun坤 2020-06-06 16:41:58 0 浏览量 回答数 0

回答

用参数不就好了 class myclass{ //.. void startthread(); void myfun(){ //.. }; } void threafun(void * pv) { ((myclass*)pv)->myfun(); } return pv; }; void myclass::startthread() { DWORD id = 0; CreateThread(0, 0, (LPTHREAD_START_ROUTINE)(threafun), (void*)this, 0, &id); }

a123456678 2019-12-02 01:59:20 0 浏览量 回答数 0

问题

C API调MySQL长时间运行会导致连接失败问题?

蛮大人123 2019-12-01 19:48:20 1458 浏览量 回答数 1
阿里云大学 云服务器ECS com域名 网站域名whois查询 开发者平台 小程序定制 小程序开发 国内短信套餐包 开发者技术与产品 云数据库 图像识别 开发者问答 阿里云建站 阿里云备案 云市场 万网 阿里云帮助文档 免费套餐 开发者工具 云栖号物联网 小程序开发制作 视频内容分析 企业网站制作 视频集锦 代理记账服务 2020阿里巴巴研发效能峰会 企业建站模板 云效成长地图 高端建站 云栖号弹性计算 阿里云云栖号 云栖号案例 云栖号直播