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

DRMGetUsagePolicy

関数
発行ライセンスの使用ポリシーを取得する。
DLLmsdrm.dll呼出規約winapi

シグネチャ

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

HRESULT DRMGetUsagePolicy(
    DWORD hIssuanceLicense,
    DWORD uIndex,
    DRM_USAGEPOLICY_TYPE* peUsagePolicyType,
    BOOL* pfExclusion,
    DWORD* puNameLength,
    LPWSTR wszName,   // optional
    DWORD* puMinVersionLength,
    LPWSTR wszMinVersion,   // optional
    DWORD* puMaxVersionLength,
    LPWSTR wszMaxVersion,   // optional
    DWORD* puPublicKeyLength,
    LPWSTR wszPublicKey,   // optional
    DWORD* puDigestAlgorithmLength,
    LPWSTR wszDigestAlgorithm,   // optional
    DWORD* pcbDigest,
    BYTE* pbDigest
);

パラメーター

名前方向
hIssuanceLicenseDWORDin
uIndexDWORDin
peUsagePolicyTypeDRM_USAGEPOLICY_TYPE*inout
pfExclusionBOOL*inout
puNameLengthDWORD*inout
wszNameLPWSTRoutoptional
puMinVersionLengthDWORD*inout
wszMinVersionLPWSTRoutoptional
puMaxVersionLengthDWORD*inout
wszMaxVersionLPWSTRoutoptional
puPublicKeyLengthDWORD*inout
wszPublicKeyLPWSTRoutoptional
puDigestAlgorithmLengthDWORD*inout
wszDigestAlgorithmLPWSTRoutoptional
pcbDigestDWORD*inout
pbDigestBYTE*inout

戻り値の型: HRESULT

各言語での呼び出し定義

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

