Tag: windows ce

Windows CE 6远程调试。 暂停程序时没有调用堆栈

我正在使用Visual Studio 2008与WindowsCE 6.0进行远程调试会话。 当我点击“暂停”时,我看不到程序调用堆栈。 而不是具有我的程序的任何function的调用堆栈,我只看到一个地址。 我正在使用这里描述的调试技术 (或在这里用德语 )

从托管应用程序调用的本机DLL的堆栈溢出

当我调用本机DLL时,我从我的应用程序中得到了臭名昭着的0xC00000FD (堆栈溢出)exception。 这是通过Windows CE 5(SH4处理器)上的托管C#应用程序完成的。 使用相同的托管应用程序为Windows XP编译相同的DLL,一切正常(没有溢出)。 DLL中的例程正在进行一些非常复杂的递归,这最终导致溢出,但同样,它在PC上运行良好。 看起来我可能只需要在构建DLL时调整堆栈大小? 我相信使用Visual C编译器时,CE和XP的默认堆栈大小都是1MB(我使用Visual Studio 2005,如果这很重要)。 如果它们都默认为相同的大小,我不确定为什么会溢出而另一个不会。 我尝试使用/ F编译器标志和/ STACK链接器标志调整堆栈大小,但似乎没有做任何事情。 我也不完全清楚我可以在DLL中指定堆栈大小,而是可执行文件必须设置它。 但是,如果是这样的话,我如何调整托管进程在调用本机DLL时使用的堆栈大小?

C和Windows API之间有什么关系?

我在SO上查看了一些其他问题,并且不清楚c是否构建在WINAPI之上,之下或旁边。 例如,有人可以用纯c写一些能够打开窗口的东西,还是需要使用windows api? 我注意到打开文件(fopen)的c(库?)版本与windows API版本(CreateFile)之间的相似之处让我想知道是否只是另一个的包装器。 有人知道吗? 如果Windows正在运行; 是一个程序员被迫使用windows api编程来运行它,或者程序员根本不使用windows api并直接访问硬件(即Windows操作系统是否保护对硬件的访问)? 哪个在windows ce的不同版本的windows之间更容易移植。 我发现的文档(现在已经改变了)曾经说过CreateFile只能回到windows ce的2.0版本(这里: http : //msdn.microsoft.com/en-us/library/ms959950.aspx – 请注意注意事项在最底部的链接上显示支持的版本信息已更改)。 那么应该用于windows ce版本1的是什么? 换句话说,使用c函数编程或标记为WINAPI的函数更可能适用于所有版本的Windows CE? 我在一本关于编程windows ce的书中读到以下内容并且它使我感到困惑,所以在理解以下内容时可以更好地理解上述所有问题: Windows CE支持在Windows NT和Windows 98上找到的大多数相同的文件I / O函数。支持相同的Win32 API调用,如CreateFile,ReadFile,WriteFile和CloseFile。 但是,Windows CE程序员必须注意一些差异。 首先,Windows CE不支持标准C文件I / O函数,如fopen,fread和fprintf。 同样,不支持旧的Win16标准,_lread,_lwrite和_llseek。 这不是一个很大的问题,因为所有这些函数都可以通过用少量代码包装Windows CE文件函数来轻松实现。 我对包装的理解是你必须有一些东西可以包装,考虑到win16和c库不可用,他是否说要包装CreateFile函数来制作你自己的类似fopen的版本? (我所知道的唯一另一件事是assembly,如果这是他建议包装的话,就不会以这种随意的方式写出来。) 鉴于上述情况,c语言(语法,数据结构,流控制),c函数库(例如fopen)和windows api(例如CreateFile)之间的依赖关系是什么?

QueryPerformanceCounter()测试Windows Embedded Compact 7

循环遍历QueryPerformanceCounter()并保存值: // Main loop for timer test for ( int i = 0; i < ITERATIONS; i++ ) // ITERATIONS = 1000 { QueryPerformanceCounter(&li); time[i] = double(li.QuadPart) / PCFreq; //1,193,182 per second } //calculate the difference between each call // and save in difference[] for ( int j = 0; j < (ITERATIONS – 1) […]

如何从fopen FILE结构中获取文件HANDLE?

fopen函数返回一个指向FILE结构的指针,该结构应被视为不透明值,而不处理其内容或含义。 在Windows上,C运行时是Windows API的包装, fopen函数依赖于CreateFile函数。 CreateFile函数返回一个HANDLE ,由其他Windows API使用。 现在,我需要在使用fopen和FILE*的库内部使用Windows API。 那么:有没有办法从FILE结构中获取HANDLE ? 由于这是特定于编译器的,我的意思是在MSVC运行时库上。 我知道这将是一个丑陋的,不可移植的黑客,如果微软改变FILE的内部格式,可能会破坏…但我正在开发一个封闭的系统(即在Windows CE嵌入式系统上)并重构图书馆既困难又耗时。