Share via


Função WsStartWriterCanonicalization (webservices.h)

Inicia a canonicalização no gravador XML especificado.

Sintaxe

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
);

Parâmetros

[in] writer

O gravador XML no qual a canonicalização deve ser iniciada.

[in] writeCallback

O retorno de chamada a ser invocado para gravar os bytes canônicos conforme eles são gerados. Esse retorno de chamada sempre será invocado de forma síncrona.

[in] writeCallbackState

Estado definido pelo chamador que deve ser passado ao invocar o WS_WRITE_CALLBACK.

properties

Uma matriz de propriedades opcionais que controlam como a canonicalização deve ser executada. Consulte WS_XML_CANONICALIZATION_PROPERTY.

[in] propertyCount

O número de propriedades.

[in, optional] error

Especifica onde informações adicionais de erro devem ser armazenadas se a função falhar.

Valor retornado

Essa função pode retornar um desses valores.

Código de retorno Descrição
E_INVALIDARG
Um ou mais argumentos são inválidos.
WS_E_INVALID_OPERATION
A operação não é permitida devido ao estado atual do objeto.
WS_E_INVALID_FORMAT
Os dados de entrada não estavam no formato esperado ou não tinham o valor esperado.

Comentários

O padrão de uso para canonicalização é:

Durante esse processo, os bytes canônicos serão gravados no writeCallback especificado. Todos os nós escritos pelo escritor serão canônicos. Portanto, a canonicalização e a geração podem ser feitas em uma passagem, independentemente de quais APIs são usadas para gravar o XML. WsEndWriterCanonicalization deve ser chamado para garantir que todos os bytes canônicos sejam gravados no retorno de chamada especificado.

WsEndWriterCanonicalization deve ser chamado na mesma profundidade em que WsStartWriterCanonicalization foi chamado. Outras APIs de gravador retornarão um erro se elas forem movidas para uma profundidade inferior à da qual WsStartWriterCanonicalization foi chamado.

É uma operação inválida chamar WsMoveWriter ou WsSetWriterPosition em um gravador entre um par de chamadas WsStartWriterCanonicalization e WsEndWriterCanonicalization correspondentes.

As chamadas para essa API não podem ser aninhadas. Portanto, uma chamada para WsStartWriterCanonicalization deve ser seguida por uma chamada para WsEndWriterCanonicalization antes da próxima chamada WsStartWriterCanonicalization .

Se um WS_XML_CANONICALIZATION_ALGORITHM não for especificado, WS_EXCLUSIVE_XML_CANONICALIZATION_ALGORITHM será usado.

Os algoritmos WS_INCLUSIVE_XML_CANONICALIZATION_ALGORITHM e WS_INCLUSIVE_WITH_COMMENTS_XML_CANONICALIZATION_ALGORITHM só podem ser usados com documentos xml inteiros. O gravador deve ser posicionado em WS_XML_NODE_TYPE_BOF quando WsStartWriterCanonicalization é chamado com esses algoritmos.

Requisitos

   
Cliente mínimo com suporte Windows 7 [aplicativos da área de trabalho | Aplicativos UWP]
Servidor mínimo com suporte Windows Server 2008 R2 [aplicativos da área de trabalho | Aplicativos UWP]
Plataforma de Destino Windows
Cabeçalho webservices.h
Biblioteca WebServices.lib
DLL WebServices.dll