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

DFS_INFO_8

構造体
サイズx64: 72 バイト / x86: 52 バイト

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

フィールド

フィールドサイズx64x86説明
EntryPathLPWSTR8/4+0+0

DFS ルートまたはリンクの汎用名前付け規則 (UNC) パスを指定する、null で終わる Unicode 文字列への ポインターです。

リンクの場合、文字列は次の 2 つの形式のいずれかになります。1 つ目の形式は次のとおりです。

\\ServerName\DfsName\link_path

ここで ServerName はスタンドアロン DFS 名前空間をホストするルート ターゲット サーバーの名前、 DfsName は DFS 名前空間の名前、 link_path は DFS リンクです。

2 つ目の形式は次のとおりです。

\\DomainName\DomDfsname\link_path

ここで DomainName はドメイン ベースの DFS 名前空間をホストするドメインの名前、 DomDfsname は DFS 名前空間の名前、 link_path は DFS リンクです。

ルートの場合、文字列は次の 2 つの形式のいずれかになります。

\\ServerName\DfsName

または

\\DomainName\DomDfsname

各名前の値は前述のとおりです。

CommentLPWSTR8/4+8+4DFS ルートまたはリンクに関連付けられたコメントを格納する、null で終わる Unicode 文字列への ポインターです。
StateDWORD4+16+8

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+20+12DFS ルートまたはリンクのタイムアウトを秒単位で指定します。
GuidGUID16+24+16DFS ルートまたはリンクの GUID を指定します。
PropertyFlagsDWORD4+40+32

DFS 名前空間、ルート、またはリンクの固有のプロパティを表すフラグのセットを指定します。

DFS_PROPERTY_FLAG_INSITE_REFERRALS (0x00000001)

適用範囲: ドメイン ルート、スタンドアロン ルート、およびリンク。このフラグが DFS ルートで設定されている場合は、すべての リンクに適用されます。設定されていない場合、このフラグの値は個々のリンクごとに考慮されます。

このフラグが設定されている場合、"INSITE" オプションが有効な DFS ルートまたはリンクに対する DFS サーバーからの DFS 紹介 (リファーラル) 応答には、紹介を要求している DFS クライアントと同じサイトにあるターゲットのみが 含まれます。2 つのグローバル優先度クラスに属するターゲットは、サイトの場所に関係なく常に返されます。

DFS_PROPERTY_FLAG_ROOT_SCALABILITY (0x00000002)

適用範囲: ドメイン ベースの DFS 名前空間の場合のみ、DFS 名前空間全体。

既定では、DFS ルート ターゲット サーバーは DFS メタデータの変更を検出するために PDC をポーリングします。PDC への過大な サーバー負荷を防ぐために、DFS 名前空間でルート スケーラビリティを有効にできます。このフラグを設定すると、DFS サーバーは共通の名前空間の DFS メタデータの変更について、PDC ではなく最も近いドメイン コントローラーを ポーリングするようになります。ただし、メタデータへの変更は引き続き PDC 上で行う必要があることに注意してください。

DFS_PROPERTY_FLAG_SITE_COSTING (0x00000004)

適用範囲: ドメイン ベースおよびスタンドアロンの両方の DFS 名前空間について、DFS 名前空間全体。

既定では、DFS ルートまたはリンクに対して DFS サーバーから DFS クライアントへの紹介応答で返されるターゲットは、 クライアントと同じサイトにあるターゲットと、サイト外のターゲットという 2 つのグループで構成されます。

Active Directory でサイト コストが有効になっている場合、応答には 3 つ以上のグループを含めることができ、各 グループには紹介を要求している特定の DFS クライアントに対して同じサイト コストを持つターゲットが含まれます。 グループはサイト コストの昇順に並べられます。サイト コストを使用したターゲットの優先順位付けの詳細については、 DFS Server Target Prioritization を参照してください。

DFS_PROPERTY_FLAG_TARGET_FAILBACK (0x00000008)

