Функция 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.
При любой ошибке позиция перечисления не будет расширена.
Комментарии
После ввода в ErrorInfo необходимо задать следующие поля:
- Для версии необходимо задать значение RPC_EEINFO_VERSION.
- Параметр NumberOfParameters должен иметь значение от нуля до MaxNumberOfEEInfoParams. Вызывающие абоненты могут свободно предоставлять место для любого количества параметров. Если количество параметров, предоставленных вызывающим абонентом, меньше числа параметров в расширенной записи об ошибке, возвращается RPC_S_BUFFER_TOO_SMALL.
- Флаги должны быть равны нулю или EEInfoUseFileTime . Если значение Flags равно нулю, используется элемент SystemTime объединения u. Если указано значение EEInfoUseFileTime , используется член FileTime объединения u.
В выходных данных поля в ErrorInfo заполняются следующим образом:
- Версия не изменилась.
- ComputerName имеет значение NULL , если в записи нет имени компьютера, или строка Юникода, если имя компьютера существует в расширенной записи сведений об ошибке. При значении NULL можно предположить последнюю запись с именем компьютера, однако имя компьютера может быть удалено из-за нехватки памяти. Имя_компьютера — это неквалифицированные DNS-имя.
- ProcessID — это ИДЕНТИФИКАТОР процесса, в котором возникла запись.
- SystemTime или FileTime — это время создания записи, выраженное в UCT, для компьютера, на котором была создана запись. Значение FileTime или SystemTime допустимо в зависимости от того, используется ли EEInfoUseFileTime .
- GeneratingComponent — это код для создаваемого компонента.
- Status — это код состояния записи.
- DetectionLocation — это код для расположения обнаружения.
- Флаги указывают, отсутствуют ли записи. Если одна или несколько записей отсутствуют после отсутствия текущей записи, устанавливается EEInfoNextRecordsMissing . Если одна или несколько записей до текущей записи отсутствует, устанавливается EEInfoPreviousRecordsMissing .
- NumberOfParameters указывает истинное число параметров. Если вызывающий объект указал пространство для большего количества параметров на входных данных, чем в записи, это поле содержит количество используемых параметров.
- Параметры — это фактические параметры, предоставляемые в виде массива RPC_EE_INFO_PARAM структур со структурами NumberOfParameters .
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows XP [классические приложения | Приложения UWP] |
Минимальная версия сервера | Windows Server 2003 [классические приложения | Приложения UWP] |
Целевая платформа | Windows |
Header | rpcasync.h (включая Rpc.h) |
Библиотека | Rpcrt4.lib |
DLL | Rpcrt4.dll |