M
Max Akbar
Hi all,
I am trying to enumerate the elements of a Compound storage file and I get an error (System.NullReferenceException) when I execute the "EnumElements" of the "UCOMIStorage". I can open the Compound file just fine just can't enumerate it's elements. Am I declaring something incorrectly?
Sample Code:
// Declaration of UCOMIStorage
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown), Guid("0000000b-0000-0000-C000-000000000046")]
interface UCOMIStorage
{
void CreateStream(
[MarshalAs(UnmanagedType.LPWStr)] string wcsName,
int grfMode, //Access mode for the new stream
int reserved1, //Reserved; must be zero
int reserved2, //Reserved; must be zero
out UCOMIStream stream //Pointer to output variable
);
void OpenStream(
[MarshalAs(UnmanagedType.LPWStr)] string wcsName,
IntPtr reserved1, //Reserved; must be NULL
int grfMode, //Access mode for the new stream
int reserved2, //Reserved; must be zero
out UCOMIStream stream //Pointer to output variable
);
void EnumElements(
int reserved1,
IntPtr reserved2,
int reserved3,
out IEnumSTATSTG ppenum);
}
// Declaration of IEnumSTATSTG
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown), Guid("0000000d-0000-0000-C000-000000000046")]
interface IEnumSTATSTG
{
void Next(Int64 celt, out STATSTG rgelt, out Int64 pceltFetched);
}
I am trying to enumerate the elements of a Compound storage file and I get an error (System.NullReferenceException) when I execute the "EnumElements" of the "UCOMIStorage". I can open the Compound file just fine just can't enumerate it's elements. Am I declaring something incorrectly?
Sample Code:
// Declaration of UCOMIStorage
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown), Guid("0000000b-0000-0000-C000-000000000046")]
interface UCOMIStorage
{
void CreateStream(
[MarshalAs(UnmanagedType.LPWStr)] string wcsName,
int grfMode, //Access mode for the new stream
int reserved1, //Reserved; must be zero
int reserved2, //Reserved; must be zero
out UCOMIStream stream //Pointer to output variable
);
void OpenStream(
[MarshalAs(UnmanagedType.LPWStr)] string wcsName,
IntPtr reserved1, //Reserved; must be NULL
int grfMode, //Access mode for the new stream
int reserved2, //Reserved; must be zero
out UCOMIStream stream //Pointer to output variable
);
void EnumElements(
int reserved1,
IntPtr reserved2,
int reserved3,
out IEnumSTATSTG ppenum);
}
// Declaration of IEnumSTATSTG
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown), Guid("0000000d-0000-0000-C000-000000000046")]
interface IEnumSTATSTG
{
void Next(Int64 celt, out STATSTG rgelt, out Int64 pceltFetched);
}