Win32 API 日本語リファレンス
ホームStorage.FileServerResourceManager › IFsrmSetting

IFsrmSetting

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

公式ドキュメント

FSRM を構成するために使用します。

解説(Remarks)

スクリプトからこのオブジェクトを作成するには、プログラム識別子 "Fsrm.FsrmSetting" を使用します。

次の例は、このインターフェイスのプロパティを取得する方法を示しています。

#ifndef UNICODE
#define UNICODE
#endif


#include <windows.h>
#include <stdio.h>
#include <comutil.h>
#include <fsrm.h>       // FSRM base objects and collections
#include <fsrmtlb_i.c>  // contains CLSIDs


//
// Print the FSRM configuration settings.
//
void wmain(void)
{
  HRESULT hr = 0;
  IFsrmSetting* pSettings = NULL;
  BSTR bstr = NULL;
  VARIANT_BOOL boolVal = VARIANT_FALSE;
  long interval = 0;

  hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);
  if (FAILED(hr))
  {
    wprintf(L"CoInitializeEx() failed, 0x%x.\n", hr);
    exit(1);
  }

  hr = CoCreateInstance(CLSID_FsrmSetting, 
                        NULL,
                        CLSCTX_LOCAL_SERVER,
                        __uuidof(IFsrmSetting),
                        reinterpret_cast<void**> (&pSettings));

  if (FAILED(hr))
  {
    wprintf(L"CoCreateInstance(FsrmSetting) failed, 0x%x.\n", hr);
    if (E_ACCESSDENIED == hr)
      wprintf(L"Access denied. You must run the client with an elevated token.\n");

    goto cleanup;
  }

  wprintf(L"Successfully created Setting object.\n");

  // Get the default email address for the administrator. If set, you 
  // can then use the [Admin Email] macro for any action or report 
  // email address.
  hr = pSettings->get_AdminEmail(&bstr);
  if (FAILED(hr))
  {
    wprintf(L"pSettings->get_AdminEmail failed, 0x%x.\n", hr);
    goto cleanup;
  }

  wprintf(L"AdminEmail: %s\n", bstr);
  SysFreeString(bstr);

  // Determines whether FSRM allows command actions to execute. The default
  // is execute command actions.
  hr = pSettings->get_DisableCommandLine(&boolVal);
  if (FAILED(hr))
  {
    wprintf(L"pSettings->get_DisableCommandLine failed, 0x%x.\n", hr);
    goto cleanup;
  }

  wprintf(L"DisableCommandLine: %s\n", (VARIANT_TRUE == boolVal) ? L"True" : L"False");

  // Determines whether FSRM keeps audit records for file screen IO violations.
  // The default is not to keep audit records.
  hr = pSettings->get_EnableScreeningAudit(&boolVal);
  if (FAILED(hr))
  {
    wprintf(L"pSettings->get_EnableScreeningAudit failed, 0x%x.\n", hr);
    goto cleanup;
  }

  wprintf(L"EnableScreeningAudit: %s\n", (VARIANT_TRUE == boolVal) ? L"True" : L"False");

  // The default address from which reports and email actions are sent.
  // If set, you do not have to set the IFsrmActionEmail::MailFrom property.
  // The default is FSRM@<localdomain>
  hr = pSettings->get_MailFrom(&bstr);
  if (FAILED(hr))
  {
    wprintf(L"pSettings->get_MailFrom failed, 0x%x.\n", hr);
    goto cleanup;
  }

  wprintf(L"MailFrom: %s\n", bstr);
  SysFreeString(bstr);

  // Get the SMTP server. If not set, email is not sent.
  hr = pSettings->get_SmtpServer(&bstr);
  if (FAILED(hr))
  {
    wprintf(L"pSettings->get_SmtpServer failed, 0x%x.\n", hr);
    goto cleanup;
  }

  wprintf(L"SmtpServer: %s\n", bstr);
  SysFreeString(bstr);

  // Each action can specify an interval to wait before executing the action again.
  // The default for each action is 60 minutes.
  wprintf(L"Default interval, in minutes, to wait between executing an action:\n");

  hr = pSettings->GetActionRunLimitInterval(FsrmActionType_EventLog, &interval);
  if (FAILED(hr))
  {
    wprintf(L"pSettings->GetActionRunLimitInterval(FsrmActionType_EventLog) failed, 0x%x.\n", hr);
    goto cleanup;
  }

  wprintf(L"\tEventLog interval: %ld\n", interval);

  hr = pSettings->GetActionRunLimitInterval(FsrmActionType_Email, &interval);
  if (FAILED(hr))
  {
    wprintf(L"pSettings->GetActionRunLimitInterval(FsrmActionType_Email) failed, 0x%x.\n", hr);
    goto cleanup;
  }

  wprintf(L"\tEmail interval: %ld\n", interval);

  hr = pSettings->GetActionRunLimitInterval(FsrmActionType_Command, &interval);
  if (FAILED(hr))
  {
    wprintf(L"pSettings->GetActionRunLimitInterval(FsrmActionType_Command) failed, 0x%x.\n", hr);
    goto cleanup;
  }

  wprintf(L"\tCommand interval: %ld\n", interval);

  hr = pSettings->GetActionRunLimitInterval(FsrmActionType_Report, &interval);
  if (FAILED(hr))
  {
    wprintf(L"pSettings->GetActionRunLimitInterval(FsrmActionType_Report) failed, 0x%x.\n", hr);
    goto cleanup;
  }

  wprintf(L"\tReport interval: %ld\n", interval);

  hr = pSettings->put_SmtpServer(_bstr_t(L"<FQDNOFSMTPSERVER>"));
  if (FAILED(hr))
  {
    wprintf(L"pSettings->put_SmtpServer failed, 0x%x.\n", hr);
    goto cleanup;
  }

