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

DFS_INFO_107

構造体
サイズx64: 40 バイト / x86: 28 バイト

サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。

フィールド

フィールドサイズx64x86説明
CommentLPWSTR8/4+0+0DFS ルートまたはリンクに関連付けられたコメントを格納する、NULL 終端の Unicode 文字列へのポインターです。
StateDWORD4+8+4

DFS ルートまたはリンクを表すビットフラグのセットを指定します。DFS_VOLUME_STATE フラグが 1 つ設定され、DFS_VOLUME_FLAVOR フラグが 1 つ 設定されます。DFS 名前空間のフレーバーを抽出するには DFS_VOLUME_FLAVORS ビットマスク (0x00000300) を使用し、 このメンバーから DFS ルートまたはリンクの状態を抽出するには DFS_VOLUME_STATES ビットマスク (0x0000000F) を 使用しなければなりません。フラグの解釈を説明する例については、DFS_INFO_2 の「解説」セクションを参照してください。

DFS_VOLUME_STATE_OK (0x00000001)

指定された DFS ルートまたはリンクは正常な状態です。

DFS_VOLUME_STATE_INCONSISTENT (0x00000002)

内部の DFS データベースが、指定された DFS ルートまたはリンクと不整合な状態です。不整合の修復は 試行されましたが失敗しました。

DFS_VOLUME_STATE_OFFLINE (0x00000003)

指定された DFS ルートまたはリンクはオフラインであるか、利用できません。

DFS_VOLUME_STATE_ONLINE (0x00000004)

指定された DFS ルートまたはリンクは利用可能です。

DFS_VOLUME_FLAVOR_STANDALONE (0x00000100)

ルートがスタンドアロンの DFS 名前空間に関連付けられている場合、システムはこのフラグを設定します。

DFS_VOLUME_FLAVOR_AD_BLOB (0x00000200)

ルートがドメインベースの DFS 名前空間に関連付けられている場合、システムはこのフラグを設定します。

TimeoutDWORD4+12+8DFS ルートまたはリンクのタイムアウトを秒単位で指定します。
PropertyFlagMaskDWORD4+16+12
  <b>PropertyFlags</b> フィールドにおいて評価対象として有効なフラグを示すマスク値を指定します。
PropertyFlagsDWORD4+20+16

ビットフィールドであり、各ビットは実際のプロパティに応じて、DFS 名前空間全体、DFS ルート、または個々の DFS リンクに適用される特定のプロパティを担います。特に指定がない限り、ビットの任意の組み合わせが 許可されます。

DFS_PROPERTY_FLAG_INSITE_REFERRALS (0x00000001)

DFS ルートまたはリンクに対する DFS サーバーからの参照応答に、参照を要求したクライアントと同じサイトにある ターゲットのみを含めます。2 つのグローバル優先度クラスに属するターゲットは、サイトの位置に関係なく常に返されます。 このフラグは、ドメインベースの DFS ルート、スタンドアロンの DFS ルート、および DFS リンクに適用されます。このフラグが DFS ルートに設定されている場合はすべてのリンクに適用され、そうでない場合は個々のリンクに適用されます。リンクでの設定が ルートの設定を上書きすることはありません。

DFS_PROPERTY_FLAG_ROOT_SCALABILITY (0x00000002)

このフラグが設定されている場合、DFS サーバーはその名前空間の DFS 名前空間の変更を確認するために、プライマリドメイン コントローラー (PDC) ではなく最も近いドメインコントローラー (DC) をポーリングします。DFS サーバーによる DFS メタデータの 変更はこのフラグの制御対象ではなく、PDC に送信されます。このフラグは名前空間全体に対して有効であり、ドメインベースの DFS 名前空間にのみ適用されます。

DFS_PROPERTY_FLAG_SITE_COSTING (0x00000004)

ターゲットの Active Directory サイトコスティングを有効にするには、このフラグを設定します。DFS サーバーから要求元の DFS クライアントに返されるターゲットは、その DFS クライアントに対するサイト間コストによってグループ化されます。グループは サイトコストの昇順に並べられ、最初のグループはクライアントと同じサイトにあるターゲットで構成されます。各グループ内の ターゲットはランダムに並べられます。

このフラグが有効でない場合、既定では 2 つのセットが返されます。1 つはクライアントと同じサイトにあるターゲットのセット、 もう 1 つは残りのすべてのターゲットのセットです。このフラグは DFS 名前空間全体に対して有効であり、ドメインベースと スタンドアロンの両方の DFS 名前空間に適用されます。