HRESULT DRMGetUsagePolicy(
    DWORD hIssuanceLicense,
    DWORD uIndex,
    DRM_USAGEPOLICY_TYPE* peUsagePolicyType,
    BOOL* pfExclusion,
    DWORD* puNameLength,
    LPWSTR wszName,   // optional
    DWORD* puMinVersionLength,
    LPWSTR wszMinVersion,   // optional
    DWORD* puMaxVersionLength,
    LPWSTR wszMaxVersion,   // optional
    DWORD* puPublicKeyLength,
    LPWSTR wszPublicKey,   // optional
    DWORD* puDigestAlgorithmLength,
    LPWSTR wszDigestAlgorithm,   // optional
    DWORD* pcbDigest,
    BYTE* pbDigest
);
[DllImport("msdrm.dll", ExactSpelling = true)]
static extern int DRMGetUsagePolicy(
    uint hIssuanceLicense,   // DWORD
    uint uIndex,   // DWORD
    ref int peUsagePolicyType,   // DRM_USAGEPOLICY_TYPE* in/out
    ref int pfExclusion,   // BOOL* in/out
    ref uint puNameLength,   // DWORD* in/out
    [MarshalAs(UnmanagedType.LPWStr)] System.Text.StringBuilder wszName,   // LPWSTR optional, out
    ref uint puMinVersionLength,   // DWORD* in/out
    [MarshalAs(UnmanagedType.LPWStr)] System.Text.StringBuilder wszMinVersion,   // LPWSTR optional, out
    ref uint puMaxVersionLength,   // DWORD* in/out
    [MarshalAs(UnmanagedType.LPWStr)] System.Text.StringBuilder wszMaxVersion,   // LPWSTR optional, out
    ref uint puPublicKeyLength,   // DWORD* in/out
    [MarshalAs(UnmanagedType.LPWStr)] System.Text.StringBuilder wszPublicKey,   // LPWSTR optional, out
    ref uint puDigestAlgorithmLength,   // DWORD* in/out
    [MarshalAs(UnmanagedType.LPWStr)] System.Text.StringBuilder wszDigestAlgorithm,   // LPWSTR optional, out
    ref uint pcbDigest,   // DWORD* in/out
    IntPtr pbDigest   // BYTE* in/out
);
<DllImport("msdrm.dll", ExactSpelling:=True)>
Public Shared Function DRMGetUsagePolicy(
    hIssuanceLicense As UInteger,   ' DWORD
    uIndex As UInteger,   ' DWORD
    ByRef peUsagePolicyType As Integer,   ' DRM_USAGEPOLICY_TYPE* in/out
    ByRef pfExclusion As Integer,   ' BOOL* in/out
    ByRef puNameLength As UInteger,   ' DWORD* in/out
    <MarshalAs(UnmanagedType.LPWStr)> wszName As System.Text.StringBuilder,   ' LPWSTR optional, out
    ByRef puMinVersionLength As UInteger,   ' DWORD* in/out
    <MarshalAs(UnmanagedType.LPWStr)> wszMinVersion As System.Text.StringBuilder,   ' LPWSTR optional, out
    ByRef puMaxVersionLength As UInteger,   ' DWORD* in/out
    <MarshalAs(UnmanagedType.LPWStr)> wszMaxVersion As System.Text.StringBuilder,   ' LPWSTR optional, out
    ByRef puPublicKeyLength As UInteger,   ' DWORD* in/out
    <MarshalAs(UnmanagedType.LPWStr)> wszPublicKey As System.Text.StringBuilder,   ' LPWSTR optional, out
    ByRef puDigestAlgorithmLength As UInteger,   ' DWORD* in/out
    <MarshalAs(UnmanagedType.LPWStr)> wszDigestAlgorithm As System.Text.StringBuilder,   ' LPWSTR optional, out
    ByRef pcbDigest As UInteger,   ' DWORD* in/out
    pbDigest As IntPtr   ' BYTE* in/out
) As Integer
End Function
' hIssuanceLicense : DWORD
' uIndex : DWORD
' peUsagePolicyType : DRM_USAGEPOLICY_TYPE* in/out
' pfExclusion : BOOL* in/out
' puNameLength : DWORD* in/out
' wszName : LPWSTR optional, out
' puMinVersionLength : DWORD* in/out
' wszMinVersion : LPWSTR optional, out
' puMaxVersionLength : DWORD* in/out
' wszMaxVersion : LPWSTR optional, out
' puPublicKeyLength : DWORD* in/out
' wszPublicKey : LPWSTR optional, out
' puDigestAlgorithmLength : DWORD* in/out
' wszDigestAlgorithm : LPWSTR optional, out
' pcbDigest : DWORD* in/out
' pbDigest : BYTE* in/out
Declare PtrSafe Function DRMGetUsagePolicy Lib "msdrm" ( _
    ByVal hIssuanceLicense As Long, _
    ByVal uIndex As Long, _
    ByRef peUsagePolicyType As Long, _
    ByRef pfExclusion As Long, _
    ByRef puNameLength As Long, _
    ByVal wszName As LongPtr, _
    ByRef puMinVersionLength As Long, _
    ByVal wszMinVersion As LongPtr, _
    ByRef puMaxVersionLength As Long, _
    ByVal wszMaxVersion As LongPtr, _
    ByRef puPublicKeyLength As Long, _
    ByVal wszPublicKey As LongPtr, _
    ByRef puDigestAlgorithmLength As Long, _
    ByVal wszDigestAlgorithm As LongPtr, _
    ByRef pcbDigest As Long, _
    ByVal pbDigest As LongPtr) As Long
' VBA7前提(PtrSafe)。32bit Office では LongPtr→Long。Integer=16bit / Long=32bit / LongLong=64bit。
import ctypes
from ctypes import wintypes

DRMGetUsagePolicy = ctypes.windll.msdrm.DRMGetUsagePolicy
DRMGetUsagePolicy.restype = ctypes.c_int
DRMGetUsagePolicy.argtypes = [
    wintypes.DWORD,  # hIssuanceLicense : DWORD
    wintypes.DWORD,  # uIndex : DWORD
    ctypes.c_void_p,  # peUsagePolicyType : DRM_USAGEPOLICY_TYPE* in/out
    ctypes.c_void_p,  # pfExclusion : BOOL* in/out
    ctypes.POINTER(wintypes.DWORD),  # puNameLength : DWORD* in/out
    wintypes.LPWSTR,  # wszName : LPWSTR optional, out
    ctypes.POINTER(wintypes.DWORD),  # puMinVersionLength : DWORD* in/out
    wintypes.LPWSTR,  # wszMinVersion : LPWSTR optional, out
    ctypes.POINTER(wintypes.DWORD),  # puMaxVersionLength : DWORD* in/out
    wintypes.LPWSTR,  # wszMaxVersion : LPWSTR optional, out
    ctypes.POINTER(wintypes.DWORD),  # puPublicKeyLength : DWORD* in/out
    wintypes.LPWSTR,  # wszPublicKey : LPWSTR optional, out
    ctypes.POINTER(wintypes.DWORD),  # puDigestAlgorithmLength : DWORD* in/out
    wintypes.LPWSTR,  # wszDigestAlgorithm : LPWSTR optional, out
    ctypes.POINTER(wintypes.DWORD),  # pcbDigest : DWORD* in/out
    ctypes.POINTER(ctypes.c_ubyte),  # pbDigest : BYTE* in/out
]
require 'fiddle'
require 'fiddle/import'

