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


Состояние пользователя узла службы

Узел службы позволяет приложению связывать данные состояния, которые область на уровне узла службы. Это состояние указывается WS_SERVICE_PROPERTY структурой, передаваемой функции WsCreateServiceHost при создании узла службы, как показано в следующем примере.

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

Данные о состоянии доступны для всех обратных вызовов узла службы и операций службы. Обратные вызовы и операции службы извлекают информацию, вызывая функцию WsGetOperationContextProperty и указывая контекст, на который ссылается структура WS_OPERATION_CONTEXT, и свойство контекста, в качестве одного из значений перечисления WS_OPERATION_CONTEXT_PROPERTY_HOST_USER_STATE, как показано в следующем примере.

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