Win32 API 日本語リファレンス
ホームNetworking.WinHttp › WinHttpReadProxySettings

WinHttpReadProxySettings

関数
保存されたWinHTTPのプロキシ設定を読み込む。
DLLWINHTTP.dll呼出規約winapi

シグネチャ

// WINHTTP.dll
#include <windows.h>

DWORD WinHttpReadProxySettings(
    void* hSession,
    LPCWSTR pcwszConnectionName,   // optional
    BOOL fFallBackToDefaultSettings,
    BOOL fSetAutoDiscoverForDefaultSettings,
    DWORD* pdwSettingsVersion,
    BOOL* pfDefaultSettingsAreReturned,
    WINHTTP_PROXY_SETTINGS* pWinHttpProxySettings
);

パラメーター

名前方向
hSessionvoid*in
pcwszConnectionNameLPCWSTRinoptional
fFallBackToDefaultSettingsBOOLin
fSetAutoDiscoverForDefaultSettingsBOOLin
pdwSettingsVersionDWORD*out
pfDefaultSettingsAreReturnedBOOL*out
pWinHttpProxySettingsWINHTTP_PROXY_SETTINGS*out

戻り値の型: DWORD

各言語での呼び出し定義

// WINHTTP.dll
#include <windows.h>

DWORD WinHttpReadProxySettings(
    void* hSession,
    LPCWSTR pcwszConnectionName,   // optional
    BOOL fFallBackToDefaultSettings,
    BOOL fSetAutoDiscoverForDefaultSettings,
    DWORD* pdwSettingsVersion,
    BOOL* pfDefaultSettingsAreReturned,
    WINHTTP_PROXY_SETTINGS* pWinHttpProxySettings
);
[DllImport("WINHTTP.dll", ExactSpelling = true)]
static extern uint WinHttpReadProxySettings(
    IntPtr hSession,   // void*
    [MarshalAs(UnmanagedType.LPWStr)] string pcwszConnectionName,   // LPCWSTR optional
    bool fFallBackToDefaultSettings,   // BOOL
    bool fSetAutoDiscoverForDefaultSettings,   // BOOL
    out uint pdwSettingsVersion,   // DWORD* out
    out int pfDefaultSettingsAreReturned,   // BOOL* out
    IntPtr pWinHttpProxySettings   // WINHTTP_PROXY_SETTINGS* out
);
<DllImport("WINHTTP.dll", ExactSpelling:=True)>
Public Shared Function WinHttpReadProxySettings(
    hSession As IntPtr,   ' void*
    <MarshalAs(UnmanagedType.LPWStr)> pcwszConnectionName As String,   ' LPCWSTR optional
    fFallBackToDefaultSettings As Boolean,   ' BOOL
    fSetAutoDiscoverForDefaultSettings As Boolean,   ' BOOL
    <Out> ByRef pdwSettingsVersion As UInteger,   ' DWORD* out
    <Out> ByRef pfDefaultSettingsAreReturned As Integer,   ' BOOL* out
    pWinHttpProxySettings As IntPtr   ' WINHTTP_PROXY_SETTINGS* out
) As UInteger
End Function
' hSession : void*
' pcwszConnectionName : LPCWSTR optional
' fFallBackToDefaultSettings : BOOL
' fSetAutoDiscoverForDefaultSettings : BOOL
' pdwSettingsVersion : DWORD* out
' pfDefaultSettingsAreReturned : BOOL* out
' pWinHttpProxySettings : WINHTTP_PROXY_SETTINGS* out
Declare PtrSafe Function WinHttpReadProxySettings Lib "winhttp" ( _
    ByVal hSession As LongPtr, _
    ByVal pcwszConnectionName As LongPtr, _
    ByVal fFallBackToDefaultSettings As Long, _
    ByVal fSetAutoDiscoverForDefaultSettings As Long, _
    ByRef pdwSettingsVersion As Long, _
    ByRef pfDefaultSettingsAreReturned As Long, _
    ByVal pWinHttpProxySettings As LongPtr) As Long
' VBA7前提(PtrSafe)。32bit Office では LongPtr→Long。Integer=16bit / Long=32bit / LongLong=64bit。
import ctypes
from ctypes import wintypes

WinHttpReadProxySettings = ctypes.windll.winhttp.WinHttpReadProxySettings
WinHttpReadProxySettings.restype = wintypes.DWORD
WinHttpReadProxySettings.argtypes = [
    ctypes.POINTER(None),  # hSession : void*
    wintypes.LPCWSTR,  # pcwszConnectionName : LPCWSTR optional
    wintypes.BOOL,  # fFallBackToDefaultSettings : BOOL
    wintypes.BOOL,  # fSetAutoDiscoverForDefaultSettings : BOOL
    ctypes.POINTER(wintypes.DWORD),  # pdwSettingsVersion : DWORD* out
    ctypes.c_void_p,  # pfDefaultSettingsAreReturned : BOOL* out
    ctypes.c_void_p,  # pWinHttpProxySettings : WINHTTP_PROXY_SETTINGS* out
]
require 'fiddle'
require 'fiddle/import'

