should be not a bigger problem in a 32 bit application.
But what is in a 64 bit application?
A dword is always 32 bit, but the IntPtr() is 64 bit, so this code would not work, and thanks to the cast the compiler will not complain.
But maybe I'm totally wrong with my assumption....
You're absolutely right. This will not work.
In general you should avoid all _CAST operations in your code, unless you really know what you are doing.
If you look at the windows SDK header files then this field in the editStream structure is declared as a DWORD_PTR:
typedef DWORD (CALLBACK *EDITSTREAMCALLBACK)(DWORD_PTR dwCookie, LPBYTE pbBuff, LONG cb, LONG *pcb);
typedef struct _editstream
DWORD_PTR dwCookie; // User value passed to callback as first parameter
DWORD dwError; // Last error
The type DWORD_PTR has a different size depending on the compilation options:
in 32 bits mode:
typedef unsigned long DWORD_PTR, *PDWORD_PTR;
in 64 bits mode:
typedef unsigned __int64 DWORD_PTR, *PDWORD_PTR;
XSharp Development Team
Just to add a bit, I think (without investigating this too much) the whole VOSDK makes so many assumptions about being run in 32bit, making it practically too difficult to run it in AnyCPU/x64, so most likely this is not really an issue in bBrowser either, as it is using the VOSDK, so also has to run in 32bit mode. But, yeah, as a general practice, this is not good.