[ComImport,
Guid("79EAC9C1-BAF9-11CE-8C82-00AA004BA90B"),
InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IBindStatusCallback
{
[MethodImpl(MethodImplOptions.InternalCall,
MethodCodeType=MethodCodeType.Runtime)]
void OnStartBinding(
[In] uint dwReserved,
[In, MarshalAs(UnmanagedType.Interface)] IBinding pib);
[MethodImpl(MethodImplOptions.InternalCall,
MethodCodeType=MethodCodeType.Runtime)]
void GetPriority(out int pnPriority);
[MethodImpl(MethodImplOptions.InternalCall,
MethodCodeType=MethodCodeType.Runtime)]
void OnLowResource([In] uint reserved);
[MethodImpl(MethodImplOptions.InternalCall,
MethodCodeType=MethodCodeType.Runtime)]
void OnProgress(
[In] uint ulProgress,
[In] uint ulProgressMax,
[In] BINDSTATUS ulStatusCode,
[In, MarshalAs(UnmanagedType.LPWStr)] string szStatusText);
[MethodImpl(MethodImplOptions.InternalCall,
MethodCodeType=MethodCodeType.Runtime)]
void OnStopBinding(
[In, MarshalAs(UnmanagedType.Error)] uint hresult,
[In, MarshalAs(UnmanagedType.LPWStr)] string szError);
[MethodImpl(MethodImplOptions.InternalCall,
MethodCodeType=MethodCodeType.Runtime)]
void GetBindInfo(
out BINDF grfBINDF,
[In, Out] ref BINDINFO pbindinfo);
[MethodImpl(MethodImplOptions.InternalCall,
MethodCodeType=MethodCodeType.Runtime)]
void OnDataAvailable(
[In] uint grfBSCF,
[In] uint dwSize,
[In] ref FORMATETC pFormatetc,
[In] ref STGMEDIUM pStgmed);
[MethodImpl(MethodImplOptions.InternalCall,
MethodCodeType=MethodCodeType.Runtime)]
void OnObjectAvailable(
[In] ref Guid riid,
[In, MarshalAs(UnmanagedType.IUnknown)] object punk);
}
TODO
[Flags]
public enum BINDVERB : uint
{
BINDVERB_GET = 0x00000000, // default action
BINDVERB_POST = 0x00000001, // post verb
BINDVERB_PUT = 0x00000002, // put verb
BINDVERB_CUSTOM = 0x00000003, // custom verb
}
// flags that describe the type of transaction that caller wants
[Flags]
public enum BINDF : uint
{
BINDF_DEFAULT = 0x00000000
,BINDF_ASYNCHRONOUS = 0x00000001
,BINDF_ASYNCSTORAGE = 0x00000002
,BINDF_NOPROGRESSIVERENDERING = 0x00000004
,BINDF_OFFLINEOPERATION = 0x00000008
,BINDF_GETNEWESTVERSION = 0x00000010
,BINDF_NOWRITECACHE = 0x00000020
,BINDF_NEEDFILE = 0x00000040
,BINDF_PULLDATA = 0x00000080
,BINDF_IGNORESECURITYPROBLEM = 0x00000100
,BINDF_RESYNCHRONIZE = 0x00000200
,BINDF_HYPERLINK = 0x00000400
,BINDF_NO_UI = 0x00000800
,BINDF_SILENTOPERATION = 0x00001000
,BINDF_PRAGMA_NO_CACHE = 0x00002000
,BINDF_GETCLASSOBJECT = 0x00004000
,BINDF_RESERVED_1 = 0x00008000
// bindstatus callback from client is free threaded
,BINDF_FREE_THREADED = 0x00010000
// client does not need to know excat size of data available
// hence the read goes directly to e.g. socket
,BINDF_DIRECT_READ = 0x00020000
// is the transaction a forms submit.
,BINDF_FORMS_SUBMIT = 0x00040000
,BINDF_GETFROMCACHE_IF_NET_FAIL = 0x00080000
// binding is from UrlMoniker
,BINDF_FROMURLMON = 0x00100000
,BINDF_FWD_BACK = 0x00200000
,BINDF_PREFERDEFAULTHANDLER = 0x00400000
,BINDF_ENFORCERESTRICTED = 0x00800000
// Note:
// the highest byte 0x??000000 is used internally
// see other documentation
}
[StructLayout(LayoutKind.Sequential, CharSet=CharSet.Auto, Pack=4)]
public struct SECURITY_ATTRIBUTES
{
public uint nLength;
public uint lpSecurityDescriptor;
public int bInheritHandle;
}
[StructLayout(LayoutKind.Sequential, CharSet=CharSet.Auto, Pack=4)]
public struct BINDINFO
{
public uint cbSize;
[MarshalAs(UnmanagedType.LPWStr)]
public string szExtraInfo;
public STGMEDIUM stgmedData;
public uint grfBindInfoF;
public BINDVERB dwBindVerb;
[MarshalAs(UnmanagedType.LPWStr)]
public string szCustomVerb;
public uint cbstgmedData;
public uint dwOptions;
public uint dwOptionsFlags;
public uint dwCodePage;
public SECURITY_ATTRIBUTES securityAttributes;
public Guid iid;
[MarshalAs(UnmanagedType.IUnknown)]
public object punk;
public uint dwReserved;
}
[StructLayout(LayoutKind.Sequential, CharSet=CharSet.Auto, Pack=4), ComConversionLoss]
public struct FORMATETC
{
public uint cfFormat;
[ComConversionLoss]
public IntPtr ptd;
public uint dwAspect;
public int lindex;
public uint tymed;
}
[StructLayout(LayoutKind.Sequential, CharSet=CharSet.Auto, Pack=4), ComConversionLoss]
public struct STGMEDIUM
{
public uint tymed;
[ComConversionLoss]
public IntPtr data;
[MarshalAs(UnmanagedType.IUnknown)]
public object pUnkForRelease;
}
public enum BINDSTATUS : uint
{
BINDSTATUS_FINDINGRESOURCE = 1
,BINDSTATUS_CONNECTING
,BINDSTATUS_REDIRECTING
,BINDSTATUS_BEGINDOWNLOADDATA
,BINDSTATUS_DOWNLOADINGDATA
,BINDSTATUS_ENDDOWNLOADDATA
,BINDSTATUS_BEGINDOWNLOADCOMPONENTS
,BINDSTATUS_INSTALLINGCOMPONENTS
,BINDSTATUS_ENDDOWNLOADCOMPONENTS
,BINDSTATUS_USINGCACHEDCOPY
,BINDSTATUS_SENDINGREQUEST
,BINDSTATUS_CLASSIDAVAILABLE
,BINDSTATUS_MIMETYPEAVAILABLE
,BINDSTATUS_CACHEFILENAMEAVAILABLE
,BINDSTATUS_BEGINSYNCOPERATION
,BINDSTATUS_ENDSYNCOPERATION
,BINDSTATUS_BEGINUPLOADDATA
,BINDSTATUS_UPLOADINGDATA
,BINDSTATUS_ENDUPLOADDATA
,BINDSTATUS_PROTOCOLCLASSID
,BINDSTATUS_ENCODING
,BINDSTATUS_VERIFIEDMIMETYPEAVAILABLE
,BINDSTATUS_CLASSINSTALLLOCATION
,BINDSTATUS_DECODING
,BINDSTATUS_LOADINGMIMEHANDLER
,BINDSTATUS_CONTENTDISPOSITIONATTACH
,BINDSTATUS_FILTERREPORTMIMETYPE
,BINDSTATUS_CLSIDCANINSTANTIATE
,BINDSTATUS_IUNKNOWNAVAILABLE
,BINDSTATUS_DIRECTBIND
,BINDSTATUS_RAWMIMETYPE
,BINDSTATUS_PROXYDETECTING
,BINDSTATUS_ACCEPTRANGES
,BINDSTATUS_COOKIE_SENT
,BINDSTATUS_COMPACT_POLICY_RECEIVED
,BINDSTATUS_COOKIE_SUPPRESSED
,BINDSTATUS_COOKIE_STATE_UNKNOWN
,BINDSTATUS_COOKIE_STATE_ACCEPT
,BINDSTATUS_COOKIE_STATE_REJECT
,BINDSTATUS_COOKIE_STATE_PROMPT
,BINDSTATUS_COOKIE_STATE_LEASH
,BINDSTATUS_COOKIE_STATE_DOWNGRADE
,BINDSTATUS_POLICY_HREF
,BINDSTATUS_P3P_HEADER
,BINDSTATUS_SESSION_COOKIE_RECEIVED
,BINDSTATUS_PERSISTENT_COOKIE_RECEIVED
,BINDSTATUS_SESSION_COOKIES_ALLOWED
}
None.
