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

DRMVerify

関数
署名(証明)済みデータを検証する。
DLLmsdrm.dll呼出規約winapi

シグネチャ

// 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
);

パラメーター

名前方向
wszDataLPWSTRinoptional
pcAttestedDataDWORD*inout
wszAttestedDataLPWSTRoutoptional
peTypeDRMATTESTTYPE*inout
pcPrincipalDWORD*inout
wszPrincipalLPWSTRoutoptional
pcManifestDWORD*inout
wszManifestLPWSTRoutoptional

戻り値の型: 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 方式にも切替可。
出力引数:
; 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 方式にも切替可。
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   // HRESULT
function 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)。