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

DFS_INFO_5

構造体
サイズx64: 56 バイト / x86: 44 バイト

サイズ=各フィールドのバイト数(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_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_PROPERTY_FLAG_ROOT_SCALABILITY (0x00000002)

DFS 名前空間の変更について、PDC ではなく最も近いドメインコントローラーがポーリングされます。このフラグは ドメインルートでのみ有効です。

DFS_PROPERTY_FLAG_SITE_COSTING (0x00000004)

ターゲットの Active Directory サイトコストが有効になり、DFS クライアントからターゲットまでのサイトコストが 増加する順にターゲットがセットにグループ化されます。各セットには同じコストのターゲットが含まれます。この フラグは、ドメインベースおよびスタンドアロンのルートでのみ有効です。

DFS_PROPERTY_FLAG_TARGET_FAILBACK (0x00000008)

DFS クライアントは、最適でないターゲットにフェールオーバーした後、より近い利用可能なターゲットに フェールバックします。このフラグは、ドメインベースおよびスタンドアロンのルートとリンクの両方で有効です。

DFS_PROPERTY_FLAG_CLUSTER_ENABLED (0x00000010)

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 ルートに対してのみ有効です。

NumberOfStoragesDWORD4+48+40DFS のルートまたはリンクのターゲット数を指定します。

公式ドキュメント

分散ファイルシステム (DFS) のルートまたはリンクに関する情報を格納します。この構造体には、ルートまたはリンクの 名前、状態、GUID、タイムアウト、名前空間/ルート/リンクのプロパティ、メタデータのサイズ、およびターゲット数が 含まれます。この構造体は、NetDfsEnumNetDfsGetClientInfo、および NetDfsGetInfo の各関数でのみ使用します。

DFS 名前空間のターゲットに関する情報を取得するには、代わりに DFS_INFO_6 を使用してください。

解説(Remarks)

ターゲットおよびターゲットの優先度に関する情報を取得するには、 DFS_INFO_6 構造体を使用してください。 DFS_INFO_5 は、ターゲット情報を含まない DFS 名前空間に関する情報を指定するために使用します。

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

各言語での定義

#include <windows.h>

// DFS_INFO_5  (x64 56 / x86 44 バイト)
typedef struct DFS_INFO_5 {
    LPWSTR EntryPath;
    LPWSTR Comment;
    DWORD State;
    DWORD Timeout;
    GUID Guid;
    DWORD PropertyFlags;
    DWORD MetadataSize;
    DWORD NumberOfStorages;
} DFS_INFO_5;
using System;
using System.Runtime.InteropServices;

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

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure DFS_INFO_5
    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 NumberOfStorages As UInteger
End Structure
import ctypes
from ctypes import wintypes

class DFS_INFO_5(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),
        ("NumberOfStorages", wintypes.DWORD),
    ]
#[repr(C)]
pub struct DFS_INFO_5 {
    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 NumberOfStorages: u32,
}
import "golang.org/x/sys/windows"

type DFS_INFO_5 struct {
	EntryPath uintptr
	Comment uintptr
	State uint32
	Timeout uint32
	Guid windows.GUID
	PropertyFlags uint32
	MetadataSize uint32
	NumberOfStorages uint32
}
type
  DFS_INFO_5 = record
    EntryPath: Pointer;
    Comment: Pointer;
    State: DWORD;
    Timeout: DWORD;
    Guid: TGUID;
    PropertyFlags: DWORD;
    MetadataSize: DWORD;
    NumberOfStorages: DWORD;
  end;
const DFS_INFO_5 = extern struct {
    EntryPath: ?*anyopaque,
    Comment: ?*anyopaque,
    State: u32,
    Timeout: u32,
    Guid: GUID,
    PropertyFlags: u32,
    MetadataSize: u32,
    NumberOfStorages: u32,
};
type
  DFS_INFO_5 {.bycopy.} = object
    EntryPath: pointer
    Comment: pointer
    State: uint32
    Timeout: uint32
    Guid: GUID
    PropertyFlags: uint32
    MetadataSize: uint32
    NumberOfStorages: uint32
struct DFS_INFO_5
{
    void* EntryPath;
    void* Comment;
    uint State;
    uint Timeout;
    GUID Guid;
    uint PropertyFlags;
    uint MetadataSize;
    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_5 サイズ: 44 バイト(x86)
dim st, 11    ; 4byte整数×11(構造体サイズ 44 / 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 も可)
; NumberOfStorages : DWORD (+40, 4byte)  st.10 = 値  /  値 = st.10   (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; DFS_INFO_5 サイズ: 56 バイト(x64)
dim st, 14    ; 4byte整数×14(構造体サイズ 56 / 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 も可)
; NumberOfStorages : DWORD (+48, 4byte)  st.12 = 値  /  値 = st.12   (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_5
    #field intptr EntryPath
    #field intptr Comment
    #field int State
    #field int Timeout
    #field GUID Guid
    #field int PropertyFlags
    #field int MetadataSize
    #field int NumberOfStorages
#endstruct

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