lib = Fiddle.dlopen('msdrm.dll')
DRMGetUsagePolicy = Fiddle::Function.new(
  lib['DRMGetUsagePolicy'],
  [
    -Fiddle::TYPE_INT,  # hIssuanceLicense : DWORD
    -Fiddle::TYPE_INT,  # uIndex : DWORD
    Fiddle::TYPE_VOIDP,  # peUsagePolicyType : DRM_USAGEPOLICY_TYPE* in/out
    Fiddle::TYPE_VOIDP,  # pfExclusion : BOOL* in/out
    Fiddle::TYPE_VOIDP,  # puNameLength : DWORD* in/out
    Fiddle::TYPE_VOIDP,  # wszName : LPWSTR optional, out
    Fiddle::TYPE_VOIDP,  # puMinVersionLength : DWORD* in/out
    Fiddle::TYPE_VOIDP,  # wszMinVersion : LPWSTR optional, out
    Fiddle::TYPE_VOIDP,  # puMaxVersionLength : DWORD* in/out
    Fiddle::TYPE_VOIDP,  # wszMaxVersion : LPWSTR optional, out
    Fiddle::TYPE_VOIDP,  # puPublicKeyLength : DWORD* in/out
    Fiddle::TYPE_VOIDP,  # wszPublicKey : LPWSTR optional, out
    Fiddle::TYPE_VOIDP,  # puDigestAlgorithmLength : DWORD* in/out
    Fiddle::TYPE_VOIDP,  # wszDigestAlgorithm : LPWSTR optional, out
    Fiddle::TYPE_VOIDP,  # pcbDigest : DWORD* in/out
    Fiddle::TYPE_VOIDP,  # pbDigest : BYTE* in/out
  ],
  Fiddle::TYPE_INT)