cleanup:

  if (pSettings)
    pSettings->Release();

  CoUninitialize();
}

メソッド 13

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

vtbl 7 HRESULT get_SmtpServer(LPWSTR* smtpServer)

FSRM がメールの送信に使用する SMTP サーバーを取得または設定します。(Get)

smtpServerLPWSTR*out通知メール送信に使用する SMTP サーバー名を受け取るポインタである。

解説(Remarks)

FSRM がメールを送信するには、このプロパティを設定する必要があります。設定を検証するには、 IFsrmSetting::EmailTest メソッドを呼び出します。

例については、 IFsrmSetting::EmailTest を参照してください。

vtbl 8 HRESULT put_SmtpServer(LPWSTR smtpServer)

FSRM がメールの送信に使用する SMTP サーバーを取得または設定します。(Put)

smtpServerLPWSTRin設定する SMTP サーバー名を指定するポインタである。

解説(Remarks)

FSRM がメールを送信するには、このプロパティを設定する必要があります。設定を検証するには、 IFsrmSetting::EmailTest メソッドを呼び出します。

例については、 IFsrmSetting::EmailTest を参照してください。

vtbl 9 HRESULT get_MailFrom(LPWSTR* mailFrom)

メールメッセージの送信元として使用される既定のメールアドレスを取得または設定します。(Get)

mailFromLPWSTR*out既定の送信元メールアドレスを受け取るポインタである。

解説(Remarks)

既定値は " FSRM@ローカルコンピューター名" です。このプロパティに "[Admin Email]" を設定することはできません。

例については、IFsrmSetting を参照してください。

vtbl 10 HRESULT put_MailFrom(LPWSTR mailFrom)

メールメッセージの送信元として使用される既定のメールアドレスを取得または設定します。(Put)

mailFromLPWSTRin設定する既定の送信元メールアドレスを指定するポインタである。

解説(Remarks)

既定値は " FSRM@ローカルコンピューター名" です。このプロパティに "[Admin Email]" を設定することはできません。

例については、IFsrmSetting を参照してください。

vtbl 11 HRESULT get_AdminEmail(LPWSTR* adminEmail)

管理者のメールアドレスを取得または設定します。(Get)

adminEmailLPWSTR*out管理者の通知用メールアドレスを受け取るポインタである。

解説(Remarks)

構成されたメールアドレスに文字列 "[Admin Email]" が含まれている場合、このアドレスが使用されます。

例については、IFsrmSetting を参照してください。

