问题标签 [winapi]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
134 浏览

winapi - 为 WinXP、Vista 编写注册表调用/文件系统调用/进程创建过滤器的最佳实践是什么?

我们需要监控系统中的所有进程注册表调用/文件系统调用/进程创建(针对防病毒臀部模块)。

此外,有时还需要延迟或拒绝某些呼叫。

0 投票
4 回答
1925 浏览

winapi - Win32 CreatePatternBrush

MSDN 为 CreatePatternBrush 显示以下内容:

您可以使用 DeleteObject 函数删除图案画笔而不影响关联的位图。因此,您可以使用此位图创建任意数量的图案画笔。

我的问题是相反的。如果 HBRUSH 长期存在,我可以在创建画笔后立即删除 HBITMAP 吗?IE:HBRUSH 是否存储自己的 HBITMAP 副本?

在这种情况下,我希望 HBRUSH 具有对象范围,而 HBITMAP 将具有方法范围(创建 HBRUSH 的方法)。

0 投票
2 回答
3394 浏览

c++ - 停止系统进入“待机”

standby如何在我的应用程序运行时停止主机进入模式?

有没有win32 api要求这样做?

0 投票
14 回答
210213 浏览

objective-c - 用于 Windows 的 Objective-C

在 Windows 平台上编写 Objective-C 的最佳方式是什么?

Cygwin和gcc?有没有办法以某种方式将其集成到 Visual Studio 中?

沿着这些思路 - 是否有任何关于如何链接和使用 Windows SDK 的建议。它是一个不同的野兽,但我知道我可以在 Windows DLL 中编写程序集和链接,让我可以访问这些调用,但我不知道如何在没有谷歌搜索和获取零碎指示的情况下做到这一点。

有没有人知道一个很好的在线或书籍资源来做或解释这些事情?

0 投票
3 回答
1912 浏览

c# - 如何从 C# 调用 AllocateAndInitializeSid 函数?

有人可以给我一个AllocateAndInitializeSid从 C# 代码调用函数的完整且有效的示例吗?

我发现了这个

而且我不知道如何构造此方法的签名 - 我应该如何处理PSID_IDENTIFIER_AUTHORITYPSID类型?我应该如何通过它们 - 使用refor out

0 投票
2 回答
726 浏览

c++ - 文件系统信息——如何查询?

有没有办法通过某种类型的 Windows API 访问文件系统信息?如果不是,用户模式开发人员可以使用哪些其他方法?

0 投票
9 回答
23063 浏览

windows - 如何检测真正的 Windows 版本?

我知道我可以调用 GetVersionEx Win32 API 函数来检索 Windows 版本。在大多数情况下,返回值反映了我的 Windows 版本,但有时并非如此。

如果用户在兼容层下运行我的应用程序,则 GetVersionEx 不会报告真实版本,而是兼容层强制执行的版本。例如,如果我正在运行 Vista 并在“Windows NT 4”兼容模式下执行我的程序,GetVersionEx 不会返回 6.0 版本而是 4.0。

有没有办法绕过这种行为并获得真正的 Windows 版本?

0 投票
3 回答
11973 浏览

winapi - 默认按钮大小?

如何创建一个按钮控件(具有CreateWindow窗口BUTTON类),它具有与其他 Windows 应用程序一致的标准系统范围大小(尤其是高度)?我当然应该考虑 DPI 和其他设置。

备注:使用USE_CW_DEFAULTfor 宽度和高度会导致 0、0 大小的按钮,因此这不是解决方案。

0 投票
5 回答
11367 浏览

windows - Windows CDROM 弹出

有谁知道在 Windows 2000 或更高版本上以编程方式关闭 CD 托盘的方法?存在打开的 CD 托盘,但我似乎无法将其关闭,尤其是在 W2k 下。

如果可能的话,我特别在寻找一种从批处理文件中执行此操作的方法,但是 API 调用就可以了。

0 投票
3 回答
3325 浏览

windows - Windows Server 2003 SP2 是否说出关于免费系统页表条目的真相?

我们有一些在 Windows Server 2003 Service Pack 2 上运行的 Win32 控制台应用程序,这些应用程序经常会因此而失败:

错误 1450 ( ERROR_NO_SYSTEM_RESOURCES):“系统资源不足,无法完成请求的服务。”

我们发现的所有文档都表明它与耗尽的免费系统页表条目的数量有关。我们在这些机器中有 16GB 的 RAM,并使用/3GB操作系统开关将 Windows 内核压缩到 1GB,并允许我们的进程访问 3GB 的地址空间。这大大减少了空闲系统页表条目的总数,因此结合我们大量使用 MapViewOfFile() ,内核页表条目即将耗尽可能并不奇怪。

但是,当使用性能监视器查看 Free System Page Table Entries 计数器时,重新启动时该值约为 36,000,并且在我们的应用程序启动时不会下降。我很难相信我们打开许多大型内存映射文件的应用程序对内核页表没有任何影响。如果我们不能相信计数器,那么要测试我们所做的任何系统更改的效果就会变得更加困难。

有一篇很有前途的知识库文章,性能工具没有准确显示 Windows Server 2003 中可用的免费系统页表条目,但它说问题已在 Service Pack 1 中修复,我们已经在 Service Pack 2 中。

有没有其他人遇到过或解决过这个问题?

更新:我在windbg(调试内核)中检查了!sysptes,该值与性能计数器相匹配,大约为36,000。我想这很可能意味着确实有很多免费的页表条目,而 Windows说的实话。如果 PTE 没有用完,它确实留下了为什么我们会收到 1450 错误的问题。

进一步更新:我们从未深入了解为什么会发生 1450 错误。 但是,我们将这些服务器上的操作系统升级到了 64 位 Windows。这允许现有的 32 位应用程序(无需重新编译)访问完整的 4GB 虚拟地址空间,并让带有那些讨厌的页表条目的内核内存区域也尽可能大。从那以后,我认为我们没有出现 1450 错误。