lib = Fiddle.dlopen('WINHTTP.dll')
WinHttpReadProxySettings = Fiddle::Function.new(
  lib['WinHttpReadProxySettings'],
  [
    Fiddle::TYPE_VOIDP,  # hSession : void*
    Fiddle::TYPE_VOIDP,  # pcwszConnectionName : LPCWSTR optional
    Fiddle::TYPE_INT,  # fFallBackToDefaultSettings : BOOL
    Fiddle::TYPE_INT,  # fSetAutoDiscoverForDefaultSettings : BOOL
    Fiddle::TYPE_VOIDP,  # pdwSettingsVersion : DWORD* out
    Fiddle::TYPE_VOIDP,  # pfDefaultSettingsAreReturned : BOOL* out
    Fiddle::TYPE_VOIDP,  # pWinHttpProxySettings : WINHTTP_PROXY_SETTINGS* out
  ],
  -Fiddle::TYPE_INT)
#[link(name = "winhttp")]
extern "system" {
    fn WinHttpReadProxySettings(
        hSession: *mut (),  // void*
        pcwszConnectionName: *const u16,  // LPCWSTR optional
        fFallBackToDefaultSettings: i32,  // BOOL
        fSetAutoDiscoverForDefaultSettings: i32,  // BOOL
        pdwSettingsVersion: *mut u32,  // DWORD* out
        pfDefaultSettingsAreReturned: *mut i32,  // BOOL* out
        pWinHttpProxySettings: *mut WINHTTP_PROXY_SETTINGS  // WINHTTP_PROXY_SETTINGS* out
    ) -> u32;
}
// crates: windows-sys provides ready-made bindings for this API.
$sig = @"
[DllImport("WINHTTP.dll")]
public static extern uint WinHttpReadProxySettings(IntPtr hSession, [MarshalAs(UnmanagedType.LPWStr)] string pcwszConnectionName, bool fFallBackToDefaultSettings, bool fSetAutoDiscoverForDefaultSettings, out uint pdwSettingsVersion, out int pfDefaultSettingsAreReturned, IntPtr pWinHttpProxySettings);
"@
$api = Add-Type -MemberDefinition $sig -Name 'WINHTTP_WinHttpReadProxySettings' -Namespace Win32 -PassThru
# $api::WinHttpReadProxySettings(hSession, pcwszConnectionName, fFallBackToDefaultSettings, fSetAutoDiscoverForDefaultSettings, pdwSettingsVersion, pfDefaultSettingsAreReturned, pWinHttpProxySettings)
#uselib "WINHTTP.dll"
#func global WinHttpReadProxySettings "WinHttpReadProxySettings" sptr, sptr, sptr, sptr, sptr, sptr, sptr
; WinHttpReadProxySettings hSession, pcwszConnectionName, fFallBackToDefaultSettings, fSetAutoDiscoverForDefaultSettings, varptr(pdwSettingsVersion), pfDefaultSettingsAreReturned, varptr(pWinHttpProxySettings)   ; 戻り値は stat
; hSession : void* -> "sptr"
; pcwszConnectionName : LPCWSTR optional -> "sptr"
; fFallBackToDefaultSettings : BOOL -> "sptr"
; fSetAutoDiscoverForDefaultSettings : BOOL -> "sptr"
; pdwSettingsVersion : DWORD* out -> "sptr"
; pfDefaultSettingsAreReturned : BOOL* out -> "sptr"
; pWinHttpProxySettings : WINHTTP_PROXY_SETTINGS* out -> "sptr"
; ※HSP3.7は #func のため戻り値はシステム変数 stat に格納されます。
出力引数:
#uselib "WINHTTP.dll"
#cfunc global WinHttpReadProxySettings "WinHttpReadProxySettings" sptr, wstr, int, int, var, int, var
; res = WinHttpReadProxySettings(hSession, pcwszConnectionName, fFallBackToDefaultSettings, fSetAutoDiscoverForDefaultSettings, pdwSettingsVersion, pfDefaultSettingsAreReturned, pWinHttpProxySettings)
; hSession : void* -> "sptr"
; pcwszConnectionName : LPCWSTR optional -> "wstr"
; fFallBackToDefaultSettings : BOOL -> "int"
; fSetAutoDiscoverForDefaultSettings : BOOL -> "int"
; pdwSettingsVersion : DWORD* out -> "var"
; pfDefaultSettingsAreReturned : BOOL* out -> "int"
; pWinHttpProxySettings : WINHTTP_PROXY_SETTINGS* out -> "var"
; ※出力/バッファ引数は var 方式(変数を直接渡す)。varptr 方式にも切替可。
出力引数:
; DWORD WinHttpReadProxySettings(void* hSession, LPCWSTR pcwszConnectionName, BOOL fFallBackToDefaultSettings, BOOL fSetAutoDiscoverForDefaultSettings, DWORD* pdwSettingsVersion, BOOL* pfDefaultSettingsAreReturned, WINHTTP_PROXY_SETTINGS* pWinHttpProxySettings)
#uselib "WINHTTP.dll"
#cfunc global WinHttpReadProxySettings "WinHttpReadProxySettings" intptr, wstr, int, int, var, int, var
; res = WinHttpReadProxySettings(hSession, pcwszConnectionName, fFallBackToDefaultSettings, fSetAutoDiscoverForDefaultSettings, pdwSettingsVersion, pfDefaultSettingsAreReturned, pWinHttpProxySettings)
; hSession : void* -> "intptr"
; pcwszConnectionName : LPCWSTR optional -> "wstr"
; fFallBackToDefaultSettings : BOOL -> "int"
; fSetAutoDiscoverForDefaultSettings : BOOL -> "int"
; pdwSettingsVersion : DWORD* out -> "var"
; pfDefaultSettingsAreReturned : BOOL* out -> "int"
; pWinHttpProxySettings : WINHTTP_PROXY_SETTINGS* out -> "var"
; ※出力/バッファ引数は var 方式(変数を直接渡す)。varptr 方式にも切替可。
import (
	"golang.org/x/sys/windows"
	"unsafe"
)

