Win32 API 日本語リファレンス
ホームNetworking.ActiveDirectory › IADsServiceOperations

IADsServiceOperations

COMIDispatch (デュアル)
IDispatch を実装(デュアルインターフェース)。HSP では comobj 経由でメソッド名による遅延バインド呼び出しができます(vtableインデックス不要)。
IID5d7b33f0-31ca-11cf-a98a-00aa006bc149継承元IADs呼び出し名前(IDispatch) または vtbl自前メソッド開始 vtbl20

公式ドキュメント

IADsServiceOperations インターフェイスは、IADs を継承するデュアルインターフェイスです。

メソッド 6

vtbl = vtable インデックス(0始まり)。IDispatch 実装のため HSP ではメソッド名でも呼べます(上記)。低レベルの index 呼び出し用に vtbl も掲載。0〜2 は IUnknown。

vtbl 20 HRESULT get_Status(INT* retval)
retvalINT*outサービスの現在の稼働状態を受け取る出力先。ADS_SERVICE_*の状態値で返る。
vtbl 21 HRESULT Start()

IADsServiceOperations::Start メソッドは、ネットワークサービスを開始します。

戻り値

このメソッドは、S_OK を含む標準の戻り値をサポートします。その他の戻り値の詳細については、ADSI Error Codes を参照してください。

vtbl 22 HRESULT Stop()

IADsServiceOperations::Stop メソッドは、現在アクティブなネットワークサービスを停止します。

戻り値

このメソッドは、S_OK を含む標準の戻り値をサポートします。その他の戻り値の詳細については、ADSI Error Codes を参照してください。

vtbl 23 HRESULT Pause()

IADsServiceOperations::Pause メソッドは、IADsServiceOperations::Start メソッドで開始したサービスを一時停止します。

戻り値

このメソッドは、S_OK を含む標準の戻り値をサポートします。その他の戻り値の詳細については、ADSI Error Codes を参照してください。

vtbl 24 HRESULT Continue()

IADsServiceOperations::Continue メソッドは、IADsServiceOperations::Pause メソッドで一時停止したサービス操作を再開します。

戻り値

このメソッドは、S_OK を含む標準の戻り値をサポートします。その他の戻り値の詳細については、ADSI Error Codes を参照してください。

vtbl 25 HRESULT SetPassword(LPWSTR bstrNewPassword)

IADsServiceOperations::SetPassword メソッドは、サービスマネージャーが使用するアカウントのパスワードを設定します。このメソッドは、このサービスのセキュリティコンテキストが作成されるときに呼び出されます。

bstrNewPasswordLPWSTRin新しいパスワードとして格納する、null で終わる Unicode 文字列。

戻り値

このメソッドは、S_OK を含む標準の戻り値をサポートします。その他の戻り値の詳細については、ADSI Error Codes を参照してください。

解説(Remarks)

IADsService::get_ServiceAccountName プロパティは、このパスワードを設定する対象のアカウントを識別します。

次のコード例は、Windows 2000 で実行されている Microsoft Fax Service にパスワードを設定する方法を示しています。

Dim cp As IADsComputer
Dim so As IADsServiceOperations
Dim s As IADsService
Dim sPass As String

On Error GoTo Cleanup

Set cp = GetObject("WinNT://myMachine,computer")
Set so = cp.GetObject("Service", "Fax")
' Insert code to securely retrieve a new password from the user.
so.SetPassword sPass
 
Set s = so
MsgBox "The password for " & so.name & " has been changed on "_
        & s.ServiceAccountName

Cleanup:
    If (Err.Number<>0) Then
        MsgBox("An error has occurred. " & Err.Number)
    End If
    Set cp = Nothing
    Set so = Nothing
    Set s = Nothing

次のコード例は、Windows 2000 で実行されている Microsoft Fax Service にパスワードを設定する方法を示しています。

HRESULT SetServicePassword(LPCWSTR pwszADsPath, LPCWSTR, pwszPasword)
{
    IADsContainer *pCont = NULL;
    IADsServiceOperations *pSrvOp = NULL;
    IDispatch *pDisp = NULL;
    HRESULT hr = S_OK;

    hr = ADsGetObject(pwszADsPath, IID_IADsContainer, (void**)&pCont);
    if(FAILED(hr)) 
    {
        goto Cleanup;
    }

    hr = pCont->GetObject(CComBSTR("Service"), CComBSTR("Fax"), &pDisp);
    if(FAILED(hr)) 
    {
        goto Cleanup;
    }

    hr = pDisp->QueryInterface(IID_IADsServiceOperations, (void**)&pSrvOp);
    if(FAILED(hr)) 
    {
        goto Cleanup;
    }

    // Insert code to securely retrieve the password from the user.
    hr = pSrvOp->SetPassword(CComBSTR(pwszPassword));

Cleanup:
    if(pDisp) 
    {
        pDisp->Release();
    }
    if(pCont) 
    {
        pCont->Release();
    }
    if(pSrvOp) 
    {
        pSrvOp->Release();
    }
}
出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

出力引数:
#define global IID_IADsServiceOperations "{5D7B33F0-31CA-11CF-A98A-00AA006BC149}"
#usecom global IADsServiceOperations IID_IADsServiceOperations "{}"
#comfunc global IADsServiceOperations_get_Status   20 var
#comfunc global IADsServiceOperations_Start        21
#comfunc global IADsServiceOperations_Stop         22
#comfunc global IADsServiceOperations_Pause        23
#comfunc global IADsServiceOperations_Continue     24
#comfunc global IADsServiceOperations_SetPassword  25 wstr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。