Compartilhar via


Estado do usuário do host de serviço

O host de serviço permite que um aplicativo associe dados de estado com escopo no nível do host de serviço. Esse estado é especificado por uma estrutura WS_SERVICE_PROPERTY que é passada para a função WsCreateServiceHost quando o aplicativo cria um host de serviço, conforme ilustrado no exemplo a seguir.

void* quotePtr = (void*) quotes;
WS_SERVICE_PROPERTY serviceProperties[1] = {0};
serviceProperties[0].id = WS_SERVICE_PROPERTY_HOST_USER_STATE;
serviceProperties[0].value = &quotePtr; // assume this is some state that you want to associate with the service host
serviceProperties[0].valueSize = sizeof(quotePtr);

Os dados de estado estão disponíveis para todos os retornos de chamada e operações de serviço do host de serviço. Os retornos de chamada e as operações de serviço recuperam as informações chamando a função WsGetOperationContextProperty e especificando o contexto, referenciado pela estrutura WS_OPERATION_CONTEXT e a propriedade de contexto, como um dos valores da enumeração WS_OPERATION_CONTEXT_PROPERTY_HOST_USER_STATE, conforme ilustrado no exemplo a seguir.

QuoteTable* table = NULL;
HRESULT hr = NOERROR;
if (FAILED (WsGetOperationContextProperty (context, WS_OPERATION_CONTEXT_PROPERTY_HOST_USER_STATE, &table, sizeof(table), NULL, error)))
    return hr;