var (
	winhttp = windows.NewLazySystemDLL("WINHTTP.dll")
	procWinHttpReadProxySettings = winhttp.NewProc("WinHttpReadProxySettings")
)

// hSession (void*), pcwszConnectionName (LPCWSTR optional), fFallBackToDefaultSettings (BOOL), fSetAutoDiscoverForDefaultSettings (BOOL), pdwSettingsVersion (DWORD* out), pfDefaultSettingsAreReturned (BOOL* out), pWinHttpProxySettings (WINHTTP_PROXY_SETTINGS* out)
r1, _, err := procWinHttpReadProxySettings.Call(
	uintptr(hSession),
	uintptr(unsafe.Pointer(windows.StringToUTF16Ptr(pcwszConnectionName))),
	uintptr(fFallBackToDefaultSettings),
	uintptr(fSetAutoDiscoverForDefaultSettings),
	uintptr(pdwSettingsVersion),
	uintptr(pfDefaultSettingsAreReturned),
	uintptr(pWinHttpProxySettings),
)
_ = err  // syscall.Errno (valid when the call sets last-error)
_ = r1   // DWORD
function WinHttpReadProxySettings(
  hSession: Pointer;   // void*
  pcwszConnectionName: PWideChar;   // LPCWSTR optional
  fFallBackToDefaultSettings: BOOL;   // BOOL
  fSetAutoDiscoverForDefaultSettings: BOOL;   // BOOL
  pdwSettingsVersion: Pointer;   // DWORD* out
  pfDefaultSettingsAreReturned: Pointer;   // BOOL* out
  pWinHttpProxySettings: Pointer   // WINHTTP_PROXY_SETTINGS* out
): DWORD; stdcall;
  external 'WINHTTP.dll' name 'WinHttpReadProxySettings';
result := DllCall("WINHTTP\WinHttpReadProxySettings"
    , "Ptr", hSession   ; void*
    , "WStr", pcwszConnectionName   ; LPCWSTR optional
    , "Int", fFallBackToDefaultSettings   ; BOOL
    , "Int", fSetAutoDiscoverForDefaultSettings   ; BOOL
    , "Ptr", pdwSettingsVersion   ; DWORD* out
    , "Ptr", pfDefaultSettingsAreReturned   ; BOOL* out
    , "Ptr", pWinHttpProxySettings   ; WINHTTP_PROXY_SETTINGS* out
    , "UInt")   ; return: DWORD
●WinHttpReadProxySettings(hSession, pcwszConnectionName, fFallBackToDefaultSettings, fSetAutoDiscoverForDefaultSettings, pdwSettingsVersion, pfDefaultSettingsAreReturned, pWinHttpProxySettings) = DLL("WINHTTP.dll", "dword WinHttpReadProxySettings(void*, char*, bool, bool, void*, void*, void*)")
# 呼び出し: WinHttpReadProxySettings(hSession, pcwszConnectionName, fFallBackToDefaultSettings, fSetAutoDiscoverForDefaultSettings, pdwSettingsVersion, pfDefaultSettingsAreReturned, pWinHttpProxySettings)
# hSession : void* -> "void*"
# pcwszConnectionName : LPCWSTR optional -> "char*"
# fFallBackToDefaultSettings : BOOL -> "bool"
# fSetAutoDiscoverForDefaultSettings : BOOL -> "bool"
# pdwSettingsVersion : DWORD* out -> "void*"
# pfDefaultSettingsAreReturned : BOOL* out -> "void*"
# pWinHttpProxySettings : WINHTTP_PROXY_SETTINGS* out -> "void*"
# なでしこ1は32bit・ANSI(Shift_JIS)。文字列=char*(ANSI)、ポインタ/ハンドル=void*(4byte)。