Seguridad para subprocesos
Todas las funciones de esta API son seguras para llamar simultáneamente desde diferentes subprocesos. Sin embargo, cada objeto pasado como parámetro a las funciones tiene un comportamiento de subproceso específico, como se describe a continuación.
Los siguientes identificadores son un solo subproceso y no admiten operaciones simultáneas para una instancia determinada:
- WS_HEAP
- WS_MESSAGE
- WS_XML_BUFFER
- WS_XML_READER
- WS_XML_WRITER
- WS_ERROR
- WS_OPERATION_CONTEXT
- WS_POLICY
- WS_METADATA
- WS_SECURITY_TOKEN
- WS_SECURITY_CONTEXT
Los identificadores siguientes son subprocesos libres y admiten operaciones simultáneas para una instancia determinada:
Para todos estos identificadores, el subproceso se define en términos de operaciones (no llamadas a funciones). Una operación se define de forma diferente para las funciones invocadas de forma sincrónica frente a las funciones invocadas de forma asincrónica:
- En el caso de las funciones invocadas de forma sincrónica, la operación está pendiente durante la ejecución de la función.
- En el caso de las funciones invocadas de forma asincrónica, si la función devuelve un código de retorno distinto de WS_S_ASYNC la operación está pendiente durante la ejecución de la función. Sin embargo, si la función devuelve WS_S_ASYNC , la operación está pendiente hasta que se invoca el WS_ASYNC_CALLBACK . Para obtener más información sobre la invocación de funciones de forma asincrónica, consulte el tema Modelo asincrónico . Para obtener códigos de error, consulte Valores devueltos de servicios web de Windows.
Si no se sigue el contrato de subprocesos de un objeto, se producirá un comportamiento indefinido.