关于COM的一些小疑点

关于COM的一些小问题
第一个问题是这样
比如我有个IA接口,我要从中获得某个文件内容的项数
HRESLUT GetCount(LONG *nCount);C++好说,请问这个在C#怎么调用?C#据说不是没指针么?

第二个问题是这样:
我有两个组件IA和IB,我在IA接口中读入一个文件,其文件句柄是IA的class CA的成员变量m_hFile;
我在IB中想得到这个文件句柄去处理,而接口只能是 Run(IA* pA)(只能是获得IA接口,请问通过IA接口怎么获得文件的句柄)?

------解决方案--------------------
C/C++ code

long nCount = 0;
HRESULT hr = GetCount(&nCount);
if (SUCCEEDED(hr))
{
}
else
{
nCount = 0;
}

------解决方案--------------------
第一个问题是这样
控件在使用时,都需要wrapper一下,C#里的接口或许是这样的
long GetCount();

第二个问题是这样:
传句柄的话,就用long
------解决方案--------------------
1.其实跟上面别人说的用法差不多了
2.你可以在IA中提供一个方法来返回那个文件句柄,直接访问看来是不行的
3.你可以看看句柄的定义,然后再确定用什么类型的值来传递转换
------解决方案--------------------
1.委托调用。
2.可以传递句柄。
3.接口其实某种意义上也是句柄,你完全可以通过得到句柄然后强制类型转换后去调用。
4.转点可用分也就罢了,至少给我留个几百分发帖吧?
5.请不要帮我结贴。
------解决方案--------------------
1问题 使用 [out] VARIANT* 作为参数

2.成员m_hFile 如果是private的 那么在IB中使用IA也没办法读取,除非在IA中将m_hFile改public 或者使用
一个 函数封装m_hFile,使外界可访问