private byte[] GetPostData(BINDINFO BindInfo)
        {
            if (BindInfo.dwBindVerb != BINDVERB.BINDVERB_POST) // TODO figure out PUT
            return new byte[0];
              byte[] result = new byte[0];
              if (BindInfo.stgmedData.enumType == TYMED.TYMED_HGLOBAL)
              {
            UInt32 length = BindInfo.cbStgmedData;
            result = new byte[length];

            Marshal.Copy (BindInfo.stgmedData.u, result, 0, (int) length);
            if (BindInfo.stgmedData.pUnkForRelease == null)
              Marshal.FreeHGlobal (BindInfo.stgmedData.u);
              }
              return result;
        }
 private BINDINFO GetBindInfo(IInternetBindInfo pOIBindInfo)
 {
     BINDINFO BindInfo = new BINDINFO();
       BindInfo.cbSize = (UInt32) Marshal.SizeOf (typeof (BINDINFO));
       UInt32 AsyncFlag;
       pOIBindInfo.GetBindInfo (out AsyncFlag, ref BindInfo);
       return BindInfo;
 }