#[link(name = "msdrm")]
extern "system" {
    fn DRMGetUsagePolicy(
        hIssuanceLicense: u32,  // DWORD
        uIndex: u32,  // DWORD
        peUsagePolicyType: *mut i32,  // DRM_USAGEPOLICY_TYPE* in/out
        pfExclusion: *mut i32,  // BOOL* in/out
        puNameLength: *mut u32,  // DWORD* in/out
        wszName: *mut u16,  // LPWSTR optional, out
        puMinVersionLength: *mut u32,  // DWORD* in/out
        wszMinVersion: *mut u16,  // LPWSTR optional, out
        puMaxVersionLength: *mut u32,  // DWORD* in/out
        wszMaxVersion: *mut u16,  // LPWSTR optional, out
        puPublicKeyLength: *mut u32,  // DWORD* in/out
        wszPublicKey: *mut u16,  // LPWSTR optional, out
        puDigestAlgorithmLength: *mut u32,  // DWORD* in/out
        wszDigestAlgorithm: *mut u16,  // LPWSTR optional, out
        pcbDigest: *mut u32,  // DWORD* in/out
        pbDigest: *mut u8  // BYTE* in/out
    ) -> i32;
}
// crates: windows-sys provides ready-made bindings for this API.
$sig = @"
[DllImport("msdrm.dll")]
public static extern int DRMGetUsagePolicy(uint hIssuanceLicense, uint uIndex, ref int peUsagePolicyType, ref int pfExclusion, ref uint puNameLength, [MarshalAs(UnmanagedType.LPWStr)] System.Text.StringBuilder wszName, ref uint puMinVersionLength, [MarshalAs(UnmanagedType.LPWStr)] System.Text.StringBuilder wszMinVersion, ref uint puMaxVersionLength, [MarshalAs(UnmanagedType.LPWStr)] System.Text.StringBuilder wszMaxVersion, ref uint puPublicKeyLength, [MarshalAs(UnmanagedType.LPWStr)] System.Text.StringBuilder wszPublicKey, ref uint puDigestAlgorithmLength, [MarshalAs(UnmanagedType.LPWStr)] System.Text.StringBuilder wszDigestAlgorithm, ref uint pcbDigest, IntPtr pbDigest);
"@
$api = Add-Type -MemberDefinition $sig -Name 'msdrm_DRMGetUsagePolicy' -Namespace Win32 -PassThru
# $api::DRMGetUsagePolicy(hIssuanceLicense, uIndex, peUsagePolicyType, pfExclusion, puNameLength, wszName, puMinVersionLength, wszMinVersion, puMaxVersionLength, wszMaxVersion, puPublicKeyLength, wszPublicKey, puDigestAlgorithmLength, wszDigestAlgorithm, pcbDigest, pbDigest)
#uselib "msdrm.dll"
#func global DRMGetUsagePolicy "DRMGetUsagePolicy" sptr, sptr, sptr, sptr, sptr, sptr, sptr, sptr, sptr, sptr, sptr, sptr, sptr, sptr, sptr, sptr
; DRMGetUsagePolicy hIssuanceLicense, uIndex, peUsagePolicyType, pfExclusion, varptr(puNameLength), varptr(wszName), varptr(puMinVersionLength), varptr(wszMinVersion), varptr(puMaxVersionLength), varptr(wszMaxVersion), varptr(puPublicKeyLength), varptr(wszPublicKey), varptr(puDigestAlgorithmLength), varptr(wszDigestAlgorithm), varptr(pcbDigest), varptr(pbDigest)   ; 戻り値は stat
; hIssuanceLicense : DWORD -> "sptr"
; uIndex : DWORD -> "sptr"
; peUsagePolicyType : DRM_USAGEPOLICY_TYPE* in/out -> "sptr"
; pfExclusion : BOOL* in/out -> "sptr"
; puNameLength : DWORD* in/out -> "sptr"
; wszName : LPWSTR optional, out -> "sptr"
; puMinVersionLength : DWORD* in/out -> "sptr"
; wszMinVersion : LPWSTR optional, out -> "sptr"
; puMaxVersionLength : DWORD* in/out -> "sptr"
; wszMaxVersion : LPWSTR optional, out -> "sptr"
; puPublicKeyLength : DWORD* in/out -> "sptr"
; wszPublicKey : LPWSTR optional, out -> "sptr"
; puDigestAlgorithmLength : DWORD* in/out -> "sptr"
; wszDigestAlgorithm : LPWSTR optional, out -> "sptr"
; pcbDigest : DWORD* in/out -> "sptr"
; pbDigest : BYTE* in/out -> "sptr"
; ※HSP3.7は #func のため戻り値はシステム変数 stat に格納されます。
出力引数:
#uselib "msdrm.dll"
#cfunc global DRMGetUsagePolicy "DRMGetUsagePolicy" int, int, int, int, var, var, var, var, var, var, var, var, var, var, var, var
; res = DRMGetUsagePolicy(hIssuanceLicense, uIndex, peUsagePolicyType, pfExclusion, puNameLength, wszName, puMinVersionLength, wszMinVersion, puMaxVersionLength, wszMaxVersion, puPublicKeyLength, wszPublicKey, puDigestAlgorithmLength, wszDigestAlgorithm, pcbDigest, pbDigest)
; hIssuanceLicense : DWORD -> "int"
; uIndex : DWORD -> "int"
; peUsagePolicyType : DRM_USAGEPOLICY_TYPE* in/out -> "int"
; pfExclusion : BOOL* in/out -> "int"
; puNameLength : DWORD* in/out -> "var"
; wszName : LPWSTR optional, out -> "var"
; puMinVersionLength : DWORD* in/out -> "var"
; wszMinVersion : LPWSTR optional, out -> "var"
; puMaxVersionLength : DWORD* in/out -> "var"
; wszMaxVersion : LPWSTR optional, out -> "var"
; puPublicKeyLength : DWORD* in/out -> "var"
; wszPublicKey : LPWSTR optional, out -> "var"
; puDigestAlgorithmLength : DWORD* in/out -> "var"
; wszDigestAlgorithm : LPWSTR optional, out -> "var"
; pcbDigest : DWORD* in/out -> "var"
; pbDigest : BYTE* in/out -> "var"
; ※出力/バッファ引数は var 方式(変数を直接渡す)。varptr 方式にも切替可。
出力引数:
; HRESULT DRMGetUsagePolicy(DWORD hIssuanceLicense, DWORD uIndex, DRM_USAGEPOLICY_TYPE* peUsagePolicyType, BOOL* pfExclusion, DWORD* puNameLength, LPWSTR wszName, DWORD* puMinVersionLength, LPWSTR wszMinVersion, DWORD* puMaxVersionLength, LPWSTR wszMaxVersion, DWORD* puPublicKeyLength, LPWSTR wszPublicKey, DWORD* puDigestAlgorithmLength, LPWSTR wszDigestAlgorithm, DWORD* pcbDigest, BYTE* pbDigest)
#uselib "msdrm.dll"
#cfunc global DRMGetUsagePolicy "DRMGetUsagePolicy" int, int, int, int, var, var, var, var, var, var, var, var, var, var, var, var
; res = DRMGetUsagePolicy(hIssuanceLicense, uIndex, peUsagePolicyType, pfExclusion, puNameLength, wszName, puMinVersionLength, wszMinVersion, puMaxVersionLength, wszMaxVersion, puPublicKeyLength, wszPublicKey, puDigestAlgorithmLength, wszDigestAlgorithm, pcbDigest, pbDigest)
; hIssuanceLicense : DWORD -> "int"
; uIndex : DWORD -> "int"
; peUsagePolicyType : DRM_USAGEPOLICY_TYPE* in/out -> "int"
; pfExclusion : BOOL* in/out -> "int"
; puNameLength : DWORD* in/out -> "var"
; wszName : LPWSTR optional, out -> "var"
; puMinVersionLength : DWORD* in/out -> "var"
; wszMinVersion : LPWSTR optional, out -> "var"
; puMaxVersionLength : DWORD* in/out -> "var"
; wszMaxVersion : LPWSTR optional, out -> "var"
; puPublicKeyLength : DWORD* in/out -> "var"
; wszPublicKey : LPWSTR optional, out -> "var"
; puDigestAlgorithmLength : DWORD* in/out -> "var"
; wszDigestAlgorithm : LPWSTR optional, out -> "var"
; pcbDigest : DWORD* in/out -> "var"
; pbDigest : BYTE* in/out -> "var"
; ※出力/バッファ引数は var 方式(変数を直接渡す)。varptr 方式にも切替可。
import (
	"golang.org/x/sys/windows"
	"unsafe"
)

