Win32 API 日本語リファレンス
ホームData.RightsManagement › DRMInitEnvironment

DRMInitEnvironment

関数
RMSのセキュリティ環境を初期化する。
DLLmsdrm.dll呼出規約winapi

シグネチャ

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

HRESULT DRMInitEnvironment(
    DRMSECURITYPROVIDERTYPE eSecurityProviderType,
    DRMSPECTYPE eSpecification,
    LPWSTR wszSecurityProvider,   // optional
    LPWSTR wszManifestCredentials,   // optional
    LPWSTR wszMachineCredentials,
    DWORD* phEnv,
    DWORD* phDefaultLibrary
);

パラメーター

名前方向
eSecurityProviderTypeDRMSECURITYPROVIDERTYPEin
eSpecificationDRMSPECTYPEin
wszSecurityProviderLPWSTRinoptional
wszManifestCredentialsLPWSTRinoptional
wszMachineCredentialsLPWSTRin
phEnvDWORD*inout
phDefaultLibraryDWORD*inout

戻り値の型: HRESULT

各言語での呼び出し定義

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

HRESULT DRMInitEnvironment(
    DRMSECURITYPROVIDERTYPE eSecurityProviderType,
    DRMSPECTYPE eSpecification,
    LPWSTR wszSecurityProvider,   // optional
    LPWSTR wszManifestCredentials,   // optional
    LPWSTR wszMachineCredentials,
    DWORD* phEnv,
    DWORD* phDefaultLibrary
);
[DllImport("msdrm.dll", ExactSpelling = true)]
static extern int DRMInitEnvironment(
    int eSecurityProviderType,   // DRMSECURITYPROVIDERTYPE
    int eSpecification,   // DRMSPECTYPE
    [MarshalAs(UnmanagedType.LPWStr)] string wszSecurityProvider,   // LPWSTR optional
    [MarshalAs(UnmanagedType.LPWStr)] string wszManifestCredentials,   // LPWSTR optional
    [MarshalAs(UnmanagedType.LPWStr)] string wszMachineCredentials,   // LPWSTR
    ref uint phEnv,   // DWORD* in/out
    ref uint phDefaultLibrary   // DWORD* in/out
);
<DllImport("msdrm.dll", ExactSpelling:=True)>
Public Shared Function DRMInitEnvironment(
    eSecurityProviderType As Integer,   ' DRMSECURITYPROVIDERTYPE
    eSpecification As Integer,   ' DRMSPECTYPE
    <MarshalAs(UnmanagedType.LPWStr)> wszSecurityProvider As String,   ' LPWSTR optional
    <MarshalAs(UnmanagedType.LPWStr)> wszManifestCredentials As String,   ' LPWSTR optional
    <MarshalAs(UnmanagedType.LPWStr)> wszMachineCredentials As String,   ' LPWSTR
    ByRef phEnv As UInteger,   ' DWORD* in/out
    ByRef phDefaultLibrary As UInteger   ' DWORD* in/out
) As Integer
End Function
' eSecurityProviderType : DRMSECURITYPROVIDERTYPE
' eSpecification : DRMSPECTYPE
' wszSecurityProvider : LPWSTR optional
' wszManifestCredentials : LPWSTR optional
' wszMachineCredentials : LPWSTR
' phEnv : DWORD* in/out
' phDefaultLibrary : DWORD* in/out
Declare PtrSafe Function DRMInitEnvironment Lib "msdrm" ( _
    ByVal eSecurityProviderType As Long, _
    ByVal eSpecification As Long, _
    ByVal wszSecurityProvider As LongPtr, _
    ByVal wszManifestCredentials As LongPtr, _
    ByVal wszMachineCredentials As LongPtr, _
    ByRef phEnv As Long, _
    ByRef phDefaultLibrary As Long) As Long
' VBA7前提(PtrSafe)。32bit Office では LongPtr→Long。Integer=16bit / Long=32bit / LongLong=64bit。
import ctypes
from ctypes import wintypes

DRMInitEnvironment = ctypes.windll.msdrm.DRMInitEnvironment
DRMInitEnvironment.restype = ctypes.c_int
DRMInitEnvironment.argtypes = [
    ctypes.c_int,  # eSecurityProviderType : DRMSECURITYPROVIDERTYPE
    ctypes.c_int,  # eSpecification : DRMSPECTYPE
    wintypes.LPCWSTR,  # wszSecurityProvider : LPWSTR optional
    wintypes.LPCWSTR,  # wszManifestCredentials : LPWSTR optional
    wintypes.LPCWSTR,  # wszMachineCredentials : LPWSTR
    ctypes.POINTER(wintypes.DWORD),  # phEnv : DWORD* in/out
    ctypes.POINTER(wintypes.DWORD),  # phDefaultLibrary : DWORD* in/out
]
require 'fiddle'
require 'fiddle/import'

