Win32 API 日本語リファレンス
ホームNetworking.WinInet › GetUrlCacheEntryBinaryBlob

GetUrlCacheEntryBinaryBlob

関数
URLキャッシュエントリのバイナリBLOBデータを取得する。
DLLWININET.dll呼出規約winapi

シグネチャ

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

DWORD GetUrlCacheEntryBinaryBlob(
    LPCWSTR pwszUrlName,
    DWORD* dwType,
    FILETIME* pftExpireTime,
    FILETIME* pftAccessTime,
    FILETIME* pftModifiedTime,
    BYTE** ppbBlob,
    DWORD* pcbBlob
);

パラメーター

名前方向
pwszUrlNameLPCWSTRin
dwTypeDWORD*out
pftExpireTimeFILETIME*out
pftAccessTimeFILETIME*out
pftModifiedTimeFILETIME*out
ppbBlobBYTE**out
pcbBlobDWORD*out

戻り値の型: DWORD

各言語での呼び出し定義

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

DWORD GetUrlCacheEntryBinaryBlob(
    LPCWSTR pwszUrlName,
    DWORD* dwType,
    FILETIME* pftExpireTime,
    FILETIME* pftAccessTime,
    FILETIME* pftModifiedTime,
    BYTE** ppbBlob,
    DWORD* pcbBlob
);
[DllImport("WININET.dll", ExactSpelling = true)]
static extern uint GetUrlCacheEntryBinaryBlob(
    [MarshalAs(UnmanagedType.LPWStr)] string pwszUrlName,   // LPCWSTR
    out uint dwType,   // DWORD* out
    IntPtr pftExpireTime,   // FILETIME* out
    IntPtr pftAccessTime,   // FILETIME* out
    IntPtr pftModifiedTime,   // FILETIME* out
    IntPtr ppbBlob,   // BYTE** out
    out uint pcbBlob   // DWORD* out
);
<DllImport("WININET.dll", ExactSpelling:=True)>
Public Shared Function GetUrlCacheEntryBinaryBlob(
    <MarshalAs(UnmanagedType.LPWStr)> pwszUrlName As String,   ' LPCWSTR
    <Out> ByRef dwType As UInteger,   ' DWORD* out
    pftExpireTime As IntPtr,   ' FILETIME* out
    pftAccessTime As IntPtr,   ' FILETIME* out
    pftModifiedTime As IntPtr,   ' FILETIME* out
    ppbBlob As IntPtr,   ' BYTE** out
    <Out> ByRef pcbBlob As UInteger   ' DWORD* out
) As UInteger
End Function
' pwszUrlName : LPCWSTR
' dwType : DWORD* out
' pftExpireTime : FILETIME* out
' pftAccessTime : FILETIME* out
' pftModifiedTime : FILETIME* out
' ppbBlob : BYTE** out
' pcbBlob : DWORD* out
Declare PtrSafe Function GetUrlCacheEntryBinaryBlob Lib "wininet" ( _
    ByVal pwszUrlName As LongPtr, _
    ByRef dwType As Long, _
    ByVal pftExpireTime As LongPtr, _
    ByVal pftAccessTime As LongPtr, _
    ByVal pftModifiedTime As LongPtr, _
    ByVal ppbBlob As LongPtr, _
    ByRef pcbBlob As Long) As Long
' VBA7前提(PtrSafe)。32bit Office では LongPtr→Long。Integer=16bit / Long=32bit / LongLong=64bit。
import ctypes
from ctypes import wintypes

GetUrlCacheEntryBinaryBlob = ctypes.windll.wininet.GetUrlCacheEntryBinaryBlob
GetUrlCacheEntryBinaryBlob.restype = wintypes.DWORD
GetUrlCacheEntryBinaryBlob.argtypes = [
    wintypes.LPCWSTR,  # pwszUrlName : LPCWSTR
    ctypes.POINTER(wintypes.DWORD),  # dwType : DWORD* out
    ctypes.c_void_p,  # pftExpireTime : FILETIME* out
    ctypes.c_void_p,  # pftAccessTime : FILETIME* out
    ctypes.c_void_p,  # pftModifiedTime : FILETIME* out
    ctypes.c_void_p,  # ppbBlob : BYTE** out
    ctypes.POINTER(wintypes.DWORD),  # pcbBlob : DWORD* out
]
require 'fiddle'
require 'fiddle/import'