var (
	msdrm = windows.NewLazySystemDLL("msdrm.dll")
	procDRMGetUsagePolicy = msdrm.NewProc("DRMGetUsagePolicy")
)

// hIssuanceLicense (DWORD), uIndex (DWORD), peUsagePolicyType (DRM_USAGEPOLICY_TYPE* in/out), pfExclusion (BOOL* in/out), puNameLength (DWORD* in/out), wszName (LPWSTR optional, out), puMinVersionLength (DWORD* in/out), wszMinVersion (LPWSTR optional, out), puMaxVersionLength (DWORD* in/out), wszMaxVersion (LPWSTR optional, out), puPublicKeyLength (DWORD* in/out), wszPublicKey (LPWSTR optional, out), puDigestAlgorithmLength (DWORD* in/out), wszDigestAlgorithm (LPWSTR optional, out), pcbDigest (DWORD* in/out), pbDigest (BYTE* in/out)
r1, _, err := procDRMGetUsagePolicy.Call(
	uintptr(hIssuanceLicense),
	uintptr(uIndex),
	uintptr(peUsagePolicyType),
	uintptr(pfExclusion),
	uintptr(puNameLength),
	uintptr(wszName),
	uintptr(puMinVersionLength),
	uintptr(wszMinVersion),
	uintptr(puMaxVersionLength),
	uintptr(wszMaxVersion),
	uintptr(puPublicKeyLength),
	uintptr(wszPublicKey),
	uintptr(puDigestAlgorithmLength),
	uintptr(wszDigestAlgorithm),
	uintptr(pcbDigest),
	uintptr(pbDigest),
)
_ = err  // syscall.Errno (valid when the call sets last-error)
_ = r1   // HRESULT
function DRMGetUsagePolicy(
  hIssuanceLicense: DWORD;   // DWORD
  uIndex: DWORD;   // DWORD
  peUsagePolicyType: Pointer;   // DRM_USAGEPOLICY_TYPE* in/out
  pfExclusion: Pointer;   // BOOL* in/out
  puNameLength: Pointer;   // DWORD* in/out
  wszName: PWideChar;   // LPWSTR optional, out
  puMinVersionLength: Pointer;   // DWORD* in/out
  wszMinVersion: PWideChar;   // LPWSTR optional, out
  puMaxVersionLength: Pointer;   // DWORD* in/out
  wszMaxVersion: PWideChar;   // LPWSTR optional, out
  puPublicKeyLength: Pointer;   // DWORD* in/out
  wszPublicKey: PWideChar;   // LPWSTR optional, out
  puDigestAlgorithmLength: Pointer;   // DWORD* in/out
  wszDigestAlgorithm: PWideChar;   // LPWSTR optional, out
  pcbDigest: Pointer;   // DWORD* in/out
  pbDigest: Pointer   // BYTE* in/out
): Integer; stdcall;
  external 'msdrm.dll' name 'DRMGetUsagePolicy';