適用範囲: ドメイン ベースの DFS ルート、スタンドアロン DFS ルート、および DFS リンク。このフラグが DFS ルートで設定されている場合は、 すべてのリンクに適用されます。設定されていない場合、このフラグの値は個々のリンクごとに考慮されます。

このフラグが設定されている場合、V4 DFS クライアントに対して最適なターゲットへのフェールバックが有効になり、最適でない ターゲットにフェールオーバーした後で最適なターゲットにフェールバックできるようになります。ターゲット フェールバックの設定は、DFS サーバーから V4 紹介応答で DFS クライアントに提供されます。

DFS_PROPERTY_FLAG_CLUSTER_ENABLED (0x00000010)

適用範囲: スタンドアロン DFS ルートおよびリンクのみ。

ストレージのフェールオーバーに対する高可用性を提供するために、DFS ルートがクラスター化されています。このフラグを NetDfsSetInfo 関数で設定することはできません。

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 リンクにセキュリティ記述子を関連付けるには、このフラグを有効にする必要があります。

MetadataSizeDWORD4+44+36

ドメイン ベースの DFS 名前空間の場合、このメンバーは対応する Active Directory データ BLOB のサイズをバイト単位で指定します。スタンドアロン DFS 名前空間の場合、このフィールドはレジストリに格納されている メタデータのサイズを指定します。これには、それらに関連付けられた個々のデータ項目に加えて、キー名と値名も 含まれます。

このフィールドは DFS ルートに対してのみ有効です。

SdLengthReservedDWORD4+48+40このメンバーはシステムによって予約済みです。
pSecurityDescriptorPSECURITY_DESCRIPTOR8/4+56+44DFS リンクの再解析ポイントに関連付ける自己相対セキュリティ記述子を指定する SECURITY_DESCRIPTOR 構造体へのポインターです。このフィールドは DFS リンクに対してのみ有効です。
NumberOfStoragesDWORD4+64+48DFS ルートまたはリンクを含むボリュームのストレージ サーバーの数を指定します。

公式ドキュメント

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

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

各言語での定義

#include <windows.h>

// DFS_INFO_8  (x64 72 / x86 52 バイト)
typedef struct DFS_INFO_8 {
    LPWSTR EntryPath;
    LPWSTR Comment;
    DWORD State;
    DWORD Timeout;
    GUID Guid;
    DWORD PropertyFlags;
    DWORD MetadataSize;
    DWORD SdLengthReserved;
    PSECURITY_DESCRIPTOR pSecurityDescriptor;
    DWORD NumberOfStorages;
} DFS_INFO_8;
using System;
using System.Runtime.InteropServices;

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

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

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

type DFS_INFO_8 struct {
	EntryPath uintptr
	Comment uintptr
	State uint32
	Timeout uint32
	Guid windows.GUID
	PropertyFlags uint32
	MetadataSize uint32
	SdLengthReserved uint32
	pSecurityDescriptor uintptr
	NumberOfStorages uint32
}
type
  DFS_INFO_8 = record
    EntryPath: Pointer;
    Comment: Pointer;
    State: DWORD;
    Timeout: DWORD;
    Guid: TGUID;
    PropertyFlags: DWORD;
    MetadataSize: DWORD;
    SdLengthReserved: DWORD;
    pSecurityDescriptor: Pointer;
    NumberOfStorages: DWORD;
  end;
const DFS_INFO_8 = extern struct {
    EntryPath: ?*anyopaque,
    Comment: ?*anyopaque,
    State: u32,
    Timeout: u32,
    Guid: GUID,
    PropertyFlags: u32,
    MetadataSize: u32,
    SdLengthReserved: u32,
    pSecurityDescriptor: ?*anyopaque,
    NumberOfStorages: u32,
};
type
  DFS_INFO_8 {.bycopy.} = object
    EntryPath: pointer
    Comment: pointer
    State: uint32
    Timeout: uint32
    Guid: GUID
    PropertyFlags: uint32
    MetadataSize: uint32
    SdLengthReserved: uint32
    pSecurityDescriptor: pointer
    NumberOfStorages: uint32
