c++ - 使用 Windows API 检索打开的文件描述符的数量

标签 c++ windows winapi file-io file-descriptor

我想知道我在我的 C++ 应用程序中打开了多少个文件描述符。这可以使用 Windows API 函数完成吗?

最佳答案

您可以使用 GetFileType 询问进程中的每个句柄.

      DWORD type_char = 0, 
      type_disk = 0, 
      type_pipe = 0, 
      type_remote = 0, 
      type_unknown = 0,
      handles_count = 0;

GetProcessHandleCount(GetCurrentProcess(), &handles_count);
handles_count *= 4;
for (DWORD handle = 0x4; handle < handles_count; handle += 4) {
    switch (GetFileType((HANDLE)handle)){
        case FILE_TYPE_CHAR:
            type_char++;
            break;
        case FILE_TYPE_DISK:
            type_disk++;
            break;
        case FILE_TYPE_PIPE: 
            type_pipe++;
            break;
        case FILE_TYPE_REMOTE: 
            type_remote++;
            break;
        case FILE_TYPE_UNKNOWN:
            if (GetLastError() == NO_ERROR) type_unknown++;
            break;

    }

}

关于c++ - 使用 Windows API 检索打开的文件描述符的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15357961/

相关文章:

C++ - 使用 std::string 的内容调用同名的类实例

c++ - C win32 应用程序

Linux 上的 Java 编译问题,使用特定于 Windows

c - 在销毁它之前确保没有线程在等待临界区

c++ - IMMDevice::Activate() 与 IBaseFilter 返回 REGDB_E_CLASSNOTREG 类未注册

c# - C++ 与 C# - 数组

c++ - 一个 vector 中的两种类型的值 C++

c++ - TinyXML 在最后位置插入。

windows - 有没有一种简单的方法可以将 IP 数据包从用户空间 Windows 应用程序路由到网络?

c++ - Windows 上的 Emacs 标签/导航?