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

IBITSExtensionSetupFactory

COMIDispatch (デュアル)
IDispatch を実装(デュアルインターフェース)。HSP では comobj 経由でメソッド名による遅延バインド呼び出しができます(vtableインデックス不要)。
IIDd5d2d542-5503-4e64-8b48-72ef91a32ee1継承元IDispatch呼び出し名前(IDispatch) または vtbl自前メソッド開始 vtbl7

公式ドキュメント

IBITSExtensionSetupFactory インターフェイスは、IBITSExtensionSetup インターフェイスへのポインターを取得するために使用します。

解説(Remarks)

このインターフェイスは、BITS サーバー拡張機能をインストールするとサーバーに登録されます。

Windows Server 2003 では、Windows コンポーネント ウィザードを使用して BITS サーバー拡張機能をインストールします。コントロール パネルからプログラムの追加と削除を選択し、続いて Windows コンポーネントの追加と削除を選択して Windows コンポーネント ウィザードを表示します。BITS サーバー拡張機能は、Web アプリケーション サーバーのサブコンポーネントである Internet Information Services (IIS) のサブコンポーネントです。

次の例は、 IBITSExtensionSetupFactory インターフェイスを使用して IBITSExtensionSetup インターフェイスへのポインターを取得する方法を示しています。

//Set the BITSUploadEnabled IIS configuration setting.
//The pszPath parameter contains the path to the directory service. 
//For example, "IIS://<machine name>/w3svc/1/<virtual directory>".
//The Enable parameter contains true (enable) or false (disable).
HRESULT SetBITSUploadEnabledSetting(LPWSTR pszPath, bool Enable)
{
  HRESULT hr;
  IBITSExtensionSetupFactory* pExtensionSetupFactory = NULL;
  IBITSExtensionSetup* pExtensionSetup = NULL;

  hr = CoCreateInstance(__uuidof(BITSExtensionSetupFactory),
    NULL, CLSCTX_INPROC_SERVER,
    __UUIDOF(IBITSExtensionSetupFactory),
    (void**)&pExtensionSetupFactory);

  if (SUCCEEDED(hr))
  {
    hr = pExtensionSetupFactory->GetObject(BSTR(pszPath), &pExtensionSetup);
    if (SUCCEEDED(hr))
    {
      if (Enable)
      {
        hr = pExtensionSetup->EnableBITSUploads();
      }
      else
      {
        hr = pExtensionSetup->DisableBITSUploads();
      }

      pExtensionSetup->Release();
    }
    pExtensionSetupFactory->Release();
  }

  return hr;
}

メソッド 1

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

vtbl 7 HRESULT GetObject(LPWSTR Path, IBITSExtensionSetup** ppExtensionSetup)

GetObject メソッドは、IBITSExtensionSetup インターフェイスへのポインターを取得するために使用します。このメソッドは、ADSI 関数 ADsGetObject と同じバインドを行います。

PathLPWSTRinディレクトリ サービスへのパスを格納した、null で終わる文字列。たとえば "IIS://<machine name>/w3svc/1/virtual directory" のように指定します。
ppExtensionSetupIBITSExtensionSetup**out指定した仮想ディレクトリに対する BITS のアップロードを有効または無効にするには、 IBITSExtensionSetup インターフェイスを使用します。

戻り値

成功した場合、このメソッドは S_OK を返します。それ以外の場合はメソッドが失敗しています。

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_IBITSExtensionSetupFactory "{D5D2D542-5503-4E64-8B48-72EF91A32EE1}"
#usecom global IBITSExtensionSetupFactory IID_IBITSExtensionSetupFactory "{EFBBAB68-7286-4783-94BF-9461D8B7E7E9}"
#comfunc global IBITSExtensionSetupFactory_GetObject  7 wstr,sptr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※#usecom 末尾は CoCreateInstance 用のクラスID(コクラスCLSID, SDKから自動取得)。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。
; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。