WlanHostedNetworkForceStop
関数シグネチャ
// wlanapi.dll
#include <windows.h>
DWORD WlanHostedNetworkForceStop(
HANDLE hClientHandle,
WLAN_HOSTED_NETWORK_REASON* pFailReason, // optional
void* pvReserved // optional
);パラメーター
| 名前 | 型 | 方向 | 説明 |
|---|---|---|---|
| hClientHandle | HANDLE | in | クライアントのセッションハンドル。WlanOpenHandle 関数の以前の呼び出しによって返された値です。 |
| pFailReason | WLAN_HOSTED_NETWORK_REASON* | outoptional | WlanHostedNetworkForceStop 関数の呼び出しが失敗した場合に、その失敗理由を受け取る値への省略可能なポインター。失敗理由として指定される値は、Wlanapi.h ヘッダーファイルで定義されている WLAN_HOSTED_NETWORK_REASON 列挙型の値です。 |
| pvReserved | void* | optional | 将来の使用のために予約されています。このパラメーターは NULL でなければなりません。 |
戻り値の型: DWORD
公式ドキュメント
要求をアプリケーションの呼び出し元ハンドルに関連付けることなく、ワイヤレス Hosted Network を wlan_hosted_network_idle に遷移させます。
戻り値
関数が成功した場合、戻り値は ERROR_SUCCESS です。
関数が失敗した場合、戻り値は次のいずれかのリターンコードになることがあります。
| リターンコード | 説明 |
|---|---|
| ハンドルが無効です。このエラーは、hClientHandle パラメーターで指定されたハンドルがハンドルテーブル内に見つからなかった場合に返されます。 | |
パラメーターが正しくありません。このエラーは、次のいずれかの条件に該当する場合に返されます。
|
|
| 要求された操作を実行するための正しい状態にリソースがありません。 | |
| サービスが開始されていません。このエラーは、WLAN AutoConfig サービスが実行されていない場合に返されます。 | |
|
さまざまな RPC エラーやその他のエラーコード。返されたエラーのメッセージ文字列を取得するには、 FormatMessage を使用してください。 |
解説(Remarks)
WlanHostedNetworkForceStop 関数は、Windows 7 および Wireless LAN サービスがインストールされた Windows Server 2008 R2 でワイヤレス Hosted Network をサポートするために追加された、ネイティブワイヤレス API の拡張機能です。
クライアントアプリケーションは、Hosted Network を強制的に停止し、要求をアプリケーションの呼び出し元ハンドルに関連付けることなくワイヤレス Hosted Network を wlan_hosted_network_idle に遷移させるために、WlanHostedNetworkForceStop 関数を呼び出します。通常、クライアントは以前に成功した WlanHostedNetworkForceStart 関数の呼び出しに対応させるために WlanHostedNetworkForceStop 関数を呼び出します。
Hosted Network の状態が wlan_hosted_network_active でない場合、WlanHostedNetworkForceStop 関数は失敗することがあります。
この関数によって生じた Hosted Network の状態変化は、呼び出し元のアプリケーションが呼び出し元ハンドルを閉じても (hClientHandle パラメーターを指定して WlanCloseHandle を呼び出した場合)、またはプロセスが終了しても、自動的に元に戻されることはありません。
ワイヤレス Hosted Network を長時間実行することに伴う消費電力の増加を了承した昇格されたシステムユーザーが以前に WlanHostedNetworkForceStart を呼び出した後、アプリケーションが Hosted Network を停止するために WlanHostedNetworkForceStop 関数を呼び出すことがあります。
すべてのユーザーが WlanHostedNetworkForceStop 関数を呼び出して Hosted Network を強制的に停止できます。ただし、ドメイン環境では、ワイヤレス Hosted Network を有効にする機能がグループポリシーによって制限される場合があります。
Windows 7 以降では、Hosted Network に対応したワイヤレスアダプターがコンピューターに存在する場合、オペレーティングシステムは仮想デバイスをインストールします。コンピューターにワイヤレスネットワークアダプターが 1 つだけ搭載されている場合、この仮想デバイスは通常「ネットワーク接続フォルダー」に、デバイス名が 'Microsoft Virtual WiFi Miniport adapter' の 'ワイヤレス ネットワーク接続 2' として表示されます。この仮想デバイスはソフトウェアアクセスポイント (SoftAP) 接続を行うためだけに使用され、WlanEnumInterfaces 関数が返す一覧には含まれません。この仮想デバイスの有効期間は、物理ワイヤレスアダプターと連動します。物理ワイヤレスアダプターが無効化されると、この仮想デバイスも削除されます。この機能は、Wireless LAN サービスがインストールされた Windows Server 2008 R2 でも利用できます。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
各言語での呼び出し定義
// wlanapi.dll
#include <windows.h>
DWORD WlanHostedNetworkForceStop(
HANDLE hClientHandle,
WLAN_HOSTED_NETWORK_REASON* pFailReason, // optional
void* pvReserved // optional
);[DllImport("wlanapi.dll", ExactSpelling = true)]
static extern uint WlanHostedNetworkForceStop(
IntPtr hClientHandle, // HANDLE
IntPtr pFailReason, // WLAN_HOSTED_NETWORK_REASON* optional, out
IntPtr pvReserved // void* optional
);<DllImport("wlanapi.dll", ExactSpelling:=True)>
Public Shared Function WlanHostedNetworkForceStop(
hClientHandle As IntPtr, ' HANDLE
pFailReason As IntPtr, ' WLAN_HOSTED_NETWORK_REASON* optional, out
pvReserved As IntPtr ' void* optional
) As UInteger
End Function' hClientHandle : HANDLE
' pFailReason : WLAN_HOSTED_NETWORK_REASON* optional, out
' pvReserved : void* optional
Declare PtrSafe Function WlanHostedNetworkForceStop Lib "wlanapi" ( _
ByVal hClientHandle As LongPtr, _
ByVal pFailReason As LongPtr, _
ByVal pvReserved As LongPtr) As Long
' VBA7前提(PtrSafe)。32bit Office では LongPtr→Long。Integer=16bit / Long=32bit / LongLong=64bit。import ctypes
from ctypes import wintypes
WlanHostedNetworkForceStop = ctypes.windll.wlanapi.WlanHostedNetworkForceStop
WlanHostedNetworkForceStop.restype = wintypes.DWORD
WlanHostedNetworkForceStop.argtypes = [
wintypes.HANDLE, # hClientHandle : HANDLE
ctypes.c_void_p, # pFailReason : WLAN_HOSTED_NETWORK_REASON* optional, out
ctypes.POINTER(None), # pvReserved : void* optional
]require 'fiddle'
require 'fiddle/import'
lib = Fiddle.dlopen('wlanapi.dll')
WlanHostedNetworkForceStop = Fiddle::Function.new(
lib['WlanHostedNetworkForceStop'],
[
Fiddle::TYPE_VOIDP, # hClientHandle : HANDLE
Fiddle::TYPE_VOIDP, # pFailReason : WLAN_HOSTED_NETWORK_REASON* optional, out
Fiddle::TYPE_VOIDP, # pvReserved : void* optional
],
-Fiddle::TYPE_INT)#[link(name = "wlanapi")]
extern "system" {
fn WlanHostedNetworkForceStop(
hClientHandle: *mut core::ffi::c_void, // HANDLE
pFailReason: *mut i32, // WLAN_HOSTED_NETWORK_REASON* optional, out
pvReserved: *mut () // void* optional
) -> u32;
}
// crates: windows-sys provides ready-made bindings for this API.$sig = @"
[DllImport("wlanapi.dll")]
public static extern uint WlanHostedNetworkForceStop(IntPtr hClientHandle, IntPtr pFailReason, IntPtr pvReserved);
"@
$api = Add-Type -MemberDefinition $sig -Name 'wlanapi_WlanHostedNetworkForceStop' -Namespace Win32 -PassThru
# $api::WlanHostedNetworkForceStop(hClientHandle, pFailReason, pvReserved)#uselib "wlanapi.dll"
#func global WlanHostedNetworkForceStop "WlanHostedNetworkForceStop" sptr, sptr, sptr
; WlanHostedNetworkForceStop hClientHandle, varptr(pFailReason), pvReserved ; 戻り値は stat
; hClientHandle : HANDLE -> "sptr"
; pFailReason : WLAN_HOSTED_NETWORK_REASON* optional, out -> "sptr"
; pvReserved : void* optional -> "sptr"
; ※HSP3.7は #func のため戻り値はシステム変数 stat に格納されます。#uselib "wlanapi.dll" #cfunc global WlanHostedNetworkForceStop "WlanHostedNetworkForceStop" sptr, var, sptr ; res = WlanHostedNetworkForceStop(hClientHandle, pFailReason, pvReserved) ; hClientHandle : HANDLE -> "sptr" ; pFailReason : WLAN_HOSTED_NETWORK_REASON* optional, out -> "var" ; pvReserved : void* optional -> "sptr" ; ※出力/バッファ引数は var 方式(変数を直接渡す)。varptr 方式にも切替可。#uselib "wlanapi.dll" #cfunc global WlanHostedNetworkForceStop "WlanHostedNetworkForceStop" sptr, sptr, sptr ; res = WlanHostedNetworkForceStop(hClientHandle, varptr(pFailReason), pvReserved) ; hClientHandle : HANDLE -> "sptr" ; pFailReason : WLAN_HOSTED_NETWORK_REASON* optional, out -> "sptr" ; pvReserved : void* optional -> "sptr" ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。
; DWORD WlanHostedNetworkForceStop(HANDLE hClientHandle, WLAN_HOSTED_NETWORK_REASON* pFailReason, void* pvReserved) #uselib "wlanapi.dll" #cfunc global WlanHostedNetworkForceStop "WlanHostedNetworkForceStop" intptr, var, intptr ; res = WlanHostedNetworkForceStop(hClientHandle, pFailReason, pvReserved) ; hClientHandle : HANDLE -> "intptr" ; pFailReason : WLAN_HOSTED_NETWORK_REASON* optional, out -> "var" ; pvReserved : void* optional -> "intptr" ; ※出力/バッファ引数は var 方式(変数を直接渡す)。varptr 方式にも切替可。; DWORD WlanHostedNetworkForceStop(HANDLE hClientHandle, WLAN_HOSTED_NETWORK_REASON* pFailReason, void* pvReserved) #uselib "wlanapi.dll" #cfunc global WlanHostedNetworkForceStop "WlanHostedNetworkForceStop" intptr, intptr, intptr ; res = WlanHostedNetworkForceStop(hClientHandle, varptr(pFailReason), pvReserved) ; hClientHandle : HANDLE -> "intptr" ; pFailReason : WLAN_HOSTED_NETWORK_REASON* optional, out -> "intptr" ; pvReserved : void* optional -> "intptr" ; ※出力/バッファ引数はポインタ方式(token=intptr / 呼び出しは varptr(変数))。
import (
"golang.org/x/sys/windows"
"unsafe"
)
var (
wlanapi = windows.NewLazySystemDLL("wlanapi.dll")
procWlanHostedNetworkForceStop = wlanapi.NewProc("WlanHostedNetworkForceStop")
)
// hClientHandle (HANDLE), pFailReason (WLAN_HOSTED_NETWORK_REASON* optional, out), pvReserved (void* optional)
r1, _, err := procWlanHostedNetworkForceStop.Call(
uintptr(hClientHandle),
uintptr(pFailReason),
uintptr(pvReserved),
)
_ = err // syscall.Errno (valid when the call sets last-error)
_ = r1 // DWORDfunction WlanHostedNetworkForceStop(
hClientHandle: THandle; // HANDLE
pFailReason: Pointer; // WLAN_HOSTED_NETWORK_REASON* optional, out
pvReserved: Pointer // void* optional
): DWORD; stdcall;
external 'wlanapi.dll' name 'WlanHostedNetworkForceStop';result := DllCall("wlanapi\WlanHostedNetworkForceStop"
, "Ptr", hClientHandle ; HANDLE
, "Ptr", pFailReason ; WLAN_HOSTED_NETWORK_REASON* optional, out
, "Ptr", pvReserved ; void* optional
, "UInt") ; return: DWORD●WlanHostedNetworkForceStop(hClientHandle, pFailReason, pvReserved) = DLL("wlanapi.dll", "dword WlanHostedNetworkForceStop(void*, void*, void*)")
# 呼び出し: WlanHostedNetworkForceStop(hClientHandle, pFailReason, pvReserved)
# hClientHandle : HANDLE -> "void*"
# pFailReason : WLAN_HOSTED_NETWORK_REASON* optional, out -> "void*"
# pvReserved : void* optional -> "void*"
# なでしこ1は32bit・ANSI(Shift_JIS)。文字列=char*(ANSI)、ポインタ/ハンドル=void*(4byte)。const std = @import("std");
extern "wlanapi" fn WlanHostedNetworkForceStop(
hClientHandle: ?*anyopaque, // HANDLE
pFailReason: [*c]i32, // WLAN_HOSTED_NETWORK_REASON* optional, out
pvReserved: ?*anyopaque // void* optional
) callconv(std.os.windows.WINAPI) u32;proc WlanHostedNetworkForceStop(
hClientHandle: pointer, # HANDLE
pFailReason: ptr int32, # WLAN_HOSTED_NETWORK_REASON* optional, out
pvReserved: pointer # void* optional
): uint32 {.importc: "WlanHostedNetworkForceStop", stdcall, dynlib: "wlanapi.dll".}pragma(lib, "wlanapi");
extern(Windows)
uint WlanHostedNetworkForceStop(
void* hClientHandle, // HANDLE
int* pFailReason, // WLAN_HOSTED_NETWORK_REASON* optional, out
void* pvReserved // void* optional
);ccall((:WlanHostedNetworkForceStop, "wlanapi.dll"), stdcall, UInt32,
(Ptr{Cvoid}, Ptr{Int32}, Ptr{Cvoid}),
hClientHandle, pFailReason, pvReserved)
# hClientHandle : HANDLE -> Ptr{Cvoid}
# pFailReason : WLAN_HOSTED_NETWORK_REASON* optional, out -> Ptr{Int32}
# pvReserved : void* optional -> Ptr{Cvoid}
# stdcall は 32bit のみ意味を持つ(x64 では無視)。local ffi = require("ffi")
ffi.cdef[[
uint32_t WlanHostedNetworkForceStop(
void* hClientHandle,
int32_t* pFailReason,
void* pvReserved);
]]
local wlanapi = ffi.load("wlanapi")
-- wlanapi.WlanHostedNetworkForceStop(hClientHandle, pFailReason, pvReserved)
-- hClientHandle : HANDLE
-- pFailReason : WLAN_HOSTED_NETWORK_REASON* optional, out
-- pvReserved : void* optional
-- 構造体/GUIDへのポインタは cdef が通るよう void* で表記(実型は各引数コメント参照)。値渡し構造体・enum は対応する typedef を cdef に追加すること。const koffi = require('koffi');
const lib = koffi.load('wlanapi.dll');
const WlanHostedNetworkForceStop = lib.func('__stdcall', 'WlanHostedNetworkForceStop', 'uint32_t', ['void *', 'int32_t *', 'void *']);
// WlanHostedNetworkForceStop(hClientHandle, pFailReason, pvReserved)
// hClientHandle : HANDLE -> 'void *'
// pFailReason : WLAN_HOSTED_NETWORK_REASON* optional, out -> 'int32_t *'
// pvReserved : void* optional -> 'void *'
// 出力ポインタは koffi.out(...) で包む。構造体は koffi.struct で定義。const lib = Deno.dlopen("wlanapi.dll", {
WlanHostedNetworkForceStop: { parameters: ["pointer", "pointer", "pointer"], result: "u32" },
});
// lib.symbols.WlanHostedNetworkForceStop(hClientHandle, pFailReason, pvReserved)
// hClientHandle : HANDLE -> "pointer"
// pFailReason : WLAN_HOSTED_NETWORK_REASON* optional, out -> "pointer"
// pvReserved : void* optional -> "pointer"
// 文字列引数は "buffer"(NUL 終端のバイト列を Uint8Array で渡す)。
// 値渡し構造体は { struct: [ ...field types... ] } を使用。<?php
$ffi = FFI::cdef(<<<C
uint32_t WlanHostedNetworkForceStop(
void* hClientHandle,
int32_t* pFailReason,
void* pvReserved);
C, "wlanapi.dll");
// $ffi->WlanHostedNetworkForceStop(hClientHandle, pFailReason, pvReserved);
// hClientHandle : HANDLE
// pFailReason : WLAN_HOSTED_NETWORK_REASON* optional, out
// pvReserved : void* optional
// 構造体/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 Wlanapi extends StdCallLibrary {
Wlanapi INSTANCE = Native.load("wlanapi", Wlanapi.class);
int WlanHostedNetworkForceStop(
Pointer hClientHandle, // HANDLE
IntByReference pFailReason, // WLAN_HOSTED_NETWORK_REASON* optional, out
Pointer pvReserved // void* optional
);
}@[Link("wlanapi")]
lib Libwlanapi
fun WlanHostedNetworkForceStop = WlanHostedNetworkForceStop(
hClientHandle : Void*, # HANDLE
pFailReason : Int32*, # WLAN_HOSTED_NETWORK_REASON* optional, out
pvReserved : Void* # void* optional
) : UInt32
end
# 構造体/GUID/enum は lib 内に対応する型定義が必要。
# 呼出規約: x64 は規約統一のため OK。x86(32bit)は WINAPI=stdcall だが Crystal の fun に stdcall 付与構文がなく非対応。import 'dart:ffi';
import 'package:ffi/ffi.dart';
typedef WlanHostedNetworkForceStopNative = Uint32 Function(Pointer<Void>, Pointer<Int32>, Pointer<Void>);
typedef WlanHostedNetworkForceStopDart = int Function(Pointer<Void>, Pointer<Int32>, Pointer<Void>);
final WlanHostedNetworkForceStop = DynamicLibrary.open('wlanapi.dll')
.lookupFunction<WlanHostedNetworkForceStopNative, WlanHostedNetworkForceStopDart>('WlanHostedNetworkForceStop');
// hClientHandle : HANDLE -> Pointer<Void>
// pFailReason : WLAN_HOSTED_NETWORK_REASON* optional, out -> Pointer<Int32>
// pvReserved : void* optional -> Pointer<Void>
// 文字列は package:ffi の "...".toNativeUtf16()/toNativeUtf8() で変換。{$mode objfpc}{$H+}
function WlanHostedNetworkForceStop(
hClientHandle: THandle; // HANDLE
pFailReason: Pointer; // WLAN_HOSTED_NETWORK_REASON* optional, out
pvReserved: Pointer // void* optional
): DWORD; stdcall;
external 'wlanapi.dll' name 'WlanHostedNetworkForceStop';import Foreign
import Foreign.C.Types
import Foreign.C.String
foreign import stdcall safe "WlanHostedNetworkForceStop"
c_WlanHostedNetworkForceStop :: Ptr () -> Ptr Int32 -> Ptr () -> IO Word32
-- hClientHandle : HANDLE -> Ptr ()
-- pFailReason : WLAN_HOSTED_NETWORK_REASON* optional, out -> Ptr Int32
-- pvReserved : void* optional -> Ptr ()
-- 要 GHC(Windows)。stdcall は x64 では ccall として扱われる。ブロックする API は safe 呼び出し推奨。open Ctypes
open Foreign
let wlanhostednetworkforcestop =
foreign "WlanHostedNetworkForceStop"
((ptr void) @-> (ptr int32_t) @-> (ptr void) @-> returning uint32_t)
(* hClientHandle : HANDLE -> (ptr void) *)
(* pFailReason : WLAN_HOSTED_NETWORK_REASON* optional, out -> (ptr int32_t) *)
(* pvReserved : void* optional -> (ptr void) *)
(* foreign は cdecl 前提。x64 Windows では WINAPI と一致。構造体は ctypes structure を定義のこと。 *)(cffi:define-foreign-library wlanapi (t "wlanapi.dll"))
(cffi:use-foreign-library wlanapi)
(cffi:defcfun ("WlanHostedNetworkForceStop" wlan-hosted-network-force-stop :convention :stdcall) :uint32
(h-client-handle :pointer) ; HANDLE
(p-fail-reason :pointer) ; WLAN_HOSTED_NETWORK_REASON* optional, out
(pv-reserved :pointer)) ; void* optional
; isize/usize(INT_PTR/SIZE_T)は x64 前提で :int64/:uint64。x86 では :int32/:uint32。use Win32::API;
my $WlanHostedNetworkForceStop = Win32::API::More->new('wlanapi',
'DWORD WlanHostedNetworkForceStop(HANDLE hClientHandle, LPVOID pFailReason, LPVOID pvReserved)');
# my $ret = $WlanHostedNetworkForceStop->Call($hClientHandle, $pFailReason, $pvReserved);
# hClientHandle : HANDLE -> HANDLE
# pFailReason : WLAN_HOSTED_NETWORK_REASON* optional, out -> LPVOID
# pvReserved : void* optional -> LPVOID
# 値渡し構造体は pack() した文字列、または Win32::API::Struct を使用。関連項目
- e WLAN_SECURABLE_OBJECT
- f WlanCloseHandle — WLAN APIのクライアントハンドルを閉じる。
- f WlanEnumInterfaces — システム上の無線LANインターフェイス一覧を列挙する。
- f WlanHostedNetworkForceStart — ホストネットワークを参照カウントに関係なく強制的に開始する。
- f WlanHostedNetworkQueryStatus — ホストネットワークの現在の状態情報を取得する。
- f WlanHostedNetworkStartUsing — ホストネットワーク(ソフトAP)機能の使用を開始する。
- f WlanHostedNetworkStopUsing — ホストネットワークの使用を停止し参照カウントを減らす。
- f WlanOpenHandle — WLAN APIへのクライアントハンドルを開いて接続する。