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

PrjStartVirtualizing

関数
プロジェクションファイルシステムの仮想化を開始する。
DLLPROJECTEDFSLIB.dll呼出規約winapi対応OSWindows 10 以降

シグネチャ

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

HRESULT PrjStartVirtualizing(
    LPCWSTR virtualizationRootPath,
    const PRJ_CALLBACKS* callbacks,
    const void* instanceContext,   // optional
    const PRJ_STARTVIRTUALIZING_OPTIONS* options,   // optional
    PRJ_NAMESPACE_VIRTUALIZATION_CONTEXT* namespaceVirtualizationContext
);

パラメーター

名前方向
virtualizationRootPathLPCWSTRin
callbacksPRJ_CALLBACKS*in
instanceContextvoid*inoptional
optionsPRJ_STARTVIRTUALIZING_OPTIONS*inoptional
namespaceVirtualizationContextPRJ_NAMESPACE_VIRTUALIZATION_CONTEXT*out

戻り値の型: HRESULT

各言語での呼び出し定義

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

HRESULT PrjStartVirtualizing(
    LPCWSTR virtualizationRootPath,
    const PRJ_CALLBACKS* callbacks,
    const void* instanceContext,   // optional
    const PRJ_STARTVIRTUALIZING_OPTIONS* options,   // optional
    PRJ_NAMESPACE_VIRTUALIZATION_CONTEXT* namespaceVirtualizationContext
);
[DllImport("PROJECTEDFSLIB.dll", ExactSpelling = true)]
static extern int PrjStartVirtualizing(
    [MarshalAs(UnmanagedType.LPWStr)] string virtualizationRootPath,   // LPCWSTR
    IntPtr callbacks,   // PRJ_CALLBACKS*
    IntPtr instanceContext,   // void* optional
    IntPtr options,   // PRJ_STARTVIRTUALIZING_OPTIONS* optional
    IntPtr namespaceVirtualizationContext   // PRJ_NAMESPACE_VIRTUALIZATION_CONTEXT* out
);
<DllImport("PROJECTEDFSLIB.dll", ExactSpelling:=True)>
Public Shared Function PrjStartVirtualizing(
    <MarshalAs(UnmanagedType.LPWStr)> virtualizationRootPath As String,   ' LPCWSTR
    callbacks As IntPtr,   ' PRJ_CALLBACKS*
    instanceContext As IntPtr,   ' void* optional
    options As IntPtr,   ' PRJ_STARTVIRTUALIZING_OPTIONS* optional
    namespaceVirtualizationContext As IntPtr   ' PRJ_NAMESPACE_VIRTUALIZATION_CONTEXT* out
) As Integer
End Function
' virtualizationRootPath : LPCWSTR
' callbacks : PRJ_CALLBACKS*
' instanceContext : void* optional
' options : PRJ_STARTVIRTUALIZING_OPTIONS* optional
' namespaceVirtualizationContext : PRJ_NAMESPACE_VIRTUALIZATION_CONTEXT* out
Declare PtrSafe Function PrjStartVirtualizing Lib "projectedfslib" ( _
    ByVal virtualizationRootPath As LongPtr, _
    ByVal callbacks As LongPtr, _
    ByVal instanceContext As LongPtr, _
    ByVal options As LongPtr, _
    ByVal namespaceVirtualizationContext As LongPtr) As Long
' VBA7前提(PtrSafe)。32bit Office では LongPtr→Long。Integer=16bit / Long=32bit / LongLong=64bit。
import ctypes
from ctypes import wintypes

PrjStartVirtualizing = ctypes.windll.projectedfslib.PrjStartVirtualizing
PrjStartVirtualizing.restype = ctypes.c_int
PrjStartVirtualizing.argtypes = [
    wintypes.LPCWSTR,  # virtualizationRootPath : LPCWSTR
    ctypes.c_void_p,  # callbacks : PRJ_CALLBACKS*
    ctypes.POINTER(None),  # instanceContext : void* optional
    ctypes.c_void_p,  # options : PRJ_STARTVIRTUALIZING_OPTIONS* optional
    ctypes.c_void_p,  # namespaceVirtualizationContext : PRJ_NAMESPACE_VIRTUALIZATION_CONTEXT* out
]
require 'fiddle'
require 'fiddle/import'