lib = Fiddle.dlopen('msdrm.dll')
DRMInitEnvironment = Fiddle::Function.new(
  lib['DRMInitEnvironment'],
  [
    Fiddle::TYPE_INT,  # eSecurityProviderType : DRMSECURITYPROVIDERTYPE
    Fiddle::TYPE_INT,  # eSpecification : DRMSPECTYPE
    Fiddle::TYPE_VOIDP,  # wszSecurityProvider : LPWSTR optional
    Fiddle::TYPE_VOIDP,  # wszManifestCredentials : LPWSTR optional
    Fiddle::TYPE_VOIDP,  # wszMachineCredentials : LPWSTR
    Fiddle::TYPE_VOIDP,  # phEnv : DWORD* in/out
    Fiddle::TYPE_VOIDP,  # phDefaultLibrary : DWORD* in/out
  ],
  Fiddle::TYPE_INT)
#[link(name = "msdrm")]
extern "system" {
    fn DRMInitEnvironment(
        eSecurityProviderType: i32,  // DRMSECURITYPROVIDERTYPE
        eSpecification: i32,  // DRMSPECTYPE
        wszSecurityProvider: *mut u16,  // LPWSTR optional
        wszManifestCredentials: *mut u16,  // LPWSTR optional
        wszMachineCredentials: *mut u16,  // LPWSTR
        phEnv: *mut u32,  // DWORD* in/out
        phDefaultLibrary: *mut u32  // DWORD* in/out
    ) -> i32;
}
// crates: windows-sys provides ready-made bindings for this API.
$sig = @"
[DllImport("msdrm.dll")]
public static extern int DRMInitEnvironment(int eSecurityProviderType, int eSpecification, [MarshalAs(UnmanagedType.LPWStr)] string wszSecurityProvider, [MarshalAs(UnmanagedType.LPWStr)] string wszManifestCredentials, [MarshalAs(UnmanagedType.LPWStr)] string wszMachineCredentials, ref uint phEnv, ref uint phDefaultLibrary);
"@
$api = Add-Type -MemberDefinition $sig -Name 'msdrm_DRMInitEnvironment' -Namespace Win32 -PassThru
# $api::DRMInitEnvironment(eSecurityProviderType, eSpecification, wszSecurityProvider, wszManifestCredentials, wszMachineCredentials, phEnv, phDefaultLibrary)
#uselib "msdrm.dll"
#func global DRMInitEnvironment "DRMInitEnvironment" sptr, sptr, sptr, sptr, sptr, sptr, sptr
; DRMInitEnvironment eSecurityProviderType, eSpecification, wszSecurityProvider, wszManifestCredentials, wszMachineCredentials, varptr(phEnv), varptr(phDefaultLibrary)   ; 戻り値は stat
; eSecurityProviderType : DRMSECURITYPROVIDERTYPE -> "sptr"
; eSpecification : DRMSPECTYPE -> "sptr"
; wszSecurityProvider : LPWSTR optional -> "sptr"
; wszManifestCredentials : LPWSTR optional -> "sptr"
; wszMachineCredentials : LPWSTR -> "sptr"
; phEnv : DWORD* in/out -> "sptr"
; phDefaultLibrary : DWORD* in/out -> "sptr"
; ※HSP3.7は #func のため戻り値はシステム変数 stat に格納されます。
出力引数:
#uselib "msdrm.dll"
#cfunc global DRMInitEnvironment "DRMInitEnvironment" int, int, wstr, wstr, wstr, var, var
; res = DRMInitEnvironment(eSecurityProviderType, eSpecification, wszSecurityProvider, wszManifestCredentials, wszMachineCredentials, phEnv, phDefaultLibrary)
; eSecurityProviderType : DRMSECURITYPROVIDERTYPE -> "int"
; eSpecification : DRMSPECTYPE -> "int"
; wszSecurityProvider : LPWSTR optional -> "wstr"
; wszManifestCredentials : LPWSTR optional -> "wstr"
; wszMachineCredentials : LPWSTR -> "wstr"
; phEnv : DWORD* in/out -> "var"
; phDefaultLibrary : DWORD* in/out -> "var"
; ※出力/バッファ引数は var 方式(変数を直接渡す)。varptr 方式にも切替可。
出力引数:
; HRESULT DRMInitEnvironment(DRMSECURITYPROVIDERTYPE eSecurityProviderType, DRMSPECTYPE eSpecification, LPWSTR wszSecurityProvider, LPWSTR wszManifestCredentials, LPWSTR wszMachineCredentials, DWORD* phEnv, DWORD* phDefaultLibrary)
#uselib "msdrm.dll"
#cfunc global DRMInitEnvironment "DRMInitEnvironment" int, int, wstr, wstr, wstr, var, var
; res = DRMInitEnvironment(eSecurityProviderType, eSpecification, wszSecurityProvider, wszManifestCredentials, wszMachineCredentials, phEnv, phDefaultLibrary)
; eSecurityProviderType : DRMSECURITYPROVIDERTYPE -> "int"
; eSpecification : DRMSPECTYPE -> "int"
; wszSecurityProvider : LPWSTR optional -> "wstr"
; wszManifestCredentials : LPWSTR optional -> "wstr"
; wszMachineCredentials : LPWSTR -> "wstr"
; phEnv : DWORD* in/out -> "var"
; phDefaultLibrary : DWORD* in/out -> "var"
; ※出力/バッファ引数は var 方式(変数を直接渡す)。varptr 方式にも切替可。
import (
	"golang.org/x/sys/windows"
	"unsafe"
)

