[英].NET COM Interop Method Signature
您將使用什么互操作簽名用於以下COM方法? 我特別感興趣的是最后兩個參數,以及是否嘗試使用MarshalAs
和SizeParamIndex
。
HRESULT GetOutputSetting(
DWORD dwOutputNum,
LPCWSTR pszName,
WMT_ATTR_DATATYPE* pType,
BYTE* pValue,
WORD* pcbLength
);
文件說明:
pValue [out]指向包含該值的字節緩沖區的指針。 傳遞NULL以檢索所需緩沖區的長度。
pcbLength [in,out]輸入時,指向包含pValue長度的變量的指針。 在輸出時,變量包含使用的pValue中的字節數。
您可以嘗試PInvoke簽名工具包 。 在執行平台互操作時正確編組是非常有用的。 它很可能不會涵蓋您的特定問題,但您可能會找到一個類似的問題,為您提供所尋求的信息。
我會使用SizeParamIndex,因為您的場景正是此功能的用途:指定變量大小的數組的長度。
所以參數的最后一個是C#簽名:
byte[] pValue,
ref ushort pcbLength
在沒有ref的情況下傳遞byte-Array,因為該數組對應於本機代碼中的指針。 如果為pValue傳遞NULL(或在C#中為null),以便檢索所需緩沖區的大小。 這也意味着調用者必須分配字節數組。 參數pcbLength由ref傳遞,因為它用作輸入/輸出參數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.