lib = Fiddle.dlopen('PROJECTEDFSLIB.dll')
PrjStartVirtualizing = Fiddle::Function.new(
  lib['PrjStartVirtualizing'],
  [
    Fiddle::TYPE_VOIDP,  # virtualizationRootPath : LPCWSTR
    Fiddle::TYPE_VOIDP,  # callbacks : PRJ_CALLBACKS*
    Fiddle::TYPE_VOIDP,  # instanceContext : void* optional
    Fiddle::TYPE_VOIDP,  # options : PRJ_STARTVIRTUALIZING_OPTIONS* optional
    Fiddle::TYPE_VOIDP,  # namespaceVirtualizationContext : PRJ_NAMESPACE_VIRTUALIZATION_CONTEXT* out
  ],
  Fiddle::TYPE_INT)
#[link(name = "projectedfslib")]
extern "system" {
    fn PrjStartVirtualizing(
        virtualizationRootPath: *const u16,  // LPCWSTR
        callbacks: *const PRJ_CALLBACKS,  // PRJ_CALLBACKS*
        instanceContext: *const (),  // void* optional
        options: *const PRJ_STARTVIRTUALIZING_OPTIONS,  // PRJ_STARTVIRTUALIZING_OPTIONS* optional
        namespaceVirtualizationContext: *mut *mut core::ffi::c_void  // PRJ_NAMESPACE_VIRTUALIZATION_CONTEXT* out
    ) -> i32;
}
// crates: windows-sys provides ready-made bindings for this API.
$sig = @"
[DllImport("PROJECTEDFSLIB.dll")]
public static extern int PrjStartVirtualizing([MarshalAs(UnmanagedType.LPWStr)] string virtualizationRootPath, IntPtr callbacks, IntPtr instanceContext, IntPtr options, IntPtr namespaceVirtualizationContext);
"@
$api = Add-Type -MemberDefinition $sig -Name 'PROJECTEDFSLIB_PrjStartVirtualizing' -Namespace Win32 -PassThru
# $api::PrjStartVirtualizing(virtualizationRootPath, callbacks, instanceContext, options, namespaceVirtualizationContext)
#uselib "PROJECTEDFSLIB.dll"
#func global PrjStartVirtualizing "PrjStartVirtualizing" sptr, sptr, sptr, sptr, sptr
; PrjStartVirtualizing virtualizationRootPath, varptr(callbacks), instanceContext, varptr(options), namespaceVirtualizationContext   ; 戻り値は stat
; virtualizationRootPath : LPCWSTR -> "sptr"
; callbacks : PRJ_CALLBACKS* -> "sptr"
; instanceContext : void* optional -> "sptr"
; options : PRJ_STARTVIRTUALIZING_OPTIONS* optional -> "sptr"
; namespaceVirtualizationContext : PRJ_NAMESPACE_VIRTUALIZATION_CONTEXT* out -> "sptr"
; ※HSP3.7は #func のため戻り値はシステム変数 stat に格納されます。
出力引数:
#uselib "PROJECTEDFSLIB.dll"
#cfunc global PrjStartVirtualizing "PrjStartVirtualizing" wstr, var, sptr, var, sptr
; res = PrjStartVirtualizing(virtualizationRootPath, callbacks, instanceContext, options, namespaceVirtualizationContext)
; virtualizationRootPath : LPCWSTR -> "wstr"
; callbacks : PRJ_CALLBACKS* -> "var"
; instanceContext : void* optional -> "sptr"
; options : PRJ_STARTVIRTUALIZING_OPTIONS* optional -> "var"
; namespaceVirtualizationContext : PRJ_NAMESPACE_VIRTUALIZATION_CONTEXT* out -> "sptr"
; ※出力/バッファ引数は var 方式(変数を直接渡す)。varptr 方式にも切替可。
出力引数:
; HRESULT PrjStartVirtualizing(LPCWSTR virtualizationRootPath, PRJ_CALLBACKS* callbacks, void* instanceContext, PRJ_STARTVIRTUALIZING_OPTIONS* options, PRJ_NAMESPACE_VIRTUALIZATION_CONTEXT* namespaceVirtualizationContext)
#uselib "PROJECTEDFSLIB.dll"
#cfunc global PrjStartVirtualizing "PrjStartVirtualizing" wstr, var, intptr, var, intptr
; res = PrjStartVirtualizing(virtualizationRootPath, callbacks, instanceContext, options, namespaceVirtualizationContext)
; virtualizationRootPath : LPCWSTR -> "wstr"
; callbacks : PRJ_CALLBACKS* -> "var"
; instanceContext : void* optional -> "intptr"
; options : PRJ_STARTVIRTUALIZING_OPTIONS* optional -> "var"
; namespaceVirtualizationContext : PRJ_NAMESPACE_VIRTUALIZATION_CONTEXT* out -> "intptr"
; ※出力/バッファ引数は var 方式(変数を直接渡す)。varptr 方式にも切替可。
import (
	"golang.org/x/sys/windows"
	"unsafe"
)

