ホーム › Data.RightsManagement › DRMVerify
DRMVerify
関数署名(証明)済みデータを検証する。
シグネチャ
// msdrm.dll
#include <windows.h>
HRESULT DRMVerify(
LPWSTR wszData, // optional
DWORD* pcAttestedData,
LPWSTR wszAttestedData, // optional
DRMATTESTTYPE* peType,
DWORD* pcPrincipal,
LPWSTR wszPrincipal, // optional
DWORD* pcManifest,
LPWSTR wszManifest // optional
);パラメーター
| 名前 | 型 | 方向 |
|---|---|---|
| wszData | LPWSTR | inoptional |
| pcAttestedData | DWORD* | inout |
| wszAttestedData | LPWSTR | outoptional |
| peType | DRMATTESTTYPE* | inout |
| pcPrincipal | DWORD* | inout |
| wszPrincipal | LPWSTR | outoptional |
| pcManifest | DWORD* | inout |
| wszManifest | LPWSTR | outoptional |
戻り値の型: HRESULT
各言語での呼び出し定義
// msdrm.dll
#include <windows.h>
HRESULT DRMVerify(
LPWSTR wszData, // optional
DWORD* pcAttestedData,
LPWSTR wszAttestedData, // optional
DRMATTESTTYPE* peType,
DWORD* pcPrincipal,
LPWSTR wszPrincipal, // optional
DWORD* pcManifest,
LPWSTR wszManifest // optional
);[DllImport("msdrm.dll", ExactSpelling = true)]
static extern int DRMVerify(
[MarshalAs(UnmanagedType.LPWStr)] string wszData, // LPWSTR optional
ref uint pcAttestedData, // DWORD* in/out
[MarshalAs(UnmanagedType.LPWStr)] System.Text.StringBuilder wszAttestedData, // LPWSTR optional, out
ref int peType, // DRMATTESTTYPE* in/out
ref uint pcPrincipal, // DWORD* in/out
[MarshalAs(UnmanagedType.LPWStr)] System.Text.StringBuilder wszPrincipal, // LPWSTR optional, out
ref uint pcManifest, // DWORD* in/out
[MarshalAs(UnmanagedType.LPWStr)] System.Text.StringBuilder wszManifest // LPWSTR optional, out
);<DllImport("msdrm.dll", ExactSpelling:=True)>
Public Shared Function DRMVerify(
<MarshalAs(UnmanagedType.LPWStr)> wszData As String, ' LPWSTR optional
ByRef pcAttestedData As UInteger, ' DWORD* in/out
<MarshalAs(UnmanagedType.LPWStr)> wszAttestedData As System.Text.StringBuilder, ' LPWSTR optional, out
ByRef peType As Integer, ' DRMATTESTTYPE* in/out
ByRef pcPrincipal As UInteger, ' DWORD* in/out
<MarshalAs(UnmanagedType.LPWStr)> wszPrincipal As System.Text.StringBuilder, ' LPWSTR optional, out
ByRef pcManifest As UInteger, ' DWORD* in/out
<MarshalAs(UnmanagedType.LPWStr)> wszManifest As System.Text.StringBuilder ' LPWSTR optional, out
) As Integer
End Function' wszData : LPWSTR optional
' pcAttestedData : DWORD* in/out
' wszAttestedData : LPWSTR optional, out
' peType : DRMATTESTTYPE* in/out
' pcPrincipal : DWORD* in/out
' wszPrincipal : LPWSTR optional, out
' pcManifest : DWORD* in/out
' wszManifest : LPWSTR optional, out
Declare PtrSafe Function DRMVerify Lib "msdrm" ( _
ByVal wszData As LongPtr, _
ByRef pcAttestedData As Long, _
ByVal wszAttestedData As LongPtr, _
ByRef peType As Long, _
ByRef pcPrincipal As Long, _
ByVal wszPrincipal As LongPtr, _
ByRef pcManifest As Long, _
ByVal wszManifest As LongPtr) As Long
' VBA7前提(PtrSafe)。32bit Office では LongPtr→Long。Integer=16bit / Long=32bit / LongLong=64bit。import ctypes
from ctypes import wintypes
DRMVerify = ctypes.windll.msdrm.DRMVerify
DRMVerify.restype = ctypes.c_int
DRMVerify.argtypes = [
wintypes.LPCWSTR, # wszData : LPWSTR optional
ctypes.POINTER(wintypes.DWORD), # pcAttestedData : DWORD* in/out
wintypes.LPWSTR, # wszAttestedData : LPWSTR optional, out
ctypes.c_void_p, # peType : DRMATTESTTYPE* in/out
ctypes.POINTER(wintypes.DWORD), # pcPrincipal : DWORD* in/out
wintypes.LPWSTR, # wszPrincipal : LPWSTR optional, out
ctypes.POINTER(wintypes.DWORD), # pcManifest : DWORD* in/out
wintypes.LPWSTR, # wszManifest : LPWSTR optional, out
]require 'fiddle'
require 'fiddle/import'
lib = Fiddle.dlopen('msdrm.dll')
DRMVerify = Fiddle::Function.new(
lib['DRMVerify'],
[
Fiddle::TYPE_VOIDP, # wszData : LPWSTR optional
Fiddle::TYPE_VOIDP, # pcAttestedData : DWORD* in/out
Fiddle::TYPE_VOIDP, # wszAttestedData : LPWSTR optional, out
Fiddle::TYPE_VOIDP, # peType : DRMATTESTTYPE* in/out
Fiddle::TYPE_VOIDP, # pcPrincipal : DWORD* in/out
Fiddle::TYPE_VOIDP, # wszPrincipal : LPWSTR optional, out
Fiddle::TYPE_VOIDP, # pcManifest : DWORD* in/out
Fiddle::TYPE_VOIDP, # wszManifest : LPWSTR optional, out
],
Fiddle::TYPE_INT)#[link(name = "msdrm")]
extern "system" {
fn DRMVerify(
wszData: *mut u16, // LPWSTR optional
pcAttestedData: *mut u32, // DWORD* in/out
wszAttestedData: *mut u16, // LPWSTR optional, out
peType: *mut i32, // DRMATTESTTYPE* in/out
pcPrincipal: *mut u32, // DWORD* in/out
wszPrincipal: *mut u16, // LPWSTR optional, out
pcManifest: *mut u32, // DWORD* in/out
wszManifest: *mut u16 // LPWSTR optional, out
) -> i32;
}
// crates: windows-sys provides ready-made bindings for this API.$sig = @"
[DllImport("msdrm.dll")]
public static extern int DRMVerify([MarshalAs(UnmanagedType.LPWStr)] string wszData, ref uint pcAttestedData, [MarshalAs(UnmanagedType.LPWStr)] System.Text.StringBuilder wszAttestedData, ref int peType, ref uint pcPrincipal, [MarshalAs(UnmanagedType.LPWStr)] System.Text.StringBuilder wszPrincipal, ref uint pcManifest, [MarshalAs(UnmanagedType.LPWStr)] System.Text.StringBuilder wszManifest);
"@
$api = Add-Type -MemberDefinition $sig -Name 'msdrm_DRMVerify' -Namespace Win32 -PassThru
# $api::DRMVerify(wszData, pcAttestedData, wszAttestedData, peType, pcPrincipal, wszPrincipal, pcManifest, wszManifest)#uselib "msdrm.dll"
#func global DRMVerify "DRMVerify" sptr, sptr, sptr, sptr, sptr, sptr, sptr, sptr
; DRMVerify wszData, varptr(pcAttestedData), varptr(wszAttestedData), peType, varptr(pcPrincipal), varptr(wszPrincipal), varptr(pcManifest), varptr(wszManifest) ; 戻り値は stat
; wszData : LPWSTR optional -> "sptr"
; pcAttestedData : DWORD* in/out -> "sptr"
; wszAttestedData : LPWSTR optional, out -> "sptr"
; peType : DRMATTESTTYPE* in/out -> "sptr"
; pcPrincipal : DWORD* in/out -> "sptr"
; wszPrincipal : LPWSTR optional, out -> "sptr"
; pcManifest : DWORD* in/out -> "sptr"
; wszManifest : LPWSTR optional, out -> "sptr"
; ※HSP3.7は #func のため戻り値はシステム変数 stat に格納されます。出力引数:
#uselib "msdrm.dll" #cfunc global DRMVerify "DRMVerify" wstr, var, var, int, var, var, var, var ; res = DRMVerify(wszData, pcAttestedData, wszAttestedData, peType, pcPrincipal, wszPrincipal, pcManifest, wszManifest) ; wszData : LPWSTR optional -> "wstr" ; pcAttestedData : DWORD* in/out -> "var" ; wszAttestedData : LPWSTR optional, out -> "var" ; peType : DRMATTESTTYPE* in/out -> "int" ; pcPrincipal : DWORD* in/out -> "var" ; wszPrincipal : LPWSTR optional, out -> "var" ; pcManifest : DWORD* in/out -> "var" ; wszManifest : LPWSTR optional, out -> "var" ; ※出力/バッファ引数は var 方式(変数を直接渡す)。varptr 方式にも切替可。#uselib "msdrm.dll" #cfunc global DRMVerify "DRMVerify" wstr, sptr, sptr, int, sptr, sptr, sptr, sptr ; res = DRMVerify(wszData, varptr(pcAttestedData), varptr(wszAttestedData), peType, varptr(pcPrincipal), varptr(wszPrincipal), varptr(pcManifest), varptr(wszManifest)) ; wszData : LPWSTR optional -> "wstr" ; pcAttestedData : DWORD* in/out -> "sptr" ; wszAttestedData : LPWSTR optional, out -> "sptr" ; peType : DRMATTESTTYPE* in/out -> "int" ; pcPrincipal : DWORD* in/out -> "sptr" ; wszPrincipal : LPWSTR optional, out -> "sptr" ; pcManifest : DWORD* in/out -> "sptr" ; wszManifest : LPWSTR optional, out -> "sptr" ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。
出力引数:
; HRESULT DRMVerify(LPWSTR wszData, DWORD* pcAttestedData, LPWSTR wszAttestedData, DRMATTESTTYPE* peType, DWORD* pcPrincipal, LPWSTR wszPrincipal, DWORD* pcManifest, LPWSTR wszManifest) #uselib "msdrm.dll" #cfunc global DRMVerify "DRMVerify" wstr, var, var, int, var, var, var, var ; res = DRMVerify(wszData, pcAttestedData, wszAttestedData, peType, pcPrincipal, wszPrincipal, pcManifest, wszManifest) ; wszData : LPWSTR optional -> "wstr" ; pcAttestedData : DWORD* in/out -> "var" ; wszAttestedData : LPWSTR optional, out -> "var" ; peType : DRMATTESTTYPE* in/out -> "int" ; pcPrincipal : DWORD* in/out -> "var" ; wszPrincipal : LPWSTR optional, out -> "var" ; pcManifest : DWORD* in/out -> "var" ; wszManifest : LPWSTR optional, out -> "var" ; ※出力/バッファ引数は var 方式(変数を直接渡す)。varptr 方式にも切替可。; HRESULT DRMVerify(LPWSTR wszData, DWORD* pcAttestedData, LPWSTR wszAttestedData, DRMATTESTTYPE* peType, DWORD* pcPrincipal, LPWSTR wszPrincipal, DWORD* pcManifest, LPWSTR wszManifest) #uselib "msdrm.dll" #cfunc global DRMVerify "DRMVerify" wstr, intptr, intptr, int, intptr, intptr, intptr, intptr ; res = DRMVerify(wszData, varptr(pcAttestedData), varptr(wszAttestedData), peType, varptr(pcPrincipal), varptr(wszPrincipal), varptr(pcManifest), varptr(wszManifest)) ; wszData : LPWSTR optional -> "wstr" ; pcAttestedData : DWORD* in/out -> "intptr" ; wszAttestedData : LPWSTR optional, out -> "intptr" ; peType : DRMATTESTTYPE* in/out -> "int" ; pcPrincipal : DWORD* in/out -> "intptr" ; wszPrincipal : LPWSTR optional, out -> "intptr" ; pcManifest : DWORD* in/out -> "intptr" ; wszManifest : LPWSTR optional, out -> "intptr" ; ※出力/バッファ引数はポインタ方式(token=intptr / 呼び出しは varptr(変数))。
import (
"golang.org/x/sys/windows"
"unsafe"
)
var (
msdrm = windows.NewLazySystemDLL("msdrm.dll")
procDRMVerify = msdrm.NewProc("DRMVerify")
)
// wszData (LPWSTR optional), pcAttestedData (DWORD* in/out), wszAttestedData (LPWSTR optional, out), peType (DRMATTESTTYPE* in/out), pcPrincipal (DWORD* in/out), wszPrincipal (LPWSTR optional, out), pcManifest (DWORD* in/out), wszManifest (LPWSTR optional, out)
r1, _, err := procDRMVerify.Call(
uintptr(unsafe.Pointer(windows.StringToUTF16Ptr(wszData))),
uintptr(pcAttestedData),
uintptr(wszAttestedData),
uintptr(peType),
uintptr(pcPrincipal),
uintptr(wszPrincipal),
uintptr(pcManifest),
uintptr(wszManifest),
)
_ = err // syscall.Errno (valid when the call sets last-error)
_ = r1 // HRESULTfunction DRMVerify(
wszData: PWideChar; // LPWSTR optional
pcAttestedData: Pointer; // DWORD* in/out
wszAttestedData: PWideChar; // LPWSTR optional, out
peType: Pointer; // DRMATTESTTYPE* in/out
pcPrincipal: Pointer; // DWORD* in/out
wszPrincipal: PWideChar; // LPWSTR optional, out
pcManifest: Pointer; // DWORD* in/out
wszManifest: PWideChar // LPWSTR optional, out
): Integer; stdcall;
external 'msdrm.dll' name 'DRMVerify';result := DllCall("msdrm\DRMVerify"
, "WStr", wszData ; LPWSTR optional
, "Ptr", pcAttestedData ; DWORD* in/out
, "Ptr", wszAttestedData ; LPWSTR optional, out
, "Ptr", peType ; DRMATTESTTYPE* in/out
, "Ptr", pcPrincipal ; DWORD* in/out
, "Ptr", wszPrincipal ; LPWSTR optional, out
, "Ptr", pcManifest ; DWORD* in/out
, "Ptr", wszManifest ; LPWSTR optional, out
, "Int") ; return: HRESULT●DRMVerify(wszData, pcAttestedData, wszAttestedData, peType, pcPrincipal, wszPrincipal, pcManifest, wszManifest) = DLL("msdrm.dll", "int DRMVerify(char*, void*, char*, void*, void*, char*, void*, char*)")
# 呼び出し: DRMVerify(wszData, pcAttestedData, wszAttestedData, peType, pcPrincipal, wszPrincipal, pcManifest, wszManifest)
# wszData : LPWSTR optional -> "char*"
# pcAttestedData : DWORD* in/out -> "void*"
# wszAttestedData : LPWSTR optional, out -> "char*"
# peType : DRMATTESTTYPE* in/out -> "void*"
# pcPrincipal : DWORD* in/out -> "void*"
# wszPrincipal : LPWSTR optional, out -> "char*"
# pcManifest : DWORD* in/out -> "void*"
# wszManifest : LPWSTR optional, out -> "char*"
# なでしこ1は32bit・ANSI(Shift_JIS)。文字列=char*(ANSI)、ポインタ/ハンドル=void*(4byte)。