ホーム › Data.RightsManagement › DRMGetUsagePolicy
DRMGetUsagePolicy
関数発行ライセンスの使用ポリシーを取得する。
シグネチャ
// 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
);パラメーター
| 名前 | 型 | 方向 |
|---|---|---|
| hIssuanceLicense | DWORD | in |
| uIndex | DWORD | in |
| peUsagePolicyType | DRM_USAGEPOLICY_TYPE* | inout |
| pfExclusion | BOOL* | inout |
| puNameLength | DWORD* | inout |
| wszName | LPWSTR | outoptional |
| puMinVersionLength | DWORD* | inout |
| wszMinVersion | LPWSTR | outoptional |
| puMaxVersionLength | DWORD* | inout |
| wszMaxVersion | LPWSTR | outoptional |
| puPublicKeyLength | DWORD* | inout |
| wszPublicKey | LPWSTR | outoptional |
| puDigestAlgorithmLength | DWORD* | inout |
| wszDigestAlgorithm | LPWSTR | outoptional |
| pcbDigest | DWORD* | inout |
| pbDigest | BYTE* | 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 方式にも切替可。#uselib "msdrm.dll" #cfunc global DRMGetUsagePolicy "DRMGetUsagePolicy" int, int, int, int, sptr, sptr, sptr, sptr, sptr, sptr, sptr, sptr, sptr, sptr, sptr, sptr ; res = 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)) ; hIssuanceLicense : DWORD -> "int" ; uIndex : DWORD -> "int" ; peUsagePolicyType : DRM_USAGEPOLICY_TYPE* in/out -> "int" ; pfExclusion : BOOL* in/out -> "int" ; 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" ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは 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 方式にも切替可。; 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, intptr, intptr, intptr, intptr, intptr, intptr, intptr, intptr, intptr, intptr, intptr, intptr ; res = 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)) ; hIssuanceLicense : DWORD -> "int" ; uIndex : DWORD -> "int" ; peUsagePolicyType : DRM_USAGEPOLICY_TYPE* in/out -> "int" ; pfExclusion : BOOL* in/out -> "int" ; puNameLength : DWORD* in/out -> "intptr" ; wszName : LPWSTR optional, out -> "intptr" ; puMinVersionLength : DWORD* in/out -> "intptr" ; wszMinVersion : LPWSTR optional, out -> "intptr" ; puMaxVersionLength : DWORD* in/out -> "intptr" ; wszMaxVersion : LPWSTR optional, out -> "intptr" ; puPublicKeyLength : DWORD* in/out -> "intptr" ; wszPublicKey : LPWSTR optional, out -> "intptr" ; puDigestAlgorithmLength : DWORD* in/out -> "intptr" ; wszDigestAlgorithm : LPWSTR optional, out -> "intptr" ; pcbDigest : DWORD* in/out -> "intptr" ; pbDigest : BYTE* in/out -> "intptr" ; ※出力/バッファ引数はポインタ方式(token=intptr / 呼び出しは 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 // HRESULTfunction 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)。