Articles of c + +

如何debugging挂起的WPF应用程序?

我有一个挂在一个用户的机器上的WPF应用程序。 其他用户不受影响。 该应用程序挂起运行本身的开发环境,同时在debugging运行。 这个问题可以被可靠地重现,只要用户试图去做就会挂起。 在debugging下运行没有线索,没有任何exception,应用程序只是停止响应。 我有什么select来debugging呢? 是否有任何外部工具 – 像sysinternals套件的东西 – 可以帮助? 是否有任何Visual Studiodebugging器技巧或技巧,可能会提供更多的信息?

读取内存时出现访问冲突

背景 我正在用Visual Studio 2013 Community Edition编写命令行C ++程序。 它通过LDAP连接到Active Directory服务器,并在一些属性(例如:办公地点,部门)中检索唯一值列表。 问题 该程序编译好,但我遇到一个内存访问问题,当我运行它: Unhandled exception at 0x74EDC6B1 (Wldap32.dll) in LdapSearchResultTest1.exe: 0xC0000005: Access violation reading location 0xCCCCCCCC. 这是我第一次使用C ++与外部库,所以我不知道如何甚至接近debugging(通常我为Android写Java)。 我花了一天的更好的时间来看看这个问题,并根据类似问题的答案尝试一些想法,但是我仍然无法解决这个问题。 确切的问题在于这个函数调用的最后一个参数: // Do the search int searchReturnCode = ldap_search_s( ldapSession, &searchBase[0], LDAP_SCOPE_SUBTREE, filter, pAttributes, 0, &pSearchResults); // Error is here 我的代码 我的代码是基于MSDN网站的一个例子,我已经在代码中复制了这个例子。 这是一个certificate这个问题的SSCCE : #include<iostream> #include<Windows.h> #include<Winldap.h> #include<WinBer.h> […]

testingWindows应用程序的运行状况

我有几个应用程序是我们工作室的各种开发人员使用的一套工具的一部分。 这些应用程序主要是打开DOS cmd shell的命令行应用程序。 这些应用程序反过来启动一个GUI应用程序,跟踪这些命令行应用程序的输出和状态(通过套接字)。 命令行应用程序可以在用户login时启动,当他们的工作站被locking(他们触发一个batch file,然后立即locking他们的工作),并当他们注销(通过计划的任务)。 我所遇到的问题是最后两种情况。 如果这些应用程序中的任何一个在用户被locking或注销时触发,这些命令将产生跟踪输出/状态的GUI窗口。 这很好,但是说用户的工作站被locking – 当他们解锁工作站时,GUI不可见。 它正在运行任务列表,但不可见。 下一次这些用户运行一些命令行应用程序时,GUI不会启动(因为它已经在运行),但是由于在桌面上不可见,所以用户看不到任何输出。 我正在寻找的是从我的命令行应用程序中分辨出是否在locking的工作站后面运行或用户注销(通过计划的任务)的方式 – 基本上它们在没有用户桌面的情况下运行。 如果我可以说,那么我可以简单地启动我们的GUI,并可以防止很多问题。 我需要testing的这些应用程序是C / C ++ Windows应用程序。 我希望这是有道理的。

如何强制Windows FAT32驱动程序重新加载FAT表?

我正在实现自定义的Windows磁盘驱动程序,并且需要FAT32的Windows驱动程序重新加载FAT表,1和2,这是低于数据部门。 如何做到这一点? 我需要更快的方法,而无需卸载驱动器。 为什么我这样做是因为磁盘是内存虚拟磁盘,在访问扇区过程中从networking中获取数据。 我在即时编写目录数据,它的工作,但不是文件 – 因为在驱动程序获取FAT时 – 群集是免费的,所以文件无法正常工作。 我disasemblefastfastfat.sys,发现了一些要点…至less我发现设备的ioctl代码,可能会重新加载胖表,我会张贴在这里,如果我成功了。

创build暂停/可恢复线程的最佳方法是什么?

我正在做一些networking编程的微处理器发送低缓冲区通知,我有一个线程,写一个设置的信息量。 完成后,需要进入挂起状态并等待低缓冲区通知恢复。 使用Windows的线程池API,还是使用CreateThread()创build的线程更好?

