Trying to Interop a functionality from the Outside In API from Oracle.
Have the following function:
From the header files I reduced the parameters to:
Going through the header files, the example programs, and the documentation I found:
1. That pSpec could be a pointer to a buffer or NULL, so I set it to a IntPtr.Zero (documentation) .
2. That dwFlags and dwReserved according to the documentation "Must be set by the developer to 0".
3. That pCallbackFunc can be set to NULL if I don't want to handle callbacks.
6. That the last two are based on structs that I wrote C# wrappers for using the [StructLayout(La youtKind.Sequen tial)]. Then instatiated an instance and generated the parameters by first creating a IntPtr with Marshal.AllocHG lobal(Marshal.S izeOf(instance) ), then getting the address value which is passed as a uint for dwCallbackData and a IntPtr for phExport.
The final parameter list is as follows:
phDoc as a IntPtr which was loaded with an address by the DAOpenDocument function called before
dwOutputId as uint set to 1535 which represents FI_JPEGFIF
dwSpecType as int set to 2 which represents IOTYPE_ANSIPATH
pSpec as an IntPtr.Zero where the output will be written
dwFlags as uint set to 0 as directed
dwReserved as uint set to 0 as directed
pCallbackFunc as IntPtr set to NULL as I will handle results
dwCallBackDate as uint the address of a buffer for a struct
phExport as IntPtr to another struct buffer
still get an undefined error from the API. Meaning that the call returns a 961 which is not defined in any of the header files. In the past I have gotten this when my choice of parameter types are incorrect.
Jim
Have the following function:
Code:
SCCERR EXOpenExport { VTHDOC hDoc, VTDWORD dwOutputId, VTDWORD dwSpecType, VTLPVOID pSpec, VTDWORD dwFlags, VTSYSPARAM dwReserved, VTLPVOID pCallbackFunc, VTSYSPARAM dwCallbackData, VTLPHEXPORT phExport);
Code:
typedef VTSYSPARAM VTHDOC, VTLPHDOC * typedef DWORD_PTR VTSYSPARAM typedef unsigned long DWORD_PTR typedef unsigned long VTDWORD typedef VTVOID* VTLPVOID #define VTVOID void typedef VTHDOC VTHEXPORT, *VTLPEXPORT These are for 32 bit windows
1. That pSpec could be a pointer to a buffer or NULL, so I set it to a IntPtr.Zero (documentation) .
2. That dwFlags and dwReserved according to the documentation "Must be set by the developer to 0".
3. That pCallbackFunc can be set to NULL if I don't want to handle callbacks.
6. That the last two are based on structs that I wrote C# wrappers for using the [StructLayout(La youtKind.Sequen tial)]. Then instatiated an instance and generated the parameters by first creating a IntPtr with Marshal.AllocHG lobal(Marshal.S izeOf(instance) ), then getting the address value which is passed as a uint for dwCallbackData and a IntPtr for phExport.
The final parameter list is as follows:
phDoc as a IntPtr which was loaded with an address by the DAOpenDocument function called before
dwOutputId as uint set to 1535 which represents FI_JPEGFIF
dwSpecType as int set to 2 which represents IOTYPE_ANSIPATH
pSpec as an IntPtr.Zero where the output will be written
dwFlags as uint set to 0 as directed
dwReserved as uint set to 0 as directed
pCallbackFunc as IntPtr set to NULL as I will handle results
dwCallBackDate as uint the address of a buffer for a struct
phExport as IntPtr to another struct buffer
still get an undefined error from the API. Meaning that the call returns a 961 which is not defined in any of the header files. In the past I have gotten this when my choice of parameter types are incorrect.
Jim