ホーム › System.Rpc › RpcNsGroupMbrRemoveW
RpcNsGroupMbrRemoveW
関数ネームサービスのグループからメンバーを削除する(Unicode版)。
シグネチャ
// RPCNS4.dll (Unicode / -W)
#include <windows.h>
RPC_STATUS RpcNsGroupMbrRemoveW(
DWORD GroupNameSyntax,
LPWSTR GroupName,
DWORD MemberNameSyntax,
LPWSTR MemberName
);パラメーター
| 名前 | 型 | 方向 | 説明 |
|---|---|---|---|
| GroupNameSyntax | DWORD | in | GroupName の構文。 レジストリの値エントリ HKEY_LOCAL_MACHINE\Software\Microsoft\Rpc\NameService\DefaultSyntax で指定された構文を使用するには、RPC_C_NS_SYNTAX_DEFAULT を指定します。 |
| GroupName | LPWSTR | in | メンバー名を削除する対象の RPC グループ名へのポインター。 |
| MemberNameSyntax | DWORD | in | MemberName パラメーターで使用する構文。 レジストリの値エントリ HKEY_LOCAL_MACHINE\Software\Microsoft\Rpc\NameService\DefaultSyntax で指定された構文を使用するには、RPC_C_NS_SYNTAX_DEFAULT を指定します。 |
| MemberName | LPWSTR | in | エントリ GroupName の RPC グループ属性から削除するメンバーの名前へのポインター。 |
戻り値の型: RPC_STATUS
公式ドキュメント
RpcNsGroupMbrRemove 関数は、グループからエントリ名を削除します。(Unicode)
戻り値
| 値 | 意味 |
|---|---|
| 呼び出しは成功しました。 | |
| 名前の構文が無効です。 | |
| 名前の構文がサポートされていません。 | |
| 名前が不完全です。 | |
| 名前サービスのエントリが見つかりませんでした。 | |
| 名前サービスを利用できません。 | |
| グループのメンバーが見つかりませんでした。 |
メモ 有効なエラーコードの一覧については、
RPC Return Values を参照してください。
解説(Remarks)
RpcNsGroupMbrRemove 関数は、GroupName パラメーターで指定された RPC グループ属性からメンバーを削除します。
メモ Windows 2000 Active Directory はこの関数をサポートしています。それ以前のバージョンの Windows NT では、この関数は Cell Directory Service (CDS) でのみ使用できます。
メモ
rpcnsi.h ヘッダーは、RpcNsGroupMbrRemove を、UNICODE プリプロセッサ定数の定義に応じてこの関数の ANSI 版または Unicode 版を自動的に選択するエイリアスとして定義しています。エンコーディング中立のエイリアスの使用と、エンコーディング中立でないコードを混在させると、不一致が生じてコンパイルエラーや実行時エラーの原因となる可能性があります。詳細については、関数プロトタイプの規則 を参照してください。
出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
各言語での呼び出し定義
// RPCNS4.dll (Unicode / -W)
#include <windows.h>
RPC_STATUS RpcNsGroupMbrRemoveW(
DWORD GroupNameSyntax,
LPWSTR GroupName,
DWORD MemberNameSyntax,
LPWSTR MemberName
);[DllImport("RPCNS4.dll", CharSet = CharSet.Unicode, ExactSpelling = true)]
static extern int RpcNsGroupMbrRemoveW(
uint GroupNameSyntax, // DWORD
[MarshalAs(UnmanagedType.LPWStr)] string GroupName, // LPWSTR
uint MemberNameSyntax, // DWORD
[MarshalAs(UnmanagedType.LPWStr)] string MemberName // LPWSTR
);<DllImport("RPCNS4.dll", CharSet:=CharSet.Unicode, ExactSpelling:=True)>
Public Shared Function RpcNsGroupMbrRemoveW(
GroupNameSyntax As UInteger, ' DWORD
<MarshalAs(UnmanagedType.LPWStr)> GroupName As String, ' LPWSTR
MemberNameSyntax As UInteger, ' DWORD
<MarshalAs(UnmanagedType.LPWStr)> MemberName As String ' LPWSTR
) As Integer
End Function' GroupNameSyntax : DWORD
' GroupName : LPWSTR
' MemberNameSyntax : DWORD
' MemberName : LPWSTR
Declare PtrSafe Function RpcNsGroupMbrRemoveW Lib "rpcns4" ( _
ByVal GroupNameSyntax As Long, _
ByVal GroupName As LongPtr, _
ByVal MemberNameSyntax As Long, _
ByVal MemberName As LongPtr) As Long
' Unicode(W): 文字列は ByVal As LongPtr とし StrPtr(unicodeStr) を渡す
' VBA7前提(PtrSafe)。32bit Office では LongPtr→Long。Integer=16bit / Long=32bit / LongLong=64bit。import ctypes
from ctypes import wintypes
RpcNsGroupMbrRemoveW = ctypes.windll.rpcns4.RpcNsGroupMbrRemoveW
RpcNsGroupMbrRemoveW.restype = ctypes.c_int
RpcNsGroupMbrRemoveW.argtypes = [
wintypes.DWORD, # GroupNameSyntax : DWORD
wintypes.LPCWSTR, # GroupName : LPWSTR
wintypes.DWORD, # MemberNameSyntax : DWORD
wintypes.LPCWSTR, # MemberName : LPWSTR
]require 'fiddle'
require 'fiddle/import'
lib = Fiddle.dlopen('RPCNS4.dll')
RpcNsGroupMbrRemoveW = Fiddle::Function.new(
lib['RpcNsGroupMbrRemoveW'],
[
-Fiddle::TYPE_INT, # GroupNameSyntax : DWORD
Fiddle::TYPE_VOIDP, # GroupName : LPWSTR
-Fiddle::TYPE_INT, # MemberNameSyntax : DWORD
Fiddle::TYPE_VOIDP, # MemberName : LPWSTR
],
Fiddle::TYPE_INT)
# Wide strings: pass str.encode("UTF-16LE") + "\x00\x00"#[link(name = "rpcns4")]
extern "system" {
fn RpcNsGroupMbrRemoveW(
GroupNameSyntax: u32, // DWORD
GroupName: *mut u16, // LPWSTR
MemberNameSyntax: u32, // DWORD
MemberName: *mut u16 // LPWSTR
) -> i32;
}
// crates: windows-sys provides ready-made bindings for this API.$sig = @"
[DllImport("RPCNS4.dll", CharSet = CharSet.Unicode)]
public static extern int RpcNsGroupMbrRemoveW(uint GroupNameSyntax, [MarshalAs(UnmanagedType.LPWStr)] string GroupName, uint MemberNameSyntax, [MarshalAs(UnmanagedType.LPWStr)] string MemberName);
"@
$api = Add-Type -MemberDefinition $sig -Name 'RPCNS4_RpcNsGroupMbrRemoveW' -Namespace Win32 -PassThru
# $api::RpcNsGroupMbrRemoveW(GroupNameSyntax, GroupName, MemberNameSyntax, MemberName)#uselib "RPCNS4.dll"
#func global RpcNsGroupMbrRemoveW "RpcNsGroupMbrRemoveW" wptr, wptr, wptr, wptr
; RpcNsGroupMbrRemoveW GroupNameSyntax, GroupName, MemberNameSyntax, MemberName ; 戻り値は stat
; GroupNameSyntax : DWORD -> "wptr"
; GroupName : LPWSTR -> "wptr"
; MemberNameSyntax : DWORD -> "wptr"
; MemberName : LPWSTR -> "wptr"
; ※HSP3.7は #func のため戻り値はシステム変数 stat に格納されます。#uselib "RPCNS4.dll"
#cfunc global RpcNsGroupMbrRemoveW "RpcNsGroupMbrRemoveW" int, wstr, int, wstr
; res = RpcNsGroupMbrRemoveW(GroupNameSyntax, GroupName, MemberNameSyntax, MemberName)
; GroupNameSyntax : DWORD -> "int"
; GroupName : LPWSTR -> "wstr"
; MemberNameSyntax : DWORD -> "int"
; MemberName : LPWSTR -> "wstr"; RPC_STATUS RpcNsGroupMbrRemoveW(DWORD GroupNameSyntax, LPWSTR GroupName, DWORD MemberNameSyntax, LPWSTR MemberName)
#uselib "RPCNS4.dll"
#cfunc global RpcNsGroupMbrRemoveW "RpcNsGroupMbrRemoveW" int, wstr, int, wstr
; res = RpcNsGroupMbrRemoveW(GroupNameSyntax, GroupName, MemberNameSyntax, MemberName)
; GroupNameSyntax : DWORD -> "int"
; GroupName : LPWSTR -> "wstr"
; MemberNameSyntax : DWORD -> "int"
; MemberName : LPWSTR -> "wstr"import (
"golang.org/x/sys/windows"
"unsafe"
)
var (
rpcns4 = windows.NewLazySystemDLL("RPCNS4.dll")
procRpcNsGroupMbrRemoveW = rpcns4.NewProc("RpcNsGroupMbrRemoveW")
)
// GroupNameSyntax (DWORD), GroupName (LPWSTR), MemberNameSyntax (DWORD), MemberName (LPWSTR)
r1, _, err := procRpcNsGroupMbrRemoveW.Call(
uintptr(GroupNameSyntax),
uintptr(unsafe.Pointer(windows.StringToUTF16Ptr(GroupName))),
uintptr(MemberNameSyntax),
uintptr(unsafe.Pointer(windows.StringToUTF16Ptr(MemberName))),
)
_ = err // syscall.Errno (valid when the call sets last-error)
_ = r1 // RPC_STATUSfunction RpcNsGroupMbrRemoveW(
GroupNameSyntax: DWORD; // DWORD
GroupName: PWideChar; // LPWSTR
MemberNameSyntax: DWORD; // DWORD
MemberName: PWideChar // LPWSTR
): Integer; stdcall;
external 'RPCNS4.dll' name 'RpcNsGroupMbrRemoveW';result := DllCall("RPCNS4\RpcNsGroupMbrRemoveW"
, "UInt", GroupNameSyntax ; DWORD
, "WStr", GroupName ; LPWSTR
, "UInt", MemberNameSyntax ; DWORD
, "WStr", MemberName ; LPWSTR
, "Int") ; return: RPC_STATUS●RpcNsGroupMbrRemoveW(GroupNameSyntax, GroupName, MemberNameSyntax, MemberName) = DLL("RPCNS4.dll", "int RpcNsGroupMbrRemoveW(dword, char*, dword, char*)")
# 呼び出し: RpcNsGroupMbrRemoveW(GroupNameSyntax, GroupName, MemberNameSyntax, MemberName)
# GroupNameSyntax : DWORD -> "dword"
# GroupName : LPWSTR -> "char*"
# MemberNameSyntax : DWORD -> "dword"
# MemberName : LPWSTR -> "char*"
# なでしこ1は32bit・ANSI(Shift_JIS)。文字列=char*(ANSI)、ポインタ/ハンドル=void*(4byte)。
# ※-W(Unicode)関数。なでしこ1はANSIのため -A 版の利用を推奨。const std = @import("std");
extern "rpcns4" fn RpcNsGroupMbrRemoveW(
GroupNameSyntax: u32, // DWORD
GroupName: [*c]const u16, // LPWSTR
MemberNameSyntax: u32, // DWORD
MemberName: [*c]const u16 // LPWSTR
) callconv(std.os.windows.WINAPI) i32;
// Unicode(-W): UTF-16LE のヌル終端バッファ([*c]const u16)を渡す。proc RpcNsGroupMbrRemoveW(
GroupNameSyntax: uint32, # DWORD
GroupName: WideCString, # LPWSTR
MemberNameSyntax: uint32, # DWORD
MemberName: WideCString # LPWSTR
): int32 {.importc: "RpcNsGroupMbrRemoveW", stdcall, dynlib: "RPCNS4.dll".}
# Unicode(-W): WideCString は newWideCString("...") で生成。pragma(lib, "rpcns4");
extern(Windows)
int RpcNsGroupMbrRemoveW(
uint GroupNameSyntax, // DWORD
const(wchar)* GroupName, // LPWSTR
uint MemberNameSyntax, // DWORD
const(wchar)* MemberName // LPWSTR
);ccall((:RpcNsGroupMbrRemoveW, "RPCNS4.dll"), stdcall, Int32,
(UInt32, Cwstring, UInt32, Cwstring),
GroupNameSyntax, GroupName, MemberNameSyntax, MemberName)
# GroupNameSyntax : DWORD -> UInt32
# GroupName : LPWSTR -> Cwstring
# MemberNameSyntax : DWORD -> UInt32
# MemberName : LPWSTR -> Cwstring
# stdcall は 32bit のみ意味を持つ(x64 では無視)。
# Unicode(-W): Cwstring には transcode(UInt16, "...") 等で UTF-16 を渡す。local ffi = require("ffi")
ffi.cdef[[
int32_t RpcNsGroupMbrRemoveW(
uint32_t GroupNameSyntax,
const uint16_t* GroupName,
uint32_t MemberNameSyntax,
const uint16_t* MemberName);
]]
local rpcns4 = ffi.load("rpcns4")
-- rpcns4.RpcNsGroupMbrRemoveW(GroupNameSyntax, GroupName, MemberNameSyntax, MemberName)
-- GroupNameSyntax : DWORD
-- GroupName : LPWSTR
-- MemberNameSyntax : DWORD
-- MemberName : LPWSTR
-- 構造体/GUIDへのポインタは cdef が通るよう void* で表記(実型は各引数コメント参照)。値渡し構造体・enum は対応する typedef を cdef に追加すること。
-- Unicode(-W): uint16_t* には UTF-16LE のバッファ(ffi.new("uint16_t[?]", ...))を渡す。const koffi = require('koffi');
const lib = koffi.load('RPCNS4.dll');
const RpcNsGroupMbrRemoveW = lib.func('__stdcall', 'RpcNsGroupMbrRemoveW', 'int32_t', ['uint32_t', 'str16', 'uint32_t', 'str16']);
// RpcNsGroupMbrRemoveW(GroupNameSyntax, GroupName, MemberNameSyntax, MemberName)
// GroupNameSyntax : DWORD -> 'uint32_t'
// GroupName : LPWSTR -> 'str16'
// MemberNameSyntax : DWORD -> 'uint32_t'
// MemberName : LPWSTR -> 'str16'
// 出力ポインタは koffi.out(...) で包む。構造体は koffi.struct で定義。const lib = Deno.dlopen("RPCNS4.dll", {
RpcNsGroupMbrRemoveW: { parameters: ["u32", "buffer", "u32", "buffer"], result: "i32" },
});
// lib.symbols.RpcNsGroupMbrRemoveW(GroupNameSyntax, GroupName, MemberNameSyntax, MemberName)
// GroupNameSyntax : DWORD -> "u32"
// GroupName : LPWSTR -> "buffer"
// MemberNameSyntax : DWORD -> "u32"
// MemberName : LPWSTR -> "buffer"
// 文字列は "buffer"。Unicode(-W) は new TextEncoder() ではなく UTF-16LE のバイト列(末尾に \x00\x00)を Uint8Array で渡す。
// 値渡し構造体は { struct: [ ...field types... ] } を使用。<?php
$ffi = FFI::cdef(<<<C
int32_t RpcNsGroupMbrRemoveW(
uint32_t GroupNameSyntax,
const uint16_t* GroupName,
uint32_t MemberNameSyntax,
const uint16_t* MemberName);
C, "RPCNS4.dll");
// $ffi->RpcNsGroupMbrRemoveW(GroupNameSyntax, GroupName, MemberNameSyntax, MemberName);
// GroupNameSyntax : DWORD
// GroupName : LPWSTR
// MemberNameSyntax : DWORD
// MemberName : LPWSTR
// 構造体/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 Rpcns4 extends StdCallLibrary {
Rpcns4 INSTANCE = Native.load("rpcns4", Rpcns4.class, W32APIOptions.UNICODE_OPTIONS);
int RpcNsGroupMbrRemoveW(
int GroupNameSyntax, // DWORD
WString GroupName, // LPWSTR
int MemberNameSyntax, // DWORD
WString MemberName // LPWSTR
);
}
// Unicode(-W): WString(入力)/char[](出力)で UTF-16 をマーシャリング。@[Link("rpcns4")]
lib LibRPCNS4
fun RpcNsGroupMbrRemoveW = RpcNsGroupMbrRemoveW(
GroupNameSyntax : UInt32, # DWORD
GroupName : UInt16*, # LPWSTR
MemberNameSyntax : UInt32, # DWORD
MemberName : UInt16* # LPWSTR
) : Int32
end
# 構造体/GUID/enum は lib 内に対応する型定義が必要。
# 呼出規約: x64 は規約統一のため OK。x86(32bit)は WINAPI=stdcall だが Crystal の fun に stdcall 付与構文がなく非対応。import 'dart:ffi';
import 'package:ffi/ffi.dart';
typedef RpcNsGroupMbrRemoveWNative = Int32 Function(Uint32, Pointer<Utf16>, Uint32, Pointer<Utf16>);
typedef RpcNsGroupMbrRemoveWDart = int Function(int, Pointer<Utf16>, int, Pointer<Utf16>);
final RpcNsGroupMbrRemoveW = DynamicLibrary.open('RPCNS4.dll')
.lookupFunction<RpcNsGroupMbrRemoveWNative, RpcNsGroupMbrRemoveWDart>('RpcNsGroupMbrRemoveW');
// GroupNameSyntax : DWORD -> Uint32
// GroupName : LPWSTR -> Pointer<Utf16>
// MemberNameSyntax : DWORD -> Uint32
// MemberName : LPWSTR -> Pointer<Utf16>
// 文字列は package:ffi の "...".toNativeUtf16()/toNativeUtf8() で変換。{$mode objfpc}{$H+}
function RpcNsGroupMbrRemoveW(
GroupNameSyntax: DWORD; // DWORD
GroupName: PWideChar; // LPWSTR
MemberNameSyntax: DWORD; // DWORD
MemberName: PWideChar // LPWSTR
): Integer; stdcall;
external 'RPCNS4.dll' name 'RpcNsGroupMbrRemoveW';import Foreign
import Foreign.C.Types
import Foreign.C.String
foreign import stdcall safe "RpcNsGroupMbrRemoveW"
c_RpcNsGroupMbrRemoveW :: Word32 -> CWString -> Word32 -> CWString -> IO Int32
-- GroupNameSyntax : DWORD -> Word32
-- GroupName : LPWSTR -> CWString
-- MemberNameSyntax : DWORD -> Word32
-- MemberName : LPWSTR -> CWString
-- 要 GHC(Windows)。stdcall は x64 では ccall として扱われる。ブロックする API は safe 呼び出し推奨。open Ctypes
open Foreign
let rpcnsgroupmbrremovew =
foreign "RpcNsGroupMbrRemoveW"
(uint32_t @-> (ptr uint16_t) @-> uint32_t @-> (ptr uint16_t) @-> returning int32_t)
(* GroupNameSyntax : DWORD -> uint32_t *)
(* GroupName : LPWSTR -> (ptr uint16_t) *)
(* MemberNameSyntax : DWORD -> uint32_t *)
(* MemberName : LPWSTR -> (ptr uint16_t) *)
(* foreign は cdecl 前提。x64 Windows では WINAPI と一致。構造体は ctypes structure を定義のこと。 *)(cffi:define-foreign-library rpcns4 (t "RPCNS4.dll"))
(cffi:use-foreign-library rpcns4)
(cffi:defcfun ("RpcNsGroupMbrRemoveW" rpc-ns-group-mbr-remove-w :convention :stdcall) :int32
(group-name-syntax :uint32) ; DWORD
(group-name (:string :encoding :utf-16le)) ; LPWSTR
(member-name-syntax :uint32) ; DWORD
(member-name (:string :encoding :utf-16le))) ; LPWSTR
; isize/usize(INT_PTR/SIZE_T)は x64 前提で :int64/:uint64。x86 では :int32/:uint32。use Win32::API;
my $RpcNsGroupMbrRemoveW = Win32::API::More->new('RPCNS4',
'int RpcNsGroupMbrRemoveW(DWORD GroupNameSyntax, LPCWSTR GroupName, DWORD MemberNameSyntax, LPCWSTR MemberName)');
# my $ret = $RpcNsGroupMbrRemoveW->Call($GroupNameSyntax, $GroupName, $MemberNameSyntax, $MemberName);
# GroupNameSyntax : DWORD -> DWORD
# GroupName : LPWSTR -> LPCWSTR
# MemberNameSyntax : DWORD -> DWORD
# MemberName : LPWSTR -> LPCWSTR
# 値渡し構造体は pack() した文字列、または Win32::API::Struct を使用。
# Unicode(-W): LPCWSTR/LPWSTR は Win32::API が UTF-16 変換を行う。関連項目
文字セット違い
- f RpcNsGroupMbrRemoveA (ANSI版) — ネームサービスのグループからメンバーを削除する(ANSI版)。
公式の関連項目
- f RpcNsGroupMbrAddW — ネームサービスのグループにメンバーを追加する(Unicode版)。
使用する型