C ++调用远程对象的方法(RPC一样)

我正在寻找一个RPC库,允许我在另一个进程(在Windows)中调用一个对象的成员函数。 当前遇到的问题是一些Serverside对象已经存在并且有多个实例。 服务器应该能够将指针/标识符传递给实现代理的客户端,然后将代理指向远程对象实例。 所以我基本上想要的是这样的: Client: TestProxy test = RemoteTestManager.GetTestById(123); test.echo("bla"); 其中Test的实例已经存在于服务器上,而RemoteTestManager是客户端在另一个rpc调用中获得的服务器上的pipe理器类。 另外,它应该优先运行命名pipe道,因为可能有多台服务器在同一台机器上(实际上我想更像一个简单的IPC:D)。 所以我的问题实际上是:是否有像这样的C ++在那里,或者我必须自己编写一个

在C中__in __out

可能重复: __in __out __in_opt __allowed()的用途是什么,它们是如何工作的? 我应该在自己的代码中使用类似的结构吗? 我在C中看到了一个代码: DWORD GetFileVer(__in LPTSTR FileName, __out LPTSTR lpVersion, __in DWORD nSize) { … } 我试图编译它,但失败了。 谁能告诉我__in和__out是什么意思? 我咨询了MSDN,但是找不到任何有用的信息。 谢谢。

睡眠()function不工作?

我在Windows上的Code :: Blocks中使用GNU GCC编译器。 为什么不睡(秒)在这里工作? 我试过它使用库,它工作正常。 谢谢。 编辑:由“不工作”我的意思是,不编译。 抱歉。 #include <stdio.h> #include <stdlib.h> #include <unistd.h> int main(int argc, char *argv[]){ char * c = (char *) malloc(sizeof(char)*50); if(–argc>0){ printf("POTATO: \n"); while(argc>=1){ printf("- %s\n", argv[argc]); sleep(10); argc–; } printf("\n"); } printf("A\n"); scanf("%s", c); printf("What you wrote: %s\n", c); scanf("%s", c); return 0; }

是否可以忽略UnMapViewOFFile()的错误487(ERROR_INVALID_ADDRESS)?

下午好,我们正在尝试构build一个由Windows和Linux 32位应用程序使用的内存映射文件caching程序的原型。 每当我们运行原型时,当我们尝试调用UnMapViewOfFile来取消映射一个caching的内存映射文件区域时,我们会得到一个错误487(错误无效地址)。 我们认为这是因为我们试图取消映射前一个未映射的区域。 我们想知道是否可以忽略这个错误信息。 我们尽量确保每次调用MapViewOfFile都通过一个UnMapViewOfFile进行匹配,每次调用MapViewOfFile时,我们使用下面的代码: std::deque<Range> ranges_type; std::multimap<char *,Range> mmultimap; MapPtr = (char*)::MapViewOfFile(hMapping, FILE_MAP_WRITE | FILE_MAP_READ, 0, baseoff, mappedlength); if (MapPtr == 0){ DWORD lasterr = GetLastError(); ErrorMessage(lasterr); } ranges_type.insert(RangeDeque::value_type( PreviousNCopy, PreviousN, adjustedptr + n, MapPtr, TimeStamp, mappedlength)); mmultimap.insert(RangeMultiMap::value_type( MapPtr, Range(PreviousNCopy, PreviousN, adjustedptr + n, MapPtr, TimeStamp, mappedlength))); 每次我们取消映射内存映射文件区域时,我们使用以下摘录: typedef std::multimap<char *,Range>::const_iterator I; numerased […]

Visual C ++ – 重写从DLL导入的函数?

我想覆盖kernel32.dll中的特定function。 是否有可能在静态库中重新定义该函数,并强制执行该静态库中的可执行文件? 我想不同的联系可能会成为一个问题。 这将是可以用我自己的自定义DLL覆盖它。 然而,问题是DLL本身需要链接到kernel32.dll,所以它忽略了我对该函数的定义。 编辑:我得到它与我自己的DLL工作。 在构build时,链接时间码生成需要被禁用。 那么静态链接重写的函数呢?