大家好,请问有谁知道怎么通过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#