|
|
1
3
注意三者的相反顺序
|
|
|
2
2
正如Anton所说,问题在于传递给函数的参数。我昨天没有注意到这一点,但是CardType结构在GetCardID函数中通过指针传递,在GetCardStatus函数中通过值传递。在调用中,我还通过指向GetCardStatus的指针传递了CardType,通过指定Dependecy Walker中的确切函数名,强制P/Invoke框架定位正确的函数。 我通过将CardType定义为结构而不是类来解决这个问题,并通过引用将其传递给GetCardId函数。此外,CardType在传递给GetCardStatus函数时被封送为结构。除了Anton使用两种不同pData类型(CARD_INFO_1和CARD_INFO_2)的函数定义的技术之外,这项技术现在可以正常工作。以下是最终定义:
感谢你们为解决这个问题所做的贡献:-) |
|
|
3
1
问题是你在使用[Out],而你不应该使用任何东西
Out/In属性告诉CLR封送拆收器 立即的 变量将被封送。在字节[]的情况下,参数实际上什么也不做。它的一个子元素正在移动。
|
|
|
Mike Bruno · 访问模拟帐户的私钥 8 年前 |
|
John · 通过P/Invoke使用回调和堆对象的安全方法 9 年前 |
|
|
Residuum · 带有P/Invoke和指针的泛型 10 年前 |
|
|
hl3mukkel · 约束与使用SafeHandle的抽象类 10 年前 |