rpcErrorGetNextRecord 函数 (rpcasync.h)
RpcErrorGetNextRecord 函数检索枚举句柄的下一个扩展错误信息记录。
语法
RPC_STATUS RpcErrorGetNextRecord(
[in] RPC_ERROR_ENUM_HANDLE *EnumHandle,
[in] BOOL CopyStrings,
[out] RPC_EXTENDED_ERROR_INFO *ErrorInfo
);
参数
[in] EnumHandle
指向枚举句柄的指针,采用 RPC_ERROR_ENUM_HANDLE 结构的形式。 结构必须由调用方分配,在操作完成之前无法释放。 输入时忽略所有成员。
[in] CopyStrings
指定是否将 ErrorInfo 中的字符串字段复制到默认系统堆,此时这些缓冲区的所有权将转移到调用方。
TRUE 指示字符串要复制到系统堆。
FALSE 指示 ErrorInfo 中的字符串指向内部 RPC 数据结构;调用方无法释放或写入它们,并且一旦调用 RpcErrorEndEnumeration 函数,它们就会失效。
[out] ErrorInfo
指向 RPC_EXTENDED_ERROR_INFO 结构的指针。 请参阅“备注”。
返回值
如果 CopyStrings 为 false,则函数调用不能失败,除非其参数无效。 检索到最后一条扩展错误记录时, RpcErrorGetNextRecord 返回RPC_S_OK。 任何后续调用都返回RPC_S_ENTRY_NOT_FOUND。
出现任何错误时,枚举位置不会提前。
注意 有关有效错误代码的列表,请参阅 RPC 返回值。
注解
输入时,必须在 ErrorInfo 中设置以下字段:
- 版本 必须设置为RPC_EEINFO_VERSION。
- NumberOfParameters 必须设置为介于零和 MaxNumberOfEEInfoParams 之间的值。 调用方可以自由地为任意数量的参数提供空间。 如果调用方提供的参数数小于扩展错误记录中的参数数,则返回RPC_S_BUFFER_TOO_SMALL。
- 标志 必须为零,或者必须指定 EEInfoUseFileTime 。 如果 Flags 为零,则使用 u union 的 SystemTime 成员。 如果指定 了 EEInfoUseFileTime ,则使用 u union 的 FileTime 成员。
输出后, ErrorInfo 中的字段填充如下:
- 版本 保持不变。
- 如果记录中没有计算机名称,则 ComputerName 为 NULL;如果扩展错误信息记录中确实存在计算机名称,则为 Unicode 字符串。 如果 为 NULL,则可以假定具有计算机名称的最后一条记录,但是,由于内存不足,计算机名可能已删除。 ComputerName 是一个非限定的 DNS 名称。
- ProcessID 是记录的来源进程的 PID。
- SystemTime 或 FileTime 是为生成记录的计算机生成记录的时间,以 UCT 表示。 FileTime 或 SystemTime 是否有效,具体取决于是否使用 EEInfoUseFileTime。
- GeneratingComponent 是生成组件的代码。
- Status 是记录的状态代码。
- DetectionLocation 是检测位置的代码。
- 标志 指定是否缺少记录。 如果在当前记录丢失后缺少一条或多条记录,则设置 EEInfoNextRecordsMissing 。 如果当前记录之前缺少一条或多条记录,则设置 EEInfoPreviousRecordsMissing 。
- NumberOfParameters 指定参数的真实数目。 如果调用方指定的输入参数空间多于记录中的参数数,则此字段包含使用的参数数。
- 参数是实际参数,作为具有 NumberOfParameters 结构的RPC_EE_INFO_PARAM结构的数组提供。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows XP [桌面应用 | UWP 应用] |
最低受支持的服务器 | Windows Server 2003 [桌面应用 | UWP 应用] |
目标平台 | Windows |
标头 | rpcasync.h (包括 Rpc.h) |
Library | Rpcrt4.lib |
DLL | Rpcrt4.dll |