草庐IT

windows - 为什么 Windows 团队复制 "Program Files"文件夹以支持 x86 和 x64?

关闭。这个问题是off-topic.它目前不接受答案。想改进这个问题吗?Updatethequestion所以它是on-topic用于堆栈溢出。关闭10年前。Improvethisquestion一个经常让我困惑的问题是,为什么Windows团队决定复制ProgramFiles文件夹以支持32位和64位平台?从长远来看,这不会给每个人带来更多的工作和困惑吗?促使他们复制树而其他一些系统保留单个“程序文件”目录(有点像MAC的通用二进制格式http://en.wikipedia.org/wiki/Universal_binary)的关键因素是什么?我敢肯定他们创建这个“ProgramFi

windows - 一个简单的 MASM32 程序的奇怪行为

我想编写类似于以下C++程序的MASM程序:#include#includetypedefUINT(_stdcall*FuncPtr)(LPCSTRlpCmdLine,UINTuCmdShow);intmain(void){HMODULEhDll=LoadLibrary(TEXT("Kernel32.dll"));FuncPtrfunc_addr=reinterpret_cast(GetProcAddress(hDll,"WinExec"));(*func_addr)("C:\\WINDOWS\\system32\\calc.exe",SW_SHOWDEFAULT);FreeLibra

linux - OMP 与 x86_64-w64-mingw32-g++ 交叉编译

我在交叉编译利用openMP库的C++程序时遇到了一些问题。我正在使用LinuxUbuntu12.04LTS。我想获取可在Windows上运行的可执行文件。使用常规g++命令使用OMP编译我的程序没有问题:g++a.cppb.cpp-oOMPres-pg-O3-I./CBLAS/include-L./-lcblas另外,当我在没有OMP的情况下尝试交叉编译时,一切都运行良好:x86_64-w64-mingw32-g++a.cppb.cpp-O3-I./CBLAS/include./CBLAS/cblas_WIN64.a./BLAS/blas_WIN64.a-ores.exe-lgfor

windows - 页面文件中的物理页面和页面之间有什么关系?

在Windows下,内核可以将物理内存页面交换到页面文件中的页面。为简单起见,我们假设只有一个分页文件。据我了解,分页文件由与物理内存页面大小相同的页面组成。即4K。我只是想知道:内核如何知道页面文件中的哪个页面空闲可以存储?(这里的空闲是指分页文件中的页面之前没有存储过其他物理内存页面。) 最佳答案 存在过度简化的风险。..实现虚拟内存的通常方法是磁盘是主要存储。除非有到文件的映射,否则虚拟页面不存在。该映射在流程的生命周期内保持不变。磁盘上的虚拟内存在可用时映射到物理内存。内核维护一些数据结构(例如位图)以指示页面文件的空闲区域

windows - 在 WiX 中禁用 WIN64DUALFOLDERS 替换

我有一个链接2个MSI文件的设置:安装我的产品的x86/x64MSI文件。部署第三方工具包的x86MSI文件我希望第二个MSI文件使用相同的安装目录,因此MSI文件1将用户选择的目录存储在注册表中,然后MSI文件2读取该目录并将其用作其目标。很好,花花公子-如果我将MSI文件1安装到C:\Test\没问题-MSI文件2选择它并将工具包放入该文件夹。但是,当我安装到C:\ProgramFiles时......然后MSI文件2变得有点聪明,并决定我一定是指C:\ProgramFiles(x86)并将工具放在那里-有点乱。它在执行时会记录此信息:Actionstart16:53:59:App

windows - 如何更改 MASM32 中的链接器设置

我在Windows7(64位)中使用MASM32编辑器。默认情况下,我的链接器是“增量链接器版本5.12.8078”,它不链接我的程序。我想使用这个链接器“Microsoft(R)分段可执行链接器版本5.60.3391994年12月5日”。请告诉我如何更改我的MASM32设置并使其成为默认链接器 最佳答案 在编辑器中加载\masm32\menus.ini(您可以使用MASM32编辑器)。向下滚动到&RunProgram,"{b}.exe"[&Tools]插入两行:&RunProgram,"{b}.exe"-Build16-bit,c

c# - x64 机器上 x86 LARGEADDRESSAWARE 程序的内核模式内存大小?

标题几乎概括了它。我有一个为x86平台编译的应用程序,它设置了/largeaddressaware标志。在x64系统上运行它,我“免费”获得了扩展的4GB用户模式虚拟内存,而无需指定/3GB启动选项。在x86系统上,这意味着内核模式内存仅为1GB,但由于x64系统可以寻址更多内存,内核模式是否会保留2GB甚至增加到3GB?编辑:明确地说,我想知道每个进程的限制。问题源于阅读thisarticle.编辑2:这个问题不是Howmuchmemorycana32bitprocessaccessona64bitoperatingsystem?的重复问题因为该问题仅涉及应用程序可访问的内存,而不是

windows - PE 可选 header 中的 SizeOfImage 是如何计算的?

HowisSizeOfImageinthePEoptionalheadercomputed?在尝试学习PE格式时,我遇到了可选header中的SizeOfImage字段。引用文档:Thesize(inbytes)oftheimage,includingallheaders,astheimageisloadedinmemory.ItmustbeamultipleofSectionAlignment.但是,我遇到过,如果我错误地设置了这个字段,那么可执行文件将不会运行,并且会显示一个error193(可执行文件格式错误):我如何计算SizeOfImage字段,如果设置错误,为什么可执行文件

windows - ReadConsoleInputA 引发访问冲突

我正在尝试学习如何使用Windowsapi(而不是仅仅使用C调用、irvine32或masm32)并且遇到了ReadConsoleInputA的问题(WriteConsoleA工作正常)。此外,我不明白为什么在函数的PROC原型(prototype)中,大多数示例在ReadConsoleInput/WriteConsole的末尾附加一个A或W,您能解释一下为什么吗?.dataconsoleOutHandledd?consoleInHandledd?bufferlendd?bufferdb?bufferSizeDWORD?messagedb"Enteranumber:",0lmessag

windows - 将字符串参数传递给 PROC

我想调用一个函数,该函数将对用户键入的字符串执行大写到小写的转换,同时保留特殊字符。这部分有效,但仅适用于前4个字符,之后的所有字符都会被截断。我相信这是因为我将参数定义为DWORD:我试过使用PAGE、PARA和BYTE。前两个不起作用,字节表示类型不匹配。upperToLowerproc,source:dword,auxtarget:dwordmoveax,source;Pointtostringmovebx,auxtarget;pointtodestinationL1:movdl,[eax];Getacharacterfrombuffercmpbyteptr[eax],0;End