ターゲットの優先度によって、ターゲットの順序をさらに調整できます。サイトコスティングを使用してターゲットに優先順位を 付ける方法の詳細については、 DFS Server Target Prioritization を参照してください。

DFS_PROPERTY_FLAG_TARGET_FAILBACK (0x00000008)

V4 の DFS クライアントが、より最適な (コストがより低い、または優先度がより高い) ターゲットへフェールバックできるように するには、このフラグを設定します。このフラグが DFS ルートに設定されている場合はすべてのリンクに適用され、そうでない場合は 個々のリンクに適用されます。個々のリンクの設定がルートの設定を上書きすることはありません。ターゲットフェールバックの設定は、 DFS サーバーによって V4 の参照応答で DFS クライアントに提供されます。このフラグは、ドメインベースのルート、 スタンドアロンのルート、およびリンクに適用されます。

DFS_PROPERTY_FLAG_CLUSTER_ENABLED (0x00000010)

このフラグが設定されている場合、DFS ルートはストレージのフェールオーバーによる高可用性を提供するためにクラスター化 されています。このフラグを NetDfsSetInfo 関数で 設定することはできません。また、スタンドアロンの DFS ルートおよびリンクにのみ適用されます。

DFS_PROPERTY_FLAG_ABDE (0x00000020)

スコープ: ドメインベースの DFS ルートおよびスタンドアロンの DFS ルート。

このフラグが設定されている場合、DFS 名前空間の DFS ルートターゲット共有全体でアクセスベースのディレクトリ列挙 (ABDE) モードのサポートが有効になります。このフラグは、DFS_NAMESPACE_CAPABILITY_ABDE 機能フラグが設定されている DFS 名前空間に対してのみ有効です。詳細については、 DFS_INFO_50 および DFS_SUPPORTED_NAMESPACE_VERSION_INFO を参照してください。

DFS_PROPERTY_FLAG_ABDE フラグは DFS 名前空間のルートに対してのみ有効であり、 ルートターゲット、リンク、リンクターゲットに対しては有効ではありません。セキュリティ記述子を DFS リンクに関連付けるには、 このフラグを有効にしなければなりません。

SdLengthReservedDWORD4+24+20このメンバーはシステムで使用するために予約済みです。
pSecurityDescriptorPSECURITY_DESCRIPTOR8/4+32+24DFS リンクの再解析ポイントに関連付ける自己相対セキュリティ記述子を指定する SECURITY_DESCRIPTOR 構造体へのポインターです。 このフィールドは DFS リンクに対してのみ有効です。

公式ドキュメント

コメント、状態、タイムアウト、プロパティフラグ、 リンクの再解析ポイントのセキュリティ記述子など、DFS ルートまたはリンクに関する情報を格納します。この構造体は NetDfsGetInfo 関数および NetDfsSetInfo 関数でのみ使用します。

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

各言語での定義

#include <windows.h>