vtbl 12 HRESULT put_AdminEmail(LPWSTR adminEmail)

管理者のメールアドレスを取得または設定します。(Put)

adminEmailLPWSTRin設定する管理者の通知用メールアドレスを指定するポインタである。

解説(Remarks)

構成されたメールアドレスに文字列 "[Admin Email]" が含まれている場合、このアドレスが使用されます。

例については、IFsrmSetting を参照してください。

vtbl 13 HRESULT get_DisableCommandLine(VARIANT_BOOL* disableCommandLine)

FSRM がコマンドラインアクションの実行を禁止するかどうかを決定する値を取得または設定します。(Get)

disableCommandLineVARIANT_BOOL*outコマンド実行アクションを無効にするかどうかを受け取る VARIANT_BOOL へのポインタである。
vtbl 14 HRESULT put_DisableCommandLine(VARIANT_BOOL disableCommandLine)

FSRM がコマンドラインアクションの実行を禁止するかどうかを決定する値を取得または設定します。(Put)

disableCommandLineVARIANT_BOOLinコマンド実行アクションを無効にするかどうかを指定する VARIANT_BOOL である。
vtbl 15 HRESULT get_EnableScreeningAudit(VARIANT_BOOL* enableScreeningAudit)

FSRM がファイルスクリーン違反の監査レコードを保持するかどうかを決定する値を取得または設定します。(Get)

enableScreeningAuditVARIANT_BOOL*outファイルスクリーニングの監査を有効にするかどうかを受け取る VARIANT_BOOL へのポインタである。

解説(Remarks)

監査レコードは File Screen Audit レポートに含まれます。監査レコードには次の項目が含まれます。

このプロパティが false で、レポートが FsrmReportType_FileScreenAudit レポートの種類を指定している場合、レポートの生成は成功しますが、監査情報は含まれません (または、監査が無効化される前に記録された監査情報のみが含まれます)。

例については、IFsrmSetting を参照してください。

vtbl 16 HRESULT put_EnableScreeningAudit(VARIANT_BOOL enableScreeningAudit)

FSRM がファイルスクリーン違反の監査レコードを保持するかどうかを決定する値を取得または設定します。(Put)

enableScreeningAuditVARIANT_BOOLinファイルスクリーニングの監査を有効にするかどうかを指定する VARIANT_BOOL である。

解説(Remarks)

監査レコードは File Screen Audit レポートに含まれます。監査レコードには次の項目が含まれます。

このプロパティが false で、レポートが FsrmReportType_FileScreenAudit レポートの種類を指定している場合、レポートの生成は成功しますが、監査情報は含まれません (または、監査が無効化される前に記録された監査情報のみが含まれます)。

例については、IFsrmSetting を参照してください。

vtbl 17 HRESULT EmailTest(LPWSTR mailTo)

指定したメールアドレスにメールメッセージを送信します。

mailToLPWSTRinメールアドレス。文字列は 255 文字までに制限されます。

戻り値

このメソッドは次のリターンコードを返します。

解説(Remarks)

このメソッドは、 SmtpServer プロパティで指定した SMTP サーバーをテストするために使用します。送信元は MailFrom プロパティで指定します ( "[Admin Email]" を設定することはできません)。

件名とメッセージ本文は、あらかじめ定義されたローカライズ済みのテキストです。

次の例は、このメソッドを呼び出す方法を示しています。

#ifndef UNICODE
#define UNICODE
#endif

#include <windows.h>
#include <stdio.h>
#include <comutil.h>
#include <fsrm.h>       // FSRM base objects and collections
#include <fsrmtlb_i.c>  // contains CLSIDs

