Articles of winapi

从Windows到Linux的RPC

有一些(工作)的例子如何创buildRPC从Windows到Linux? 客户端应该是Windows NT应用程序,服务器是Linux。 它需要是MSRPC 。 没有Corba,没有XML-RPC,SUN-RPC等等 MSDN说: RPC可用于基于Windows操作系统的所有客户机/服务器应用程序。 它还可以用于为包括Unix和Apple等操作系统的异构networking环境创build客户端和服务器程序。 不幸的是,在谷歌上花了几个小时后,我放弃了。 我的期望: Linux节点应该安装了samba,因为它们的MSRPC实现工作。 使用IDL文件,我为客户端和服务器生成存根 客户端使用MSVC构build 服务器使用gcc与samba(或其他库)的一些包含/库构build, Linux节点必须具有这样的RPC端口映射器 有人能指出我吗?

创build单个的python可执行模块

伙计们,我有很多python代码驻留在几个python包中,现在我需要创build一个包含所有这些文件的单个python可执行模块或文件,所以它将在windows和linux服务器上工作。 什么是可能的解决scheme,以及如何做到这一点?

Linux上SetThreadPriority的等效(pthreads)

考虑到下面的一些代码,我想知道在linux下假设pthreads甚至是使用Boost.Thread API的代码是多less。 #include <windows.h> int main() { SetThreadPriority(GetCurrentThread(),THREAD_PRIORITY_HIGHEST); return 0; }

是否有类似于Windows WINAPI的Core Linux API,特别是用于创buildGUI应用程序?

我正在从Windows编程(通过Windows编程我的意思是使用Windows API )到Linux编程。 对于编程Windows,我们有的选项是Win32API(MFC只是一个相同的C ++包装)。 我想知道是否有像直接暴露给程序员的Linux API (相当于WINAPI)? 我在哪里可以find参考? 用我对POSIX库的一点知识,我发现它包装了 Linux API 一部分 。 但是创buildGUI应用程序呢? POSIX不提供这一点。 我知道有很多像GTK,Qt等第三方Widget工具包。但我不想使用封装Linux API的库。 我想学习使用“核心Linux API”。 如果有什么我应该知道的,请告知。 任何熟悉Windows和Linux编程的程序员,请映射Linux世界的术语,以便我可以快速移动。 任何资源(书籍,教程, 参考 ),高度赞赏。

如何在C ++中创build一个临时目录?

我正在用C ++编写一个函数来创build一个临时目录。 这样的function应该尽可能便携,例如它应该在linux,mac和win32环境下工作。 我如何做到这一点?

有没有人能够创造PE COFF和ELF的混合体?

我的意思是一个二进制文件可以在Win32和Linux i386上运行吗?

如何执行Windows身份validation?

SQL Server,文件和打印机共享,Exchange以及许多其他应用程序都可以根据用户的Windows标识对用户进行身份validation。 他们如何做到这一点? 特别是,我该怎么做? 作为一个具体的例子,在下面的方法中完成原生Windows代码: Boolean IsCurrentUserValidForDomain(String domainName) { //TODO: Ask Stackoverflow to fill in the code here } 我可以让我们开始: Boolean IsCurrentUserValidForDomain(String domainName) { //Get the security token associated with the thread TOKEN userToken; // Get the calling thread's access token. if (!OpenThreadToken(GetCurrentThread(), TOKEN_QUERY, true, out userToken) { if (GetLastError != ERROR_NO_TOKEN) throw new Exception("Could […]

用于虚拟内存pipe理的新的Windows 8.1 API:`DiscardVirtualMemory()`与`VirtualAlloc()`和`MEM_RESET`和`MEM_RESET_UNDO`

Windows 8.1 / Server 2012RC2刚刚推出了虚拟内存pipe理的新API: OfferVirtualMemory() , ReclaimVirtualMemory() , DiscardVirtualMemory() ,它们的用法非常简单,只需查看它们的名称即可。 我无法得到的是这些API对VirtualAlloc()加上标志MEM_RESET和MEM_RESET_UNDO ,以及这些细微的差别是什么。 对于OfferVirtualMemory() ,MSDN认为它与VirtualAlloc() + MEM_RESET非常相似,不同之处在于它从工作集中删除页面,并限制对页面的进一步访问。 所以,基本上它限制对页面的访问,如果我想再次访问这些页面,我必须调用ReclaimVirtualMemory() ,这很好,但不应该MEM_RESET也从工作集中删除页面? 不应该MEM_RESET作为madvise(2)的POSIX MADV_DONTNEED标志,它基本上从进程的页表中删除页面,如果我将来再次访问这些页面,访问将产生一个软错误,这些页面将再次重新分配,初始化为零。 如果这是真的,那么当然,页面将从进程的工作集中被移除,因为即使进程保持分配的虚拟地址,并且看到它们“提交”,它们也基本上被释放。 现在我们来看看DiscardVirtualMemory() :这里MSDN没有提到MEM_RESET标志,但是如果我读了这个API的描述,它看起来和VirtualAlloc() + MEM_RESET 。 那么,有没有人知道这些API之间是否存在一些差异,以及这些细微差别的恰当用例是什么? 如果他们引入了像DiscardVirtualMemory()这样的新的API,那么与旧的方法应该有一些区别。 如果我想从POSIX移植一个使用madvise(2)与MADV_DONTNEED和MADV_WILLNEED的应用程序,那么模仿这个POSIX行为的最好方法是什么? 到目前为止,我使用了MADV_DONTNEED VirtualAlloc() + MEM_RESET_UNDO和MADV_WILLNEED VirtualAlloc() + MADV_WILLNEED 。 没关系,或者我可以用这些新的API做得更好?

我如何获得每个显示器的尺寸(分辨率)?

我需要帮助如何检索我的屏幕的分辨率,如下图所示。 我发现这个文档 ,这真的很有帮助。 以下是我尝试的代码,基于这些文档: int numberOfScreens = GetSystemMetrics(SM_CMONITORS); int width = GetSystemMetrics(SM_CXSCREEN); int height = GetSystemMetrics(SM_CYSCREEN); std::cout << "Number of monitors: " << numberOfScreens << "\n"; // returns 3 std::cout << "Width:" << width << "\n"; std::cout << "Height:" << height << "\n"; 但是,它只能识别和提供有关主监视器的信息。 我如何获得有关其他显示器的信息?

Winapi:LOGON32_LOGON_INTERACTIVE是否提供受限令牌?

我想了解的是LogonUser与LOGON32_LOGON_INTERACTIVE是否产生受限令牌或不? 这是我的代码: int davai() { FILE * fp; fp = fopen ("C:\\tmp\\davai.txt", "a"); fprintf(fp, "shevedi davai"); fflush(fp); HANDLE token = NULL; HANDLE dupToken = NULL; if(!OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY | TOKEN_DUPLICATE, &token)) { fprintf(fp, "davai: OpenProcessToken cheijva. %d\n", (int)GetLastError()); fflush(fp); } if (DuplicateTokenEx(token, MAXIMUM_ALLOWED, NULL, SecurityDelegation, TokenPrimary, &dupToken) == 0) { fprintf(fp, "davai: OpenProcessToken DuplicateTokenEx. %d\n", (int)GetLastError()); […]