We are porting our 32 bit (ASP) application to 64 bit (ASP.NET). Current we facing problem on sending Image (binary) Data from ASPX to Com DLL.
Below is ASPX and Com Code.
ASPX Code:
Dim MyStream As System.IO.Stream
Dim FileInByteArr As Byte() = New Byte(FileLen) {}
'Initialize the stream.
MyStream = PostedFile.InputStream
' Read the file into the byte array.
MyStream.Read(FileInByteArr, 0, FileLen)
objsign = CreateObject("ImgCom.Image")
retval = objsign.SaveImage(xmldoc.xml, FileInByteArr, FileLen, ErrMsg1)
if retval = 0 Then
Errmsg = 0
else
Errmsg = ErrMsg1
end if
Com Code:
SaveImage( VARIANT pv_request,
VARIANT *pv_binary,
VARIANT v_lImageSize,
VARIANT *p_err_msg,
VARIANT *p_retval
)
{
SAFEARRAY* l_img_dtl_array;
unsigned char *l_ptr_temp;
unsigned char *l_image_str;
int l_image_len = 0;
l_img_dtl_array = pv_binary->parray; // on 32 bit its working fine getting data correct but on 64bit window getting Cry junk data
CM_show_debug("\n l_img_dtl_array : %d ", l_img_dtl_array);
l_image_len = l_img_dtl_array->rgsabound[0].cElements;
CM_show_debug("\n l_image_len : %d ", l_image_len);
memset(l_image_str,0,sizeof(l_image_str));
l_ptr_temp = static_cast<BYTE*> (l_img_dtl_array->pvData); // length goes in minus on 64 bit windows ...
CM_show_debug("\n l_ptr_temp : %d ", l_ptr_temp);
memcpy(l_image_str,l_ptr_temp,l_image_len);
// opration to save in Database
}
above code is working fine on 32 bit system but on 64 bit it fails getting junk Data.
on console output getting as mention below.
******************* Windows 2003 (32 bit) Working ******************
l_img_dtl_array : 922480
l_image_len : 7429
l_ptr_temp : 1016856
******************* Windows 2008 (64 Bit) ******************
l_img_dtl_array : 4829760
l_image_len : 1
l_ptr_temp : -2013265840
Any kind of help or articles regarding this would be of great help.