//
// Call the IFsrmSetting::EmailTest method to test the SMTP email server.
//
void wmain(void)
{
  HRESULT hr = 0;
  IFsrmSetting* pSettings = NULL;

  hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);
  if (FAILED(hr))
  {
    wprintf(L"CoInitializeEx() failed, 0x%x.\n", hr);
    exit(1);
  }

  hr = CoCreateInstance(CLSID_FsrmSetting, 
                        NULL,
                        CLSCTX_LOCAL_SERVER,
                        __uuidof(IFsrmSetting),
                        reinterpret_cast<void**> (&pSettings));

  if (FAILED(hr))
  {
    wprintf(L"CoCreateInstance(FsrmSetting) failed, 0x%x.\n", hr);
    if (E_ACCESSDENIED == hr)
      wprintf(L"Access denied. You must run the client with an elevated token.\n");

    goto cleanup;
  }

  wprintf(L"Successfully created Setting object.\n");

  // Specify the SMTP server to use for sending email.
  hr = pSettings->put_SmtpServer(_bstr_t(L"<FQDNOFSMTPSERVER>")); 
  if (FAILED(hr))
  {
    wprintf(L"pSettings->put_SmtpServer failed, 0x%x.\n", hr);
    goto cleanup;
  }

  // Test the specified SMTP server. If the test succeeds, you will find a 
  // predefined email message in C:\Inetpub\mailroot\Drop. You can use 
  // Outlook Express to read the message.

  hr = pSettings->EmailTest(_bstr_t(L"admin@<FQDNOFSMTPSERVER>"));
  if (FAILED(hr))
  {
    wprintf(L"pSettings->EmailTest failed, 0x%x.\n", hr);
    goto cleanup;
  }

  wprintf(L"Successfully sent mail.\n");

cleanup:

  if (pSettings)
    pSettings->Release();

  CoUninitialize();
}
vtbl 18 HRESULT SetActionRunLimitInterval(FsrmActionType actionType, INT delayTimeMinutes)

グローバルな実行制限間隔を使用するアクションが、再度実行されるまでに待機する時間を設定します。

actionTypeFsrmActionTypein制限の対象となるアクションの種類。指定可能な値については、FsrmActionType 列挙型を参照してください。
delayTimeMinutesINTinアクションに使用する実行制限間隔 (分単位)。既定値は 60 分です。

戻り値

このメソッドは次の戻り値を返します。

解説(Remarks)

IFsrmAction::RunLimitInterval プロパティが -1 に設定されているアクションに適用されます。

このプロパティは、グローバルな実行制限間隔が使用される場合に、アクションが再度実行されるまでに経過している必要がある間隔を指定します。たとえば、アクションが前回実行されてからこの間隔が経過している場合、サーバーはイベントに応じてそのアクションを再度実行します。経過していない場合、サーバーはそのアクションを再度実行できません。

vtbl 19 HRESULT GetActionRunLimitInterval(FsrmActionType actionType, INT* delayTimeMinutes)

グローバルな実行制限間隔を使用するアクションが、再度実行されるまでに待機する時間を取得します。

actionTypeFsrmActionTypein制限の対象となるアクションの種類。指定可能な値については、FsrmActionType 列挙型を参照してください。
delayTimeMinutesINT*outアクションに使用されている実行制限間隔 (分単位)。

戻り値

次の戻り値を返します。

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_IFsrmSetting "{F411D4FD-14BE-4260-8C40-03B7C95E608A}"
#usecom global IFsrmSetting IID_IFsrmSetting "{F556D708-6D4D-4594-9C61-7DBB0DAE2A46}"
#comfunc global IFsrmSetting_get_SmtpServer             7 var
#comfunc global IFsrmSetting_put_SmtpServer             8 wstr
#comfunc global IFsrmSetting_get_MailFrom               9 var
#comfunc global IFsrmSetting_put_MailFrom               10 wstr
#comfunc global IFsrmSetting_get_AdminEmail             11 var
#comfunc global IFsrmSetting_put_AdminEmail             12 wstr
#comfunc global IFsrmSetting_get_DisableCommandLine     13 var
#comfunc global IFsrmSetting_put_DisableCommandLine     14 int
#comfunc global IFsrmSetting_get_EnableScreeningAudit   15 var
#comfunc global IFsrmSetting_put_EnableScreeningAudit   16 int
#comfunc global IFsrmSetting_EmailTest                  17 wstr
#comfunc global IFsrmSetting_SetActionRunLimitInterval  18 int,int
#comfunc global IFsrmSetting_GetActionRunLimitInterval  19 int,var
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※#usecom 末尾は CoCreateInstance 用のクラスID(コクラスCLSID, SDKから自動取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。