LsaEnumerateTrustedDomains
関数シグネチャ
// ADVAPI32.dll
#include <windows.h>
NTSTATUS LsaEnumerateTrustedDomains(
LSA_HANDLE PolicyHandle,
DWORD* EnumerationContext,
void** Buffer,
DWORD PreferedMaximumLength,
DWORD* CountReturned
);パラメーター
| 名前 | 型 | 方向 | 説明 |
|---|---|---|---|
| PolicyHandle | LSA_HANDLE | in | Policy オブジェクトへのハンドル。このハンドルには POLICY_VIEW_LOCAL_INFORMATION アクセス権が必要です。詳細については、 ポリシー オブジェクト ハンドルを開くを参照してください。 |
| EnumerationContext | DWORD* | inout | すべての信頼されたドメインを列挙するために複数回の呼び出しを行えるようにする列挙ハンドルへのポインター。LsaEnumerateTrustedDomains の最初の呼び出しでは、EnumerationContext はゼロに初期化された変数を指している必要があります。以降の LsaEnumerateTrustedDomains の呼び出しでは、EnumerationContext は前回の呼び出しで返された列挙ハンドルを指している必要があります。 |
| Buffer | void** | out | 1 つ以上の信頼されたドメインの名前と SID を含む LSA_TRUST_INFORMATION 構造体の配列へのポインターを受け取ります。 この情報が不要になったら、返されたポインターを LsaFreeMemory に渡してください。 |
| PreferedMaximumLength | DWORD | in | 返されるバッファーの推奨最大サイズ (バイト単位) を指定します。この値は目安であり、実際に返されるバイト数はこの値より大きくなることがあります。 |
| CountReturned | DWORD* | out | Buffer パラメーターで返される要素の数を受け取る変数へのポインター。 |
戻り値の型: NTSTATUS
公式ドキュメント
LsaEnumerateTrustedDomains 関数は、ログオン資格情報の認証を信頼されているドメインの名前と SID を取得します。
戻り値
関数が成功した場合、戻り値は次の NTSTATUS 値のいずれかです。
| 値 | 説明 |
|---|---|
| 列挙が正常に完了しました。 | |
| 呼び出しは成功しましたが、列挙すべき信頼されたドメインがまだ残っています。EnumerationContext パラメーターで返された値を渡して、LsaEnumerateTrustedDomains を再度呼び出してください。 | |
| 列挙すべき信頼されたドメインはこれ以上ありません。 |
関数が失敗した場合、戻り値は NTSTATUS コードです。詳細については、 LSA ポリシー関数の戻り値を参照してください。
LsaNtStatusToWinError 関数を使用して、NTSTATUS コードを Windows エラー コードに変換できます。
解説(Remarks)
ドメイン コントローラーが Windows NT 4.0 以前のバージョンの Windows NT のみで動作しているドメインでは、LsaEnumerateTrustedDomains はすべての信頼されたドメインの一覧を返します。Windows NT 4.0 までのリリースでは、すべての信頼されたドメインは直接信頼されています。
Windows XP および Windows 2000 の混在モード ドメインでは、ドメイン コントローラーは Windows XP、Windows 2000、または Windows NT で動作している可能性があります。そのため、混在モード ドメインでは、直接信頼されているドメインと間接的に信頼されているドメインが混在します。混在モード ドメイン内のシステムの信頼されたドメインを列挙する場合、LsaEnumerateTrustedDomains は直接信頼されているドメインのみを返します。
これに対し、Windows XP および Windows 2000 のネイティブ モード ドメインには Windows 2000 ドメイン コントローラーのみが含まれます (ドメイン内に Windows NT 4.0 以前のバージョンを実行しているメンバーが存在する場合でも同様です)。ネイティブ モードの Windows XP および Windows 2000 ドメイン内のシステムの信頼されたドメインを列挙する場合、LsaEnumerateTrustedDomains は直接信頼されているドメインと間接的に信頼されているドメインの両方を返します。
すべての信頼情報を取得するには、LsaEnumerateTrustedDomains を複数回呼び出す必要がある場合があります。EnumerationContext パラメーターを使用して、次のように複数回の呼び出しを行えます。最初の呼び出しでは、EnumerationContext が指す変数をゼロに設定します。LsaEnumerateTrustedDomains が STATUS_SUCCESS または STATUS_MORE_ENTRIES を返した場合は、前回の呼び出しで返された EnumerationContext の値を渡して関数を再度呼び出します。関数が STATUS_NO_MORE_ENTRIES を返した時点で列挙は完了です。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
各言語での呼び出し定義
// ADVAPI32.dll
#include <windows.h>
NTSTATUS LsaEnumerateTrustedDomains(
LSA_HANDLE PolicyHandle,
DWORD* EnumerationContext,
void** Buffer,
DWORD PreferedMaximumLength,
DWORD* CountReturned
);[DllImport("ADVAPI32.dll", ExactSpelling = true)]
static extern int LsaEnumerateTrustedDomains(
IntPtr PolicyHandle, // LSA_HANDLE
ref uint EnumerationContext, // DWORD* in/out
IntPtr Buffer, // void** out
uint PreferedMaximumLength, // DWORD
out uint CountReturned // DWORD* out
);<DllImport("ADVAPI32.dll", ExactSpelling:=True)>
Public Shared Function LsaEnumerateTrustedDomains(
PolicyHandle As IntPtr, ' LSA_HANDLE
ByRef EnumerationContext As UInteger, ' DWORD* in/out
Buffer As IntPtr, ' void** out
PreferedMaximumLength As UInteger, ' DWORD
<Out> ByRef CountReturned As UInteger ' DWORD* out
) As Integer
End Function' PolicyHandle : LSA_HANDLE
' EnumerationContext : DWORD* in/out
' Buffer : void** out
' PreferedMaximumLength : DWORD
' CountReturned : DWORD* out
Declare PtrSafe Function LsaEnumerateTrustedDomains Lib "advapi32" ( _
ByVal PolicyHandle As LongPtr, _
ByRef EnumerationContext As Long, _
ByVal Buffer As LongPtr, _
ByVal PreferedMaximumLength As Long, _
ByRef CountReturned As Long) As Long
' VBA7前提(PtrSafe)。32bit Office では LongPtr→Long。Integer=16bit / Long=32bit / LongLong=64bit。import ctypes
from ctypes import wintypes
LsaEnumerateTrustedDomains = ctypes.windll.advapi32.LsaEnumerateTrustedDomains
LsaEnumerateTrustedDomains.restype = ctypes.c_int
LsaEnumerateTrustedDomains.argtypes = [
ctypes.c_ssize_t, # PolicyHandle : LSA_HANDLE
ctypes.POINTER(wintypes.DWORD), # EnumerationContext : DWORD* in/out
ctypes.c_void_p, # Buffer : void** out
wintypes.DWORD, # PreferedMaximumLength : DWORD
ctypes.POINTER(wintypes.DWORD), # CountReturned : DWORD* out
]require 'fiddle'
require 'fiddle/import'
lib = Fiddle.dlopen('ADVAPI32.dll')
LsaEnumerateTrustedDomains = Fiddle::Function.new(
lib['LsaEnumerateTrustedDomains'],
[
Fiddle::TYPE_INTPTR_T, # PolicyHandle : LSA_HANDLE
Fiddle::TYPE_VOIDP, # EnumerationContext : DWORD* in/out
Fiddle::TYPE_VOIDP, # Buffer : void** out
-Fiddle::TYPE_INT, # PreferedMaximumLength : DWORD
Fiddle::TYPE_VOIDP, # CountReturned : DWORD* out
],
Fiddle::TYPE_INT)#[link(name = "advapi32")]
extern "system" {
fn LsaEnumerateTrustedDomains(
PolicyHandle: isize, // LSA_HANDLE
EnumerationContext: *mut u32, // DWORD* in/out
Buffer: *mut *mut (), // void** out
PreferedMaximumLength: u32, // DWORD
CountReturned: *mut u32 // DWORD* out
) -> i32;
}
// crates: windows-sys provides ready-made bindings for this API.$sig = @"
[DllImport("ADVAPI32.dll")]
public static extern int LsaEnumerateTrustedDomains(IntPtr PolicyHandle, ref uint EnumerationContext, IntPtr Buffer, uint PreferedMaximumLength, out uint CountReturned);
"@
$api = Add-Type -MemberDefinition $sig -Name 'ADVAPI32_LsaEnumerateTrustedDomains' -Namespace Win32 -PassThru
# $api::LsaEnumerateTrustedDomains(PolicyHandle, EnumerationContext, Buffer, PreferedMaximumLength, CountReturned)#uselib "ADVAPI32.dll"
#func global LsaEnumerateTrustedDomains "LsaEnumerateTrustedDomains" sptr, sptr, sptr, sptr, sptr
; LsaEnumerateTrustedDomains PolicyHandle, varptr(EnumerationContext), Buffer, PreferedMaximumLength, varptr(CountReturned) ; 戻り値は stat
; PolicyHandle : LSA_HANDLE -> "sptr"
; EnumerationContext : DWORD* in/out -> "sptr"
; Buffer : void** out -> "sptr"
; PreferedMaximumLength : DWORD -> "sptr"
; CountReturned : DWORD* out -> "sptr"
; ※HSP3.7は #func のため戻り値はシステム変数 stat に格納されます。#uselib "ADVAPI32.dll" #cfunc global LsaEnumerateTrustedDomains "LsaEnumerateTrustedDomains" sptr, var, sptr, int, var ; res = LsaEnumerateTrustedDomains(PolicyHandle, EnumerationContext, Buffer, PreferedMaximumLength, CountReturned) ; PolicyHandle : LSA_HANDLE -> "sptr" ; EnumerationContext : DWORD* in/out -> "var" ; Buffer : void** out -> "sptr" ; PreferedMaximumLength : DWORD -> "int" ; CountReturned : DWORD* out -> "var" ; ※出力/バッファ引数は var 方式(変数を直接渡す)。varptr 方式にも切替可。#uselib "ADVAPI32.dll" #cfunc global LsaEnumerateTrustedDomains "LsaEnumerateTrustedDomains" sptr, sptr, sptr, int, sptr ; res = LsaEnumerateTrustedDomains(PolicyHandle, varptr(EnumerationContext), Buffer, PreferedMaximumLength, varptr(CountReturned)) ; PolicyHandle : LSA_HANDLE -> "sptr" ; EnumerationContext : DWORD* in/out -> "sptr" ; Buffer : void** out -> "sptr" ; PreferedMaximumLength : DWORD -> "int" ; CountReturned : DWORD* out -> "sptr" ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。
; NTSTATUS LsaEnumerateTrustedDomains(LSA_HANDLE PolicyHandle, DWORD* EnumerationContext, void** Buffer, DWORD PreferedMaximumLength, DWORD* CountReturned) #uselib "ADVAPI32.dll" #cfunc global LsaEnumerateTrustedDomains "LsaEnumerateTrustedDomains" intptr, var, intptr, int, var ; res = LsaEnumerateTrustedDomains(PolicyHandle, EnumerationContext, Buffer, PreferedMaximumLength, CountReturned) ; PolicyHandle : LSA_HANDLE -> "intptr" ; EnumerationContext : DWORD* in/out -> "var" ; Buffer : void** out -> "intptr" ; PreferedMaximumLength : DWORD -> "int" ; CountReturned : DWORD* out -> "var" ; ※出力/バッファ引数は var 方式(変数を直接渡す)。varptr 方式にも切替可。; NTSTATUS LsaEnumerateTrustedDomains(LSA_HANDLE PolicyHandle, DWORD* EnumerationContext, void** Buffer, DWORD PreferedMaximumLength, DWORD* CountReturned) #uselib "ADVAPI32.dll" #cfunc global LsaEnumerateTrustedDomains "LsaEnumerateTrustedDomains" intptr, intptr, intptr, int, intptr ; res = LsaEnumerateTrustedDomains(PolicyHandle, varptr(EnumerationContext), Buffer, PreferedMaximumLength, varptr(CountReturned)) ; PolicyHandle : LSA_HANDLE -> "intptr" ; EnumerationContext : DWORD* in/out -> "intptr" ; Buffer : void** out -> "intptr" ; PreferedMaximumLength : DWORD -> "int" ; CountReturned : DWORD* out -> "intptr" ; ※出力/バッファ引数はポインタ方式(token=intptr / 呼び出しは varptr(変数))。
import (
"golang.org/x/sys/windows"
"unsafe"
)
var (
advapi32 = windows.NewLazySystemDLL("ADVAPI32.dll")
procLsaEnumerateTrustedDomains = advapi32.NewProc("LsaEnumerateTrustedDomains")
)
// PolicyHandle (LSA_HANDLE), EnumerationContext (DWORD* in/out), Buffer (void** out), PreferedMaximumLength (DWORD), CountReturned (DWORD* out)
r1, _, err := procLsaEnumerateTrustedDomains.Call(
uintptr(PolicyHandle),
uintptr(EnumerationContext),
uintptr(Buffer),
uintptr(PreferedMaximumLength),
uintptr(CountReturned),
)
_ = err // syscall.Errno (valid when the call sets last-error)
_ = r1 // NTSTATUSfunction LsaEnumerateTrustedDomains(
PolicyHandle: NativeInt; // LSA_HANDLE
EnumerationContext: Pointer; // DWORD* in/out
Buffer: Pointer; // void** out
PreferedMaximumLength: DWORD; // DWORD
CountReturned: Pointer // DWORD* out
): Integer; stdcall;
external 'ADVAPI32.dll' name 'LsaEnumerateTrustedDomains';result := DllCall("ADVAPI32\LsaEnumerateTrustedDomains"
, "Ptr", PolicyHandle ; LSA_HANDLE
, "Ptr", EnumerationContext ; DWORD* in/out
, "Ptr", Buffer ; void** out
, "UInt", PreferedMaximumLength ; DWORD
, "Ptr", CountReturned ; DWORD* out
, "Int") ; return: NTSTATUS●LsaEnumerateTrustedDomains(PolicyHandle, EnumerationContext, Buffer, PreferedMaximumLength, CountReturned) = DLL("ADVAPI32.dll", "int LsaEnumerateTrustedDomains(int, void*, void*, dword, void*)")
# 呼び出し: LsaEnumerateTrustedDomains(PolicyHandle, EnumerationContext, Buffer, PreferedMaximumLength, CountReturned)
# PolicyHandle : LSA_HANDLE -> "int"
# EnumerationContext : DWORD* in/out -> "void*"
# Buffer : void** out -> "void*"
# PreferedMaximumLength : DWORD -> "dword"
# CountReturned : DWORD* out -> "void*"
# なでしこ1は32bit・ANSI(Shift_JIS)。文字列=char*(ANSI)、ポインタ/ハンドル=void*(4byte)。const std = @import("std");
extern "advapi32" fn LsaEnumerateTrustedDomains(
PolicyHandle: isize, // LSA_HANDLE
EnumerationContext: [*c]u32, // DWORD* in/out
Buffer: ?*anyopaque, // void** out
PreferedMaximumLength: u32, // DWORD
CountReturned: [*c]u32 // DWORD* out
) callconv(std.os.windows.WINAPI) i32;proc LsaEnumerateTrustedDomains(
PolicyHandle: int, # LSA_HANDLE
EnumerationContext: ptr uint32, # DWORD* in/out
Buffer: pointer, # void** out
PreferedMaximumLength: uint32, # DWORD
CountReturned: ptr uint32 # DWORD* out
): int32 {.importc: "LsaEnumerateTrustedDomains", stdcall, dynlib: "ADVAPI32.dll".}pragma(lib, "advapi32");
extern(Windows)
int LsaEnumerateTrustedDomains(
ptrdiff_t PolicyHandle, // LSA_HANDLE
uint* EnumerationContext, // DWORD* in/out
void** Buffer, // void** out
uint PreferedMaximumLength, // DWORD
uint* CountReturned // DWORD* out
);ccall((:LsaEnumerateTrustedDomains, "ADVAPI32.dll"), stdcall, Int32,
(Int, Ptr{UInt32}, Ptr{Cvoid}, UInt32, Ptr{UInt32}),
PolicyHandle, EnumerationContext, Buffer, PreferedMaximumLength, CountReturned)
# PolicyHandle : LSA_HANDLE -> Int
# EnumerationContext : DWORD* in/out -> Ptr{UInt32}
# Buffer : void** out -> Ptr{Cvoid}
# PreferedMaximumLength : DWORD -> UInt32
# CountReturned : DWORD* out -> Ptr{UInt32}
# stdcall は 32bit のみ意味を持つ(x64 では無視)。local ffi = require("ffi")
ffi.cdef[[
int32_t LsaEnumerateTrustedDomains(
intptr_t PolicyHandle,
uint32_t* EnumerationContext,
void** Buffer,
uint32_t PreferedMaximumLength,
uint32_t* CountReturned);
]]
local advapi32 = ffi.load("advapi32")
-- advapi32.LsaEnumerateTrustedDomains(PolicyHandle, EnumerationContext, Buffer, PreferedMaximumLength, CountReturned)
-- PolicyHandle : LSA_HANDLE
-- EnumerationContext : DWORD* in/out
-- Buffer : void** out
-- PreferedMaximumLength : DWORD
-- CountReturned : DWORD* out
-- 構造体/GUIDへのポインタは cdef が通るよう void* で表記(実型は各引数コメント参照)。値渡し構造体・enum は対応する typedef を cdef に追加すること。const koffi = require('koffi');
const lib = koffi.load('ADVAPI32.dll');
const LsaEnumerateTrustedDomains = lib.func('__stdcall', 'LsaEnumerateTrustedDomains', 'int32_t', ['intptr_t', 'uint32_t *', 'void *', 'uint32_t', 'uint32_t *']);
// LsaEnumerateTrustedDomains(PolicyHandle, EnumerationContext, Buffer, PreferedMaximumLength, CountReturned)
// PolicyHandle : LSA_HANDLE -> 'intptr_t'
// EnumerationContext : DWORD* in/out -> 'uint32_t *'
// Buffer : void** out -> 'void *'
// PreferedMaximumLength : DWORD -> 'uint32_t'
// CountReturned : DWORD* out -> 'uint32_t *'
// 出力ポインタは koffi.out(...) で包む。構造体は koffi.struct で定義。const lib = Deno.dlopen("ADVAPI32.dll", {
LsaEnumerateTrustedDomains: { parameters: ["isize", "pointer", "pointer", "u32", "pointer"], result: "i32" },
});
// lib.symbols.LsaEnumerateTrustedDomains(PolicyHandle, EnumerationContext, Buffer, PreferedMaximumLength, CountReturned)
// PolicyHandle : LSA_HANDLE -> "isize"
// EnumerationContext : DWORD* in/out -> "pointer"
// Buffer : void** out -> "pointer"
// PreferedMaximumLength : DWORD -> "u32"
// CountReturned : DWORD* out -> "pointer"
// 文字列引数は "buffer"(NUL 終端のバイト列を Uint8Array で渡す)。
// 値渡し構造体は { struct: [ ...field types... ] } を使用。<?php
$ffi = FFI::cdef(<<<C
int32_t LsaEnumerateTrustedDomains(
intptr_t PolicyHandle,
uint32_t* EnumerationContext,
void** Buffer,
uint32_t PreferedMaximumLength,
uint32_t* CountReturned);
C, "ADVAPI32.dll");
// $ffi->LsaEnumerateTrustedDomains(PolicyHandle, EnumerationContext, Buffer, PreferedMaximumLength, CountReturned);
// PolicyHandle : LSA_HANDLE
// EnumerationContext : DWORD* in/out
// Buffer : void** out
// PreferedMaximumLength : DWORD
// CountReturned : DWORD* out
// 構造体/GUIDへのポインタは cdef が通るよう void* で表記(実型は各引数コメント参照)。値渡し構造体・enum は対応する typedef を cdef に追加すること。
// WINAPI(stdcall): x64 では呼出規約が統一されるため問題なし。x86 では __stdcall 対応のラッパが必要な場合あり。import com.sun.jna.*;
import com.sun.jna.ptr.*;
import com.sun.jna.win32.StdCallLibrary;
import com.sun.jna.win32.W32APIOptions;
public interface Advapi32 extends StdCallLibrary {
Advapi32 INSTANCE = Native.load("advapi32", Advapi32.class);
int LsaEnumerateTrustedDomains(
long PolicyHandle, // LSA_HANDLE
IntByReference EnumerationContext, // DWORD* in/out
Pointer Buffer, // void** out
int PreferedMaximumLength, // DWORD
IntByReference CountReturned // DWORD* out
);
}@[Link("advapi32")]
lib LibADVAPI32
fun LsaEnumerateTrustedDomains = LsaEnumerateTrustedDomains(
PolicyHandle : LibC::SSizeT, # LSA_HANDLE
EnumerationContext : UInt32*, # DWORD* in/out
Buffer : Void**, # void** out
PreferedMaximumLength : UInt32, # DWORD
CountReturned : UInt32* # DWORD* out
) : Int32
end
# 構造体/GUID/enum は lib 内に対応する型定義が必要。
# 呼出規約: x64 は規約統一のため OK。x86(32bit)は WINAPI=stdcall だが Crystal の fun に stdcall 付与構文がなく非対応。import 'dart:ffi';
import 'package:ffi/ffi.dart';
typedef LsaEnumerateTrustedDomainsNative = Int32 Function(IntPtr, Pointer<Uint32>, Pointer<Void>, Uint32, Pointer<Uint32>);
typedef LsaEnumerateTrustedDomainsDart = int Function(int, Pointer<Uint32>, Pointer<Void>, int, Pointer<Uint32>);
final LsaEnumerateTrustedDomains = DynamicLibrary.open('ADVAPI32.dll')
.lookupFunction<LsaEnumerateTrustedDomainsNative, LsaEnumerateTrustedDomainsDart>('LsaEnumerateTrustedDomains');
// PolicyHandle : LSA_HANDLE -> IntPtr
// EnumerationContext : DWORD* in/out -> Pointer<Uint32>
// Buffer : void** out -> Pointer<Void>
// PreferedMaximumLength : DWORD -> Uint32
// CountReturned : DWORD* out -> Pointer<Uint32>
// 文字列は package:ffi の "...".toNativeUtf16()/toNativeUtf8() で変換。{$mode objfpc}{$H+}
function LsaEnumerateTrustedDomains(
PolicyHandle: NativeInt; // LSA_HANDLE
EnumerationContext: Pointer; // DWORD* in/out
Buffer: Pointer; // void** out
PreferedMaximumLength: DWORD; // DWORD
CountReturned: Pointer // DWORD* out
): Integer; stdcall;
external 'ADVAPI32.dll' name 'LsaEnumerateTrustedDomains';import Foreign
import Foreign.C.Types
import Foreign.C.String
foreign import stdcall safe "LsaEnumerateTrustedDomains"
c_LsaEnumerateTrustedDomains :: CIntPtr -> Ptr Word32 -> Ptr () -> Word32 -> Ptr Word32 -> IO Int32
-- PolicyHandle : LSA_HANDLE -> CIntPtr
-- EnumerationContext : DWORD* in/out -> Ptr Word32
-- Buffer : void** out -> Ptr ()
-- PreferedMaximumLength : DWORD -> Word32
-- CountReturned : DWORD* out -> Ptr Word32
-- 要 GHC(Windows)。stdcall は x64 では ccall として扱われる。ブロックする API は safe 呼び出し推奨。open Ctypes
open Foreign
let lsaenumeratetrusteddomains =
foreign "LsaEnumerateTrustedDomains"
(intptr_t @-> (ptr uint32_t) @-> (ptr void) @-> uint32_t @-> (ptr uint32_t) @-> returning int32_t)
(* PolicyHandle : LSA_HANDLE -> intptr_t *)
(* EnumerationContext : DWORD* in/out -> (ptr uint32_t) *)
(* Buffer : void** out -> (ptr void) *)
(* PreferedMaximumLength : DWORD -> uint32_t *)
(* CountReturned : DWORD* out -> (ptr uint32_t) *)
(* foreign は cdecl 前提。x64 Windows では WINAPI と一致。構造体は ctypes structure を定義のこと。 *)(cffi:define-foreign-library advapi32 (t "ADVAPI32.dll"))
(cffi:use-foreign-library advapi32)
(cffi:defcfun ("LsaEnumerateTrustedDomains" lsa-enumerate-trusted-domains :convention :stdcall) :int32
(policy-handle :int64) ; LSA_HANDLE
(enumeration-context :pointer) ; DWORD* in/out
(buffer :pointer) ; void** out
(prefered-maximum-length :uint32) ; DWORD
(count-returned :pointer)) ; DWORD* out
; isize/usize(INT_PTR/SIZE_T)は x64 前提で :int64/:uint64。x86 では :int32/:uint32。use Win32::API;
my $LsaEnumerateTrustedDomains = Win32::API::More->new('ADVAPI32',
'int LsaEnumerateTrustedDomains(LPARAM PolicyHandle, LPVOID EnumerationContext, LPVOID Buffer, DWORD PreferedMaximumLength, LPVOID CountReturned)');
# my $ret = $LsaEnumerateTrustedDomains->Call($PolicyHandle, $EnumerationContext, $Buffer, $PreferedMaximumLength, $CountReturned);
# PolicyHandle : LSA_HANDLE -> LPARAM
# EnumerationContext : DWORD* in/out -> LPVOID
# Buffer : void** out -> LPVOID
# PreferedMaximumLength : DWORD -> DWORD
# CountReturned : DWORD* out -> LPVOID
# 値渡し構造体は pack() した文字列、または Win32::API::Struct を使用。関連項目
- f LsaEnumerateTrustedDomainsEx — 信頼ドメインの詳細情報を含む一覧を列挙する。
- f LsaFreeMemory — LSAが割り当てたメモリブロックを解放する。
- f LsaOpenPolicy — 指定システムのLSAポリシーオブジェクトを開きハンドルを取得する。