Поделиться через


Функция WsStartWriterCanonicalization (webservices.h)

Запускает канонизацию для указанного модуля записи XML.

Синтаксис

HRESULT WsStartWriterCanonicalization(
  [in]           WS_XML_WRITER                          *writer,
  [in]           WS_WRITE_CALLBACK                      writeCallback,
  [in]           void                                   *writeCallbackState,
                 const WS_XML_CANONICALIZATION_PROPERTY *properties,
  [in]           ULONG                                  propertyCount,
  [in, optional] WS_ERROR                               *error
);

Параметры

[in] writer

Модуль записи XML, с которого следует начать канонизацию.

[in] writeCallback

Обратный вызов, вызываемый для записи канонических байтов по мере их создания. Этот обратный вызов всегда будет вызываться синхронно.

[in] writeCallbackState

Состояние, определенное вызывающим, которое должно передаваться при вызове WS_WRITE_CALLBACK.

properties

Массив необязательных свойств, определяющих способ канонизации. См . WS_XML_CANONICALIZATION_PROPERTY.

[in] propertyCount

Количество свойств.

[in, optional] error

Указывает, где должны храниться дополнительные сведения об ошибке в случае сбоя функции.

Возвращаемое значение

Эта функция может возвращать одно из этих значений.

Код возврата Описание
E_INVALIDARG
Один или несколько аргументов недопустимы.
WS_E_INVALID_OPERATION
Операция не разрешена из-за текущего состояния объекта .
WS_E_INVALID_FORMAT
Входные данные не были в ожидаемом формате или не имели ожидаемого значения.

Комментарии

Шаблон использования для канонизации заключается в следующем:

  • вызовите WsStartWriterCanonicalization,
  • напишите xml для канонизации,
  • вызовите WsEndWriterCanonicalization.
Во время этого процесса канонические байты будут записаны в указанный параметр writeCallback. Каждый узел, написанный модулем записи, будет канонизирован. Таким образом, канонизацию и создание можно выполнить за один проход независимо от того, какие API используются для записи XML. Необходимо вызвать WsEndWriterCanonicalization , чтобы обеспечить запись всех канонических байтов в указанный обратный вызов.

WsEndWriterCanonicalization должна вызываться на той же глубине, на которой была вызвана WsStartWriterCanonicalization . Другие API записи возвращают ошибку, если она перемещается на глубину ниже, чем там, где был вызван WsStartWriterCanonicalization .

Недопустимая операция вызова WsMoveWriter или WsSetWriterPosition для модуля записи между парой соответствующих вызовов WsStartWriterCanonicalization и WsEndWriterCanonicalization .

Вызовы этого API не могут быть вложенными. Таким образом, за вызовом WsStartWriterCanonicalization должен следовать вызов WsEndWriterCanonicalization перед следующим вызовом WsStartWriterCanonicalization .

Если WS_XML_CANONICALIZATION_ALGORITHM не указан, используется WS_EXCLUSIVE_XML_CANONICALIZATION_ALGORITHM .

Алгоритмы WS_INCLUSIVE_XML_CANONICALIZATION_ALGORITHM и WS_INCLUSIVE_WITH_COMMENTS_XML_CANONICALIZATION_ALGORITHM можно использовать только со всеми xml-документами. Модуль записи должен находиться в WS_XML_NODE_TYPE_BOF при вызове WsStartWriterCanonicalization с помощью этих алгоритмов.

Требования

   
Минимальная версия клиента Windows 7 [классические приложения | Приложения UWP]
Минимальная версия сервера Windows Server 2008 R2 [классические приложения | Приложения UWP]
Целевая платформа Windows
Header webservices.h
Библиотека WebServices.lib
DLL WebServices.dll