var (
	msdrm = windows.NewLazySystemDLL("msdrm.dll")
	procDRMInitEnvironment = msdrm.NewProc("DRMInitEnvironment")
)

// eSecurityProviderType (DRMSECURITYPROVIDERTYPE), eSpecification (DRMSPECTYPE), wszSecurityProvider (LPWSTR optional), wszManifestCredentials (LPWSTR optional), wszMachineCredentials (LPWSTR), phEnv (DWORD* in/out), phDefaultLibrary (DWORD* in/out)
r1, _, err := procDRMInitEnvironment.Call(
	uintptr(eSecurityProviderType),
	uintptr(eSpecification),
	uintptr(unsafe.Pointer(windows.StringToUTF16Ptr(wszSecurityProvider))),
	uintptr(unsafe.Pointer(windows.StringToUTF16Ptr(wszManifestCredentials))),
	uintptr(unsafe.Pointer(windows.StringToUTF16Ptr(wszMachineCredentials))),
	uintptr(phEnv),
	uintptr(phDefaultLibrary),
)
_ = err  // syscall.Errno (valid when the call sets last-error)
_ = r1   // HRESULT
function DRMInitEnvironment(
  eSecurityProviderType: Integer;   // DRMSECURITYPROVIDERTYPE
  eSpecification: Integer;   // DRMSPECTYPE
  wszSecurityProvider: PWideChar;   // LPWSTR optional
  wszManifestCredentials: PWideChar;   // LPWSTR optional
  wszMachineCredentials: PWideChar;   // LPWSTR
  phEnv: Pointer;   // DWORD* in/out
  phDefaultLibrary: Pointer   // DWORD* in/out
): Integer; stdcall;
  external 'msdrm.dll' name 'DRMInitEnvironment';
result := DllCall("msdrm\DRMInitEnvironment"
    , "Int", eSecurityProviderType   ; DRMSECURITYPROVIDERTYPE
    , "Int", eSpecification   ; DRMSPECTYPE
    , "WStr", wszSecurityProvider   ; LPWSTR optional
    , "WStr", wszManifestCredentials   ; LPWSTR optional
    , "WStr", wszMachineCredentials   ; LPWSTR
    , "Ptr", phEnv   ; DWORD* in/out
    , "Ptr", phDefaultLibrary   ; DWORD* in/out
    , "Int")   ; return: HRESULT
●DRMInitEnvironment(eSecurityProviderType, eSpecification, wszSecurityProvider, wszManifestCredentials, wszMachineCredentials, phEnv, phDefaultLibrary) = DLL("msdrm.dll", "int DRMInitEnvironment(int, int, char*, char*, char*, void*, void*)")
# 呼び出し: DRMInitEnvironment(eSecurityProviderType, eSpecification, wszSecurityProvider, wszManifestCredentials, wszMachineCredentials, phEnv, phDefaultLibrary)
# eSecurityProviderType : DRMSECURITYPROVIDERTYPE -> "int"
# eSpecification : DRMSPECTYPE -> "int"
# wszSecurityProvider : LPWSTR optional -> "char*"
# wszManifestCredentials : LPWSTR optional -> "char*"
# wszMachineCredentials : LPWSTR -> "char*"
# phEnv : DWORD* in/out -> "void*"
# phDefaultLibrary : DWORD* in/out -> "void*"
# なでしこ1は32bit・ANSI(Shift_JIS)。文字列=char*(ANSI)、ポインタ/ハンドル=void*(4byte)。