result := DllCall("msdrm\DRMGetUsagePolicy"
    , "UInt", hIssuanceLicense   ; DWORD
    , "UInt", uIndex   ; DWORD
    , "Ptr", peUsagePolicyType   ; DRM_USAGEPOLICY_TYPE* in/out
    , "Ptr", pfExclusion   ; BOOL* in/out
    , "Ptr", puNameLength   ; DWORD* in/out
    , "Ptr", wszName   ; LPWSTR optional, out
    , "Ptr", puMinVersionLength   ; DWORD* in/out
    , "Ptr", wszMinVersion   ; LPWSTR optional, out
    , "Ptr", puMaxVersionLength   ; DWORD* in/out
    , "Ptr", wszMaxVersion   ; LPWSTR optional, out
    , "Ptr", puPublicKeyLength   ; DWORD* in/out
    , "Ptr", wszPublicKey   ; LPWSTR optional, out
    , "Ptr", puDigestAlgorithmLength   ; DWORD* in/out
    , "Ptr", wszDigestAlgorithm   ; LPWSTR optional, out
    , "Ptr", pcbDigest   ; DWORD* in/out
    , "Ptr", pbDigest   ; BYTE* in/out
    , "Int")   ; return: HRESULT
●DRMGetUsagePolicy(hIssuanceLicense, uIndex, peUsagePolicyType, pfExclusion, puNameLength, wszName, puMinVersionLength, wszMinVersion, puMaxVersionLength, wszMaxVersion, puPublicKeyLength, wszPublicKey, puDigestAlgorithmLength, wszDigestAlgorithm, pcbDigest, pbDigest) = DLL("msdrm.dll", "int DRMGetUsagePolicy(dword, dword, void*, void*, void*, char*, void*, char*, void*, char*, void*, char*, void*, char*, void*, void*)")
# 呼び出し: DRMGetUsagePolicy(hIssuanceLicense, uIndex, peUsagePolicyType, pfExclusion, puNameLength, wszName, puMinVersionLength, wszMinVersion, puMaxVersionLength, wszMaxVersion, puPublicKeyLength, wszPublicKey, puDigestAlgorithmLength, wszDigestAlgorithm, pcbDigest, pbDigest)
# hIssuanceLicense : DWORD -> "dword"
# uIndex : DWORD -> "dword"
# peUsagePolicyType : DRM_USAGEPOLICY_TYPE* in/out -> "void*"
# pfExclusion : BOOL* in/out -> "void*"
# puNameLength : DWORD* in/out -> "void*"
# wszName : LPWSTR optional, out -> "char*"
# puMinVersionLength : DWORD* in/out -> "void*"
# wszMinVersion : LPWSTR optional, out -> "char*"
# puMaxVersionLength : DWORD* in/out -> "void*"
# wszMaxVersion : LPWSTR optional, out -> "char*"
# puPublicKeyLength : DWORD* in/out -> "void*"
# wszPublicKey : LPWSTR optional, out -> "char*"
# puDigestAlgorithmLength : DWORD* in/out -> "void*"
# wszDigestAlgorithm : LPWSTR optional, out -> "char*"
# pcbDigest : DWORD* in/out -> "void*"
# pbDigest : BYTE* in/out -> "void*"
# なでしこ1は32bit・ANSI(Shift_JIS)。文字列=char*(ANSI)、ポインタ/ハンドル=void*(4byte)。