var (
	projectedfslib = windows.NewLazySystemDLL("PROJECTEDFSLIB.dll")
	procPrjStartVirtualizing = projectedfslib.NewProc("PrjStartVirtualizing")
)

// virtualizationRootPath (LPCWSTR), callbacks (PRJ_CALLBACKS*), instanceContext (void* optional), options (PRJ_STARTVIRTUALIZING_OPTIONS* optional), namespaceVirtualizationContext (PRJ_NAMESPACE_VIRTUALIZATION_CONTEXT* out)
r1, _, err := procPrjStartVirtualizing.Call(
	uintptr(unsafe.Pointer(windows.StringToUTF16Ptr(virtualizationRootPath))),
	uintptr(callbacks),
	uintptr(instanceContext),
	uintptr(options),
	uintptr(namespaceVirtualizationContext),
)
_ = err  // syscall.Errno (valid when the call sets last-error)
_ = r1   // HRESULT
function PrjStartVirtualizing(
  virtualizationRootPath: PWideChar;   // LPCWSTR
  callbacks: Pointer;   // PRJ_CALLBACKS*
  instanceContext: Pointer;   // void* optional
  options: Pointer;   // PRJ_STARTVIRTUALIZING_OPTIONS* optional
  namespaceVirtualizationContext: Pointer   // PRJ_NAMESPACE_VIRTUALIZATION_CONTEXT* out
): Integer; stdcall;
  external 'PROJECTEDFSLIB.dll' name 'PrjStartVirtualizing';
result := DllCall("PROJECTEDFSLIB\PrjStartVirtualizing"
    , "WStr", virtualizationRootPath   ; LPCWSTR
    , "Ptr", callbacks   ; PRJ_CALLBACKS*
    , "Ptr", instanceContext   ; void* optional
    , "Ptr", options   ; PRJ_STARTVIRTUALIZING_OPTIONS* optional
    , "Ptr", namespaceVirtualizationContext   ; PRJ_NAMESPACE_VIRTUALIZATION_CONTEXT* out
    , "Int")   ; return: HRESULT
●PrjStartVirtualizing(virtualizationRootPath, callbacks, instanceContext, options, namespaceVirtualizationContext) = DLL("PROJECTEDFSLIB.dll", "int PrjStartVirtualizing(char*, void*, void*, void*, void*)")
# 呼び出し: PrjStartVirtualizing(virtualizationRootPath, callbacks, instanceContext, options, namespaceVirtualizationContext)
# virtualizationRootPath : LPCWSTR -> "char*"
# callbacks : PRJ_CALLBACKS* -> "void*"
# instanceContext : void* optional -> "void*"
# options : PRJ_STARTVIRTUALIZING_OPTIONS* optional -> "void*"
# namespaceVirtualizationContext : PRJ_NAMESPACE_VIRTUALIZATION_CONTEXT* out -> "void*"
# なでしこ1は32bit・ANSI(Shift_JIS)。文字列=char*(ANSI)、ポインタ/ハンドル=void*(4byte)。