// DFS_INFO_107  (x64 40 / x86 28 バイト)
typedef struct DFS_INFO_107 {
    LPWSTR Comment;
    DWORD State;
    DWORD Timeout;
    DWORD PropertyFlagMask;
    DWORD PropertyFlags;
    DWORD SdLengthReserved;
    PSECURITY_DESCRIPTOR pSecurityDescriptor;
} DFS_INFO_107;
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct DFS_INFO_107
{
    public IntPtr Comment;
    public uint State;
    public uint Timeout;
    public uint PropertyFlagMask;
    public uint PropertyFlags;
    public uint SdLengthReserved;
    public IntPtr pSecurityDescriptor;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure DFS_INFO_107
    Public Comment As IntPtr
    Public State As UInteger
    Public Timeout As UInteger
    Public PropertyFlagMask As UInteger
    Public PropertyFlags As UInteger
    Public SdLengthReserved As UInteger
    Public pSecurityDescriptor As IntPtr
End Structure
import ctypes
from ctypes import wintypes

class DFS_INFO_107(ctypes.Structure):
    _fields_ = [
        ("Comment", ctypes.c_void_p),
        ("State", wintypes.DWORD),
        ("Timeout", wintypes.DWORD),
        ("PropertyFlagMask", wintypes.DWORD),
        ("PropertyFlags", wintypes.DWORD),
        ("SdLengthReserved", wintypes.DWORD),
        ("pSecurityDescriptor", ctypes.c_void_p),
    ]
#[repr(C)]
pub struct DFS_INFO_107 {
    pub Comment: *mut core::ffi::c_void,
    pub State: u32,
    pub Timeout: u32,
    pub PropertyFlagMask: u32,
    pub PropertyFlags: u32,
    pub SdLengthReserved: u32,
    pub pSecurityDescriptor: *mut core::ffi::c_void,
}
import "golang.org/x/sys/windows"

type DFS_INFO_107 struct {
	Comment uintptr
	State uint32
	Timeout uint32
	PropertyFlagMask uint32
	PropertyFlags uint32
	SdLengthReserved uint32
	pSecurityDescriptor uintptr
}
type
  DFS_INFO_107 = record
    Comment: Pointer;
    State: DWORD;
    Timeout: DWORD;
    PropertyFlagMask: DWORD;
    PropertyFlags: DWORD;
    SdLengthReserved: DWORD;
    pSecurityDescriptor: Pointer;
  end;
const DFS_INFO_107 = extern struct {
    Comment: ?*anyopaque,
    State: u32,
    Timeout: u32,
    PropertyFlagMask: u32,
    PropertyFlags: u32,
    SdLengthReserved: u32,
    pSecurityDescriptor: ?*anyopaque,
};
type
  DFS_INFO_107 {.bycopy.} = object
    Comment: pointer
    State: uint32
    Timeout: uint32
    PropertyFlagMask: uint32
    PropertyFlags: uint32
    SdLengthReserved: uint32
    pSecurityDescriptor: pointer
struct DFS_INFO_107
{
    void* Comment;
    uint State;
    uint Timeout;
    uint PropertyFlagMask;
    uint PropertyFlags;
    uint SdLengthReserved;
    void* pSecurityDescriptor;
}

HSP用 定義

HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。

; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x86 レイアウト)
; DFS_INFO_107 サイズ: 28 バイト(x86)
dim st, 7    ; 4byte整数×7(構造体サイズ 28 / 4 切り上げ)
; Comment : LPWSTR (+0, 4byte)  st.0 = 値  /  値 = st.0   (lpoke/lpeek も可)
; State : DWORD (+4, 4byte)  st.1 = 値  /  値 = st.1   (lpoke/lpeek も可)
; Timeout : DWORD (+8, 4byte)  st.2 = 値  /  値 = st.2   (lpoke/lpeek も可)
; PropertyFlagMask : DWORD (+12, 4byte)  st.3 = 値  /  値 = st.3   (lpoke/lpeek も可)
; PropertyFlags : DWORD (+16, 4byte)  st.4 = 値  /  値 = st.4   (lpoke/lpeek も可)
; SdLengthReserved : DWORD (+20, 4byte)  st.5 = 値  /  値 = st.5   (lpoke/lpeek も可)
; pSecurityDescriptor : PSECURITY_DESCRIPTOR (+24, 4byte)  st.6 = 値  /  値 = st.6   (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; DFS_INFO_107 サイズ: 40 バイト(x64)
dim st, 10    ; 4byte整数×10(構造体サイズ 40 / 4 切り上げ)
; Comment : LPWSTR (+0, 8byte)  qpoke st,0,値 / qpeek(st,0)  ※IronHSPのみ。3.7/3.8は lpoke st,0,下位 : lpoke st,4,上位
; State : DWORD (+8, 4byte)  st.2 = 値  /  値 = st.2   (lpoke/lpeek も可)
; Timeout : DWORD (+12, 4byte)  st.3 = 値  /  値 = st.3   (lpoke/lpeek も可)
; PropertyFlagMask : DWORD (+16, 4byte)  st.4 = 値  /  値 = st.4   (lpoke/lpeek も可)
; PropertyFlags : DWORD (+20, 4byte)  st.5 = 値  /  値 = st.5   (lpoke/lpeek も可)
; SdLengthReserved : DWORD (+24, 4byte)  st.6 = 値  /  値 = st.6   (lpoke/lpeek も可)
; pSecurityDescriptor : PSECURITY_DESCRIPTOR (+32, 8byte)  qpoke st,32,値 / qpeek(st,32)  ※IronHSPのみ。3.7/3.8は lpoke st,32,下位 : lpoke st,36,上位
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global DFS_INFO_107
    #field intptr Comment
    #field int State
    #field int Timeout
    #field int PropertyFlagMask
    #field int PropertyFlags
    #field int SdLengthReserved
    #field intptr pSecurityDescriptor
#endstruct

stdim st, DFS_INFO_107        ; NSTRUCT 変数を確保
st->State = 100
mes "State=" + st->State