当前位置:编程学习 > C#/ASP.NET >>

大家好,请问有谁知道怎么通过p/invoke返回的指针访问它的公共成员么?急着用谢谢了

大家好,请问有谁知道怎么通过p/invoke返回的指针访问它的公共成员么?
比如下面的代码,先p/invoke了CertCreateCertificateContext方法得到了指针,后边需要用到这个对象的公共成员,怎么才能访问呢:

[DllImport("Crypt32.dll", SetLastError = true)]
public static extern IntPtr CertCreateCertificateContext(
    Int32 dwCertEncodingType,
    Byte[] pbCertEncoded,
    Int32 cbCertEncoded
}

IntPtr pCertContext = CertCreateCertificateContext 
        (X509_ASN_ENCODING|PKCS_7_ASN_ENCODING, bCert, dwCertLength); 
TCHAR szName[1000]; 
DWORD dwLen = sizeof (TCHAR) * 1000, dwOut; 
PCERT_INFO pCertInfo = NULL; 
pCertInfo = pCertContext->pCertInfo; 

// get the subject details for the cert 
CertNameToStr (pCertContext->dwCertEncodingType, &pCertInfo-..... //这里需要用到pCertContext->dwCertEncodingType,怎么得到????????????????

先谢谢了。
--------------------编程问答-------------------- 你的pCertContext应该是一个结构或是一个类,所以从C++里返回该对象的指针后,你需要将该IntPtr转化为结构或类,使用C# 的Marshal.PtrToStructure(IntPtr,Object)或Marshal.PtrToStructure(IntPtr,Type)函数可以将该指针转换为该类型对象,然后就可以在C#里使用了!(当然你需要在C#里将该类或结构从C++转化为C#格式,具体看平台调用相关知识)
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,