lib = Fiddle.dlopen('WININET.dll')
GetUrlCacheEntryBinaryBlob = Fiddle::Function.new(
  lib['GetUrlCacheEntryBinaryBlob'],
  [
    Fiddle::TYPE_VOIDP,  # pwszUrlName : LPCWSTR
    Fiddle::TYPE_VOIDP,  # dwType : DWORD* out
    Fiddle::TYPE_VOIDP,  # pftExpireTime : FILETIME* out
    Fiddle::TYPE_VOIDP,  # pftAccessTime : FILETIME* out
    Fiddle::TYPE_VOIDP,  # pftModifiedTime : FILETIME* out
    Fiddle::TYPE_VOIDP,  # ppbBlob : BYTE** out
    Fiddle::TYPE_VOIDP,  # pcbBlob : DWORD* out
  ],
  -Fiddle::TYPE_INT)
#[link(name = "wininet")]
extern "system" {
    fn GetUrlCacheEntryBinaryBlob(
        pwszUrlName: *const u16,  // LPCWSTR
        dwType: *mut u32,  // DWORD* out
        pftExpireTime: *mut FILETIME,  // FILETIME* out
        pftAccessTime: *mut FILETIME,  // FILETIME* out
        pftModifiedTime: *mut FILETIME,  // FILETIME* out
        ppbBlob: *mut *mut u8,  // BYTE** out
        pcbBlob: *mut u32  // DWORD* out
    ) -> u32;
}
// crates: windows-sys provides ready-made bindings for this API.
$sig = @"
[DllImport("WININET.dll")]
public static extern uint GetUrlCacheEntryBinaryBlob([MarshalAs(UnmanagedType.LPWStr)] string pwszUrlName, out uint dwType, IntPtr pftExpireTime, IntPtr pftAccessTime, IntPtr pftModifiedTime, IntPtr ppbBlob, out uint pcbBlob);
"@
$api = Add-Type -MemberDefinition $sig -Name 'WININET_GetUrlCacheEntryBinaryBlob' -Namespace Win32 -PassThru
# $api::GetUrlCacheEntryBinaryBlob(pwszUrlName, dwType, pftExpireTime, pftAccessTime, pftModifiedTime, ppbBlob, pcbBlob)
#uselib "WININET.dll"
#func global GetUrlCacheEntryBinaryBlob "GetUrlCacheEntryBinaryBlob" sptr, sptr, sptr, sptr, sptr, sptr, sptr
; GetUrlCacheEntryBinaryBlob pwszUrlName, varptr(dwType), varptr(pftExpireTime), varptr(pftAccessTime), varptr(pftModifiedTime), varptr(ppbBlob), varptr(pcbBlob)   ; 戻り値は stat
; pwszUrlName : LPCWSTR -> "sptr"
; dwType : DWORD* out -> "sptr"
; pftExpireTime : FILETIME* out -> "sptr"
; pftAccessTime : FILETIME* out -> "sptr"
; pftModifiedTime : FILETIME* out -> "sptr"
; ppbBlob : BYTE** out -> "sptr"
; pcbBlob : DWORD* out -> "sptr"
; ※HSP3.7は #func のため戻り値はシステム変数 stat に格納されます。
出力引数:
#uselib "WININET.dll"
#cfunc global GetUrlCacheEntryBinaryBlob "GetUrlCacheEntryBinaryBlob" wstr, var, var, var, var, var, var
; res = GetUrlCacheEntryBinaryBlob(pwszUrlName, dwType, pftExpireTime, pftAccessTime, pftModifiedTime, ppbBlob, pcbBlob)
; pwszUrlName : LPCWSTR -> "wstr"
; dwType : DWORD* out -> "var"
; pftExpireTime : FILETIME* out -> "var"
; pftAccessTime : FILETIME* out -> "var"
; pftModifiedTime : FILETIME* out -> "var"
; ppbBlob : BYTE** out -> "var"
; pcbBlob : DWORD* out -> "var"
; ※出力/バッファ引数は var 方式(変数を直接渡す)。varptr 方式にも切替可。
出力引数:
; DWORD GetUrlCacheEntryBinaryBlob(LPCWSTR pwszUrlName, DWORD* dwType, FILETIME* pftExpireTime, FILETIME* pftAccessTime, FILETIME* pftModifiedTime, BYTE** ppbBlob, DWORD* pcbBlob)
#uselib "WININET.dll"
#cfunc global GetUrlCacheEntryBinaryBlob "GetUrlCacheEntryBinaryBlob" wstr, var, var, var, var, var, var
; res = GetUrlCacheEntryBinaryBlob(pwszUrlName, dwType, pftExpireTime, pftAccessTime, pftModifiedTime, ppbBlob, pcbBlob)
; pwszUrlName : LPCWSTR -> "wstr"
; dwType : DWORD* out -> "var"
; pftExpireTime : FILETIME* out -> "var"
; pftAccessTime : FILETIME* out -> "var"
; pftModifiedTime : FILETIME* out -> "var"
; ppbBlob : BYTE** out -> "var"
; pcbBlob : DWORD* out -> "var"
; ※出力/バッファ引数は var 方式(変数を直接渡す)。varptr 方式にも切替可。
import (
	"golang.org/x/sys/windows"
	"unsafe"
)

