• 参数查阅~~~9.18


    INVALID_HANDLE_VALUE

    INVALID_HANDLE_VALUE 是一个宏定义,表示一个无效的句柄值。在Windows编程中,句柄(Handle)是一种用于标识、引用和操作资源的值,如文件句柄、进程句柄、窗口句柄等。

    INVALID_HANDLE_VALUE 定义为 (HANDLE)(-1),即一个无效的句柄值。它通常用于表示在操作系统函数返回时,句柄无效或发生错误的情况。比如在使用函数如 CreateFile 打开文件时,如果失败了,返回值就可能是 INVALID_HANDLE_VALUE

    在使用句柄的过程中,经常会对句柄的有效性进行检查,以确保句柄的正确性。常见的判断方式就是检查句柄是否等于 INVALID_HANDLE_VALUE,如果等于,则表示句柄无效。

    下面是一个示例,在使用 CreateFile 打开文件时检查句柄的有效性:

    HANDLE hFile = CreateFile(TEXT("file.txt"), GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
    
    if (hFile == INVALID_HANDLE_VALUE) {
        // 文件句柄无效,处理错误或报告错误
        DWORD error = GetLastError();
        // ...
    }
    else {
        // 文件句柄有效,进行后续操作
        // ...
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    对于不同的资源类型,可能会有其他类似的宏定义来表示无效的句柄值,例如 INVALID_SOCKET 用于表示无效的套接字句柄。

    TEXT

    TEXT 是一个宏定义,用于在 Windows 编程中支持 Unicode 和 ANSI 字符串的编译选项下进行字符串文字的转换。

    对于 Unicode 编译选项(如使用 UNICODE_UNICODE),TEXT 宏会将括号内的字符串常量添加 L 前缀,以表示宽字符字符串。

    对于 ANSI 编译选项,TEXT 宏不会对括号内的字符串常量做任何修改,保持其为窄字符字符串。

    因此,TEXT("CreateToolhelp32Snapshot (of processes)") 在 Unicode 编译选项下会被转换为宽字符字符串 L"CreateToolhelp32Snapshot (of processes)",而在 ANSI 编译选项下则保持为窄字符字符串 "CreateToolhelp32Snapshot (of processes)"

    这样的转换可以使得代码在不同编码环境下都能正常工作,并具有良好的兼容性。

    服务枚举的变量

        DWORD dwBufferSize = 0;
        DWORD dwNumberOfServices = 0;
        DWORD dwResumeHandle = 0;
        DWORD dwBytesNeeded = 0;
    
    • 1
    • 2
    • 3
    • 4

    dwBufferSize:用于存储需要缓冲区的大小。在列举服务时,如果提供的缓冲区不足以容纳所有服务信息,这个变量将指示需要更大的缓冲区来接收服务信息。

    dwNumberOfServices:用于存储实际列举到的服务数量。在调用列举服务的函数后,这个变量将反映列举结果中的服务数量。

    dwResumeHandle:用于在多次列举服务时保存上一次列举结束的位置。通过使用这个变量,可以在多次列举中按需获取服务信息。

    dwBytesNeeded:用于存储调用列举服务时需要的缓冲区大小。在调用列举服务的函数后,这个变量将表示实际返回的服务信息所需的缓冲区大小。

    LPENUM_SERVICE_STATUS_PROCESSW

    LPENUM_SERVICE_STATUS_PROCESSW 是一个指向 ENUM_SERVICE_STATUS_PROCESSW 结构体的指针类型。

    ENUM_SERVICE_STATUS_PROCESSW 是一个结构体,用于描述系统中的服务状态信息,包括服务名称、显示名称、当前状态等。它是对 ENUM_SERVICE_STATUS_PROCESS 结构体的宽字符版本。在 Windows 系统编程中,LPENUM_SERVICE_STATUS_PROCESSW 是常用的服务枚举函数(如 EnumServicesStatusExW)的参数类型,用于接收返回的服务状态信息。

    这个结构体的定义通常如下:

    typedef struct _ENUM_SERVICE_STATUS_PROCESSW {
        LPWSTR              lpServiceName;
        LPWSTR              lpDisplayName;
        SERVICE_STATUS_PROCESS  ServiceStatusProcess;
    } ENUM_SERVICE_STATUS_PROCESSW, *LPENUM_SERVICE_STATUS_PROCESSW;
    
    • 1
    • 2
    • 3
    • 4
    • 5

    其中:

    • lpServiceName 是指向服务名称的指针。
    • lpDisplayName 是指向服务显示名称的指针。
    • ServiceStatusProcessSERVICE_STATUS_PROCESS 结构体,包含了关于服务的详细状态信息。

    通过使用 LPENUM_SERVICE_STATUS_PROCESSW,可以方便地获取和操作服务的状态信息。

  • 相关阅读:
    安防视频监控平台EasyCVR服务器部署后出现报错,导致无法级联到域名服务器,该如何解决?
    HADOOP 的 LZO 压缩 hadoop-lzo 编译
    基于改进灰狼优化算法的边缘计算任务调度方法
    一文讲懂GeoHash技术(一)
    应届女生美团 Java 岗 4 面,一次性斩 offfer,我受到了万点暴击
    Reg注册表读写
    Qiankun框架对于微前端的解耦和沙盒与实战探索心得
    STM32F1网络编程-TCP服务器(基于W5500网卡)
    fisco Java-sdk 快速入门案例
    Mysql进阶索引篇03——2个新特性,11+7条设计原则教你创建索引
  • 原文地址:https://blog.csdn.net/m0_72827793/article/details/132950428