struct DFS_INFO_8
{
    void* EntryPath;
    void* Comment;
    uint State;
    uint Timeout;
    GUID Guid;
    uint PropertyFlags;
    uint MetadataSize;
    uint SdLengthReserved;
    void* pSecurityDescriptor;
    uint NumberOfStorages;
}

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_8 サイズ: 52 バイト(x86)
dim st, 13    ; 4byte整数×13(構造体サイズ 52 / 4 切り上げ)
; EntryPath : LPWSTR (+0, 4byte)  st.0 = 値  /  値 = st.0   (lpoke/lpeek も可)
; Comment : LPWSTR (+4, 4byte)  st.1 = 値  /  値 = st.1   (lpoke/lpeek も可)
; State : DWORD (+8, 4byte)  st.2 = 値  /  値 = st.2   (lpoke/lpeek も可)
; Timeout : DWORD (+12, 4byte)  st.3 = 値  /  値 = st.3   (lpoke/lpeek も可)
; Guid : GUID (+16, 16byte)  varptr(st)+16 を基点に操作(16byte:入れ子/配列)
; PropertyFlags : DWORD (+32, 4byte)  st.8 = 値  /  値 = st.8   (lpoke/lpeek も可)
; MetadataSize : DWORD (+36, 4byte)  st.9 = 値  /  値 = st.9   (lpoke/lpeek も可)
; SdLengthReserved : DWORD (+40, 4byte)  st.10 = 値  /  値 = st.10   (lpoke/lpeek も可)
; pSecurityDescriptor : PSECURITY_DESCRIPTOR (+44, 4byte)  st.11 = 値  /  値 = st.11   (lpoke/lpeek も可)
; NumberOfStorages : DWORD (+48, 4byte)  st.12 = 値  /  値 = st.12   (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; DFS_INFO_8 サイズ: 72 バイト(x64)
dim st, 18    ; 4byte整数×18(構造体サイズ 72 / 4 切り上げ)
; EntryPath : LPWSTR (+0, 8byte)  qpoke st,0,値 / qpeek(st,0)  ※IronHSPのみ。3.7/3.8は lpoke st,0,下位 : lpoke st,4,上位
; Comment : LPWSTR (+8, 8byte)  qpoke st,8,値 / qpeek(st,8)  ※IronHSPのみ。3.7/3.8は lpoke st,8,下位 : lpoke st,12,上位
; State : DWORD (+16, 4byte)  st.4 = 値  /  値 = st.4   (lpoke/lpeek も可)
; Timeout : DWORD (+20, 4byte)  st.5 = 値  /  値 = st.5   (lpoke/lpeek も可)
; Guid : GUID (+24, 16byte)  varptr(st)+24 を基点に操作(16byte:入れ子/配列)
; PropertyFlags : DWORD (+40, 4byte)  st.10 = 値  /  値 = st.10   (lpoke/lpeek も可)
; MetadataSize : DWORD (+44, 4byte)  st.11 = 値  /  値 = st.11   (lpoke/lpeek も可)
; SdLengthReserved : DWORD (+48, 4byte)  st.12 = 値  /  値 = st.12   (lpoke/lpeek も可)
; pSecurityDescriptor : PSECURITY_DESCRIPTOR (+56, 8byte)  qpoke st,56,値 / qpeek(st,56)  ※IronHSPのみ。3.7/3.8は lpoke st,56,下位 : lpoke st,60,上位
; NumberOfStorages : DWORD (+64, 4byte)  st.16 = 値  /  値 = st.16   (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
; ※GUID・入れ子構造体はデフォルト型でないため、依存する #defstruct を先に定義(下記に同梱)。
#defstruct global GUID, pack=1
    #field int Data1
    #field short Data2
    #field short Data3
    #field byte Data4 8
#endstruct

#defstruct global DFS_INFO_8
    #field intptr EntryPath
    #field intptr Comment
    #field int State
    #field int Timeout
    #field GUID Guid
    #field int PropertyFlags
    #field int MetadataSize
    #field int SdLengthReserved
    #field intptr pSecurityDescriptor
    #field int NumberOfStorages
#endstruct

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