var (
	wininet = windows.NewLazySystemDLL("WININET.dll")
	procGetUrlCacheEntryBinaryBlob = wininet.NewProc("GetUrlCacheEntryBinaryBlob")
)

// pwszUrlName (LPCWSTR), dwType (DWORD* out), pftExpireTime (FILETIME* out), pftAccessTime (FILETIME* out), pftModifiedTime (FILETIME* out), ppbBlob (BYTE** out), pcbBlob (DWORD* out)
r1, _, err := procGetUrlCacheEntryBinaryBlob.Call(
	uintptr(unsafe.Pointer(windows.StringToUTF16Ptr(pwszUrlName))),
	uintptr(dwType),
	uintptr(pftExpireTime),
	uintptr(pftAccessTime),
	uintptr(pftModifiedTime),
	uintptr(ppbBlob),
	uintptr(pcbBlob),
)
_ = err  // syscall.Errno (valid when the call sets last-error)
_ = r1   // DWORD
function GetUrlCacheEntryBinaryBlob(
  pwszUrlName: PWideChar;   // LPCWSTR
  dwType: Pointer;   // DWORD* out
  pftExpireTime: Pointer;   // FILETIME* out
  pftAccessTime: Pointer;   // FILETIME* out
  pftModifiedTime: Pointer;   // FILETIME* out
  ppbBlob: Pointer;   // BYTE** out
  pcbBlob: Pointer   // DWORD* out
): DWORD; stdcall;
  external 'WININET.dll' name 'GetUrlCacheEntryBinaryBlob';
result := DllCall("WININET\GetUrlCacheEntryBinaryBlob"
    , "WStr", pwszUrlName   ; LPCWSTR
    , "Ptr", dwType   ; DWORD* out
    , "Ptr", pftExpireTime   ; FILETIME* out
    , "Ptr", pftAccessTime   ; FILETIME* out
    , "Ptr", pftModifiedTime   ; FILETIME* out
    , "Ptr", ppbBlob   ; BYTE** out
    , "Ptr", pcbBlob   ; DWORD* out
    , "UInt")   ; return: DWORD
●GetUrlCacheEntryBinaryBlob(pwszUrlName, dwType, pftExpireTime, pftAccessTime, pftModifiedTime, ppbBlob, pcbBlob) = DLL("WININET.dll", "dword GetUrlCacheEntryBinaryBlob(char*, void*, void*, void*, void*, void*, void*)")
# 呼び出し: GetUrlCacheEntryBinaryBlob(pwszUrlName, dwType, pftExpireTime, pftAccessTime, pftModifiedTime, ppbBlob, pcbBlob)
# pwszUrlName : LPCWSTR -> "char*"
# dwType : DWORD* out -> "void*"
# pftExpireTime : FILETIME* out -> "void*"
# pftAccessTime : FILETIME* out -> "void*"
# pftModifiedTime : FILETIME* out -> "void*"
# ppbBlob : BYTE** out -> "void*"
# pcbBlob : DWORD* out -> "void*"
# なでしこ1は32bit・ANSI(Shift_JIS)。文字列=char*(ANSI)、ポインタ/ハンドル=void*(4byte)。