サービス ホストのユーザー状態

サービス ホストを使用すると、アプリケーションでは、サービスホスト レベルで範囲指定された状態データを関連付けることができます。 この状態は、次の例で示されるように、アプリケーションによってサービス ホストが作成されるときに WsCreateServiceHost 関数に渡される WS_SERVICE_PROPERTY 構造体によって指定されます。

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;