public static extern int bind(IntPtr s, ref sockaddr_in addr, int addrsize);
public static extern int bind(IntPtr s, ref sockaddr_in6 addr, int addrsize);
Declare Function bind Lib "ws2_32.dll" ( _
public static bool Bind(string ipAddress, int port, IntPtr socketHandle)
resultCode = bind(socketHandle, ref remoteAddress,
SIO_INDEX_BIND = -1744830456,
/// Treat wildcard bind as AF_INET6-only.
/** Unbind source PE. */
DELTA_FLAG_UNBIND = (0x00002000), /* flags[ 13 ] */
/// Long-edge binding, that is, the long edge of the page is vertical.
/// Short-edge binding, that is, the long edge of the page is horizontal.
///Not able to bind to the source
[Description("Not able to bind to the source")]
public const int OLE_E_CANT_BINDTOSOURCE = unchecked((int)0x8004000A);
///Moniker is not bindable
[Description("Moniker is not bindable")]
public const int MK_E_NOTBINDABLE = unchecked((int)0x800401E8);
///OLE service could not bind object
[Description("OLE service could not bind object")]
///Client's supplied SSPI channel bindings were incorrect.
[Description("Client's supplied SSPI channel bindings were incorrect.")]
public const int SEC_E_BAD_BINDINGS = unchecked((int)0x80090346);
System.Reflection.FieldInfo[] fieldsInfo = typeof(HRESULT).GetFields(System.Reflection.BindingFlags.Public|System.Reflection.BindingFlags.Static);
'''Not able to bind to the source
<Description("Not able to bind to the source")> _
Public Const OLE_E_CANT_BINDTOSOURCE As Integer = CInt(&H8004000aUI)
'''Moniker is not bindable
<Description("Moniker is not bindable")> _
Public Const MK_E_NOTBINDABLE As Integer = CInt(&H800401e8UI)
'''OLE service could not bind object
<Description("OLE service could not bind object")> _
'''Client's supplied SSPI channel bindings were incorrect.
<Description("Client's supplied SSPI channel bindings were incorrect.")> _
Public Const SEC_E_BAD_BINDINGS As Integer = CInt(&H80090346UI)
Dim fieldsInfo As System.Reflection.FieldInfo() = GetType(HRESULT).GetFields(System.Reflection.BindingFlags.[Public] Or System.Reflection.BindingFlags.[Static])
/// Unable to bind IFilter for embedded object
/// Unable to bind IFilter for linked object
/// IFilter::Init method only once and does not call IFilter::BindRegion.
' IFilter::Init method only once and does not call IFilter::BindRegion.
FEATURE_SAFE_BINDTOOBJECT = 16,
KerbAddBindingCacheEntryMessage = 10,
/// <summary>823. Received Crypto-Binding type-length-value (TLV) is invalid. </summary>
ERROR_PEAP_CRYPTOBINDING_INVALID,
/// <summary>824. Crypto-Binding TLV was not received. </summary>
ERROR_PEAP_CRYPTOBINDING_NOTRECEIVED,
SFGAO_STORAGE = 0x00000008, // supports BindToObject(IID_IStorage)
SFGAO_FOLDER = 0x20000000, // support BindToObject(IID_IShellFolder)
SFGAO_STREAM = 0x00400000, // supports BindToObject(IID_IStream)
public static void BindCertificate(string ipAddress, int port, byte[] hash)
var obj = System.Runtime.InteropServices.Marshal.BindToMoniker("IIS://localhost/W3SVC") as IADs;
IADsContainer baseObj = (IADsContainer)Marshal.BindToMoniker("IIS://LOCALHOST/W3SVC");
public class Downloader : IBindStatusCallback, IDisposable, IAuthenticate
URLDownloadToFile(IntPtr.Zero, SourcePath , LocalPath ,0,(IBindStatusCallback)this);
public interface IBinding
void GetBindResult(out Guid pclsidProtocol, out uint pdwResult, [MarshalAs(UnmanagedType.LPWStr)] out string pszResult, [In, Out] ref uint dwReserved);
Public Interface IBinding
Sub GetBindResult(ByRef pclsidProtocol As Guid, ByRef pdwResult As UInteger, <MarshalAs(UnmanagedType.LPWStr)> ByRef pszResult As String, <[In](), [Out]()> ByRef dwReserved As UInteger)
public interface IBindStatusCallback
void OnStartBinding(
[In, MarshalAs(UnmanagedType.Interface)] IBinding pib);
[In] BINDSTATUS ulStatusCode,
void OnStopBinding(
void GetBindInfo(
out BINDF grfBINDF,
[In, Out] ref BINDINFO pbindinfo);
public enum BINDVERB : uint
BINDVERB_GET = 0x00000000, // default action
BINDVERB_POST = 0x00000001, // post verb
BINDVERB_PUT = 0x00000002, // put verb
BINDVERB_CUSTOM = 0x00000003, // custom verb
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
,BINDF_DIRECT_READ = 0x00020000
,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
public struct BINDINFO
public uint grfBindInfoF;
public BINDVERB dwBindVerb;
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
INET_E_USE_EXTEND_BINDING = 0x800C0017,
public class Downloader : IBindStatusCallback,IDisposable
private IBinding mobjBinding;
if(mobjBinding!=null)
Marshal.ReleaseComObject(mobjBinding);
mobjBinding=null;
[MarshalAs(UnmanagedType.Interface)] IBindStatusCallback lpfnCB);
if( mobjBinding ==null)
URLDownloadToFile(IntPtr.Zero, SourcePath , LocalPath ,0,(IBindStatusCallback)this);//use 0x10 for new download
lock(mobjBinding)
mobjBinding.Abort();
public void GetBindInfo(out BINDF grfBINDF ,ref BINDINFO pbindinfo )
grfBINDF=BINDF.BINDF_IGNORESECURITYPROBLEM;
uint cbSize = pbindinfo.cbSize; // remember incoming cbSize
pbindinfo=new BINDINFO();//reset
pbindinfo.cbSize = cbSize; // restore cbSize
pbindinfo.dwBindVerb = BINDVERB.BINDVERB_GET; // set verb
pbindinfo.stgmedData.tymed=0;
pbindinfo.cbstgmedData=(uint)Marshal.SizeOf(pbindinfo.stgmedData);
pbindinfo.dwOptions=0;
pbindinfo.dwOptionsFlags=0;
pbindinfo.dwReserved=0;
public void OnProgress(uint ulProgress , uint ulProgressMax , BINDSTATUS ulStatusCode ,string szStatusText )
if(mobjBinding!=null && IsAborted)
public void OnStartBinding (uint dwReserved , IBinding pib )
mobjBinding = pib;
public void OnStopBinding (uint hresult , string szError )
mobjBinding = null;
Me.button1.TabIndex = 0
/// The IFilter::BindRegion method retrieves an interface representing
IFilterReturnCodes BindRegion(ref FILTERREGION origPos,
''' The IFilter::BindRegion method retrieves an interface representing
Function BindRegion( _
public interface IInternetBindInfo
void GetBindInfo(out uint grfBINDF, [In, Out] ref BINDINFO pbindinfo);
void GetBindString(uint ulStringType, [MarshalAs(UnmanagedType.LPWStr)] ref string ppwzStr, uint cEl, ref uint pcElFetched);
Public Interface IInternetBindInfo
Sub GetBindInfo(<Out()> ByRef grfBINDF As UInt32, <[In](), Out()> ByRef pbindinfo As BINDINFO)
Sub GetBindString(ByVal ulStringType As UInt32, <MarshalAs(UnmanagedType.LPWStr)> ByRef ppwzStr As String, ByVal cEl As UInt32, ByRef pcElFetched As UInt32)
IInternetBindInfo bindInfo,
IInternetProtocol, IInternetProtocolSink, IInternetBindInfo, PROTOCOLDATA
BindingFlags.Instance |
BindingFlags.InvokeMethod |
BindingFlags.Public, null,
//perform early binding in most cases, so the order of the methods
int ParseDisplayName([In, MarshalAs(UnmanagedType.Interface)] IBindCtx pbc,
IBindCtx pbc,
/// <param name="pbc">Optional bind context that controls the parsing operation. This parameter is normally set to NULL. </param>
/// <param name="pbc">Optional address of an IBindCtx interface on a bind context object to be used during this operation.</param>
void BindToObject(IntPtr pidl, IntPtr pbc, [In]ref Guid riid, out IntPtr ppv);
void BindToStorage(IntPtr pidl, IntPtr pbc, [In]ref Guid riid, out IntPtr ppv);
// Not supported: IBindCtx
void BindToHandler ( [In, MarshalAs ( UnmanagedType.Interface )] IntPtr pbc, [In] ref Guid rbhid,
Function BindToHandler(<[In](), MarshalAs(UnmanagedType.[Interface])> pbc As IntPtr, <[In]()> rbhid As Guid, <[In]()> riid As Guid, ByRef ppvOut As IntPtr) As Integer
GL_TEXTURE_BINDING_1D = 0x8068,
GL_TEXTURE_BINDING_2D = 0x8069,
public static extern void glBindTexture(uint target, uint texture);
static extern int BindMoniker(UCOMIMoniker pmk, uint grfOpt,
Declare Function BindMoniker Lib "ole32.dll" (pmk As UCOMIMoniker, grfOpt As Integer, _
static extern TODO BIND_OPTS(TODO);
Declare Function BIND_OPTS Lib "ole32.dll" (TODO) As TODO
[In] ref BIND_OPTS pBindOptions,
BIND_OPTS
/// Returns a pointer to an implementation of IBindCtx (a bind context object).
/// This object stores information about a particular moniker-binding operation.
/// <param name="ppbc">Address of an IBindCtx* pointer variable that receives
/// the interface pointer to the new bind context object. When the function is
/// successful, the caller is responsible for calling Release on the bind context.
/// A NULL value for the bind context indicates that an error occurred.</param>
static extern int CreateBindCtx(uint reserved, out IBindCtx ppbc);
static extern int MkParseDisplayName(UCOMIBindCtx pbc,
/// <param name="pbc">A pointer to the IBindCtx interface on the bind context object to be used in this binding operation.</param>
int MkParseDisplayName(IBindCtx pbc, string szUserName, ref int pchEaten, out IMoniker ppmk);
BindingFlags.Static | BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.InvokeMethod,
myCursor.GetType().InvokeMember("handle",BindingFlags.Public | BindingFlags.NonPublic |BindingFlags.Instance | System.Reflection.BindingFlags.SetField,null,myCursor,new object [] { colorCursorHandle } );
CharSet = CharSet.Unicode, EntryPoint = "DsBindWithCredW", SetLastError = true)]
public static extern UInt32 DsBindWithCred(
Declare Function DsBindWithCred Lib "ntdsapi.dll" (TODO) As TODO
The success of the name conversion request depends on where the client is bound. Clients bind to specific instances of the directory service using some variant of DsBind. If bound to a global catalog, the scope of the name mapping is the entire forest. If not bound to a global catalog, the scope of the name mapping is the domain not covered by a global catalog for that domain controller. If not bound to a global catalog and a name is not found, but the input name unambiguously identifies its domain and this domain is in the forest, then the return data identifies the DNS domain name for the domain of interest. Clients are expected to use this data to bind to the correct domain controller or global catalog and call DsCrackNames again with the new bind handle.
uint res = DsBind(domainControllerName, dnsDomainName, out handle);
uint ret = DsUnBind(ref handle);
System.Diagnostics.Debug.WriteLineIf(ret != 0, "Error unbinding :\t" + ret.ToString());
public static extern uint DsBind(
public static extern uint DsUnBind(ref IntPtr phDS);
static public extern uint DsBind(
static public extern uint DsUnBind(ref IntPtr phDS);
Console.WriteLine("binding to domain controllert");
uint ret = NtdsHelper.DsBind("sdbad10004", "dom1.ad.sys", out hDC);
NtdsHelper.DsUnBind(ref hDC);
Requires DsBind, recommend DsUnBind and DsFreeSchemaGuidMap
result = DsBind(domainController, domain, out phDS);
result = DsUnBind(phDS);
Console.WriteLine("Couldn't bind to the domain {0} on domain controller {1}.", domain, domainController);
static extern uint DsUnBind(
CharSet = CharSet.Unicode, EntryPoint = "DsUnBindW", SetLastError = true)]
public static extern UInt32 DsUnBind(
Declare Function DsUnBind Lib "ntdsapi.dll" (TODO) As TODO
/// The socket address will be used in a call to the bind function.
''' structure is used by the IFilter::BindRegion method.
IMAGE_DLLCHARACTERISTICS_NO_BIND = 0x0800,
''' IMAGE_DLLCHARACTERISTICS_NO_BIND // Do not bind this image
' Some values are: IMAGE_DLLCHARACTERISTICS_NO_BIND (Do not bind this image)
SERVICE_ACCEPT_NETBINDCHANGE = 0x00000010,
public static PropertyKey PKEY_ParsingBindContext = new PropertyKey( 0xDFB9A04D, 0x362F, 0x4CA3, 0xB3, 0x0B, 0x02, 0x54, 0xB1, 0x7B, 0x5B, 0x84, 100);
foreach (FieldInfo fi in classType.GetFields(BindingFlags.Public | BindingFlags.Static | BindingFlags.DeclaredOnly))
BindingFlags flags = BindingFlags.Instance | BindingFlags.Public;// | BindingFlags.FlattenHierarchy;
/// The string binding is invalid.
public const int RPC_S_INVALID_STRING_BINDING = 1700;
/// The binding handle is not the correct type.
public const int RPC_S_WRONG_KIND_OF_BINDING = 1701;
/// The binding handle is invalid.
public const int RPC_S_INVALID_BINDING = 1702;
/// There are no bindings.
public const int RPC_S_NO_BINDINGS = 1718;
/// The binding does not contain an entry name.
/// The binding does not contain any authentication information.
public const int RPC_S_BINDING_HAS_NO_AUTH = 1746;
/// The list of RPC servers available for the binding of auto handles has been exhausted.
/// The binding handles passed to a remote procedure call do not match.
/// There are no more bindings.
public const int RPC_S_NO_MORE_BINDINGS = 1806;
/// The binding handle does not contain all required information.
public const int RPC_S_BINDING_INCOMPLETE = 1819;
/// The directory service binding must be renegotiated due to a change in the server
/// The application binding data format is invalid.
/// Not able to bind to the source
public const int OLE_E_CANT_BINDTOSOURCE = (int)(0x8004000A - 0x100000000);
/// Moniker is not bindable
public const int MK_E_NOTBINDABLE = (int)(0x800401E8 - 0x100000000);
/// OLE service could not bind object
/// Client's supplied SSPI channel bindings were incorrect.
public const int SEC_E_BAD_BINDINGS = (int)(0x80090346 - 0x100000000);
NETBINDADD = 0x00000007,
NETBINDREMOVE = 0x00000008,
NETBINDENABLE = 0x00000009,
NETBINDDISABLE = 0x0000000A,
NETBINDCHANGE = 0x00000010,
NETBINDADD = &H7
NETBINDREMOVE = &H8
NETBINDENABLE = &H9
NETBINDDISABLE = &HA
NETBINDCHANGE = &H10
BindingFlags bindingFlags = BindingFlags.Instance | BindingFlags.NonPublic;
fieldInfo = typeof (System.ServiceProcess.ServiceBase).GetField ("statusHandle", bindingFlags);
BindingFlags.NonPublic | BindingFlags.Instance);
BindingFlags.GetField | BindingFlags.Instance | BindingFlags.NonPublic,
BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.SetField,