簡體   English   中英

什么是C#等同於C ++句柄

[英]What is C# equivalent to C++ Handle

嗨,我需要幫助來了解什么等效於c#中的c ++句柄。 我需要調用此dll,並且提供的方法使用的是c ++,如下所示

HANDLE hCTAPI;
hCTAPI = ctOpen(NULL, NULL, NULL, 0);

if (hCTAPI == NULL)
    dwStatus = GetLastError();    // get error
else {
    ctTagWrite(hCTAPI, "SP123", "1.23");
    ctClose(hCTAPI);
}
// example of open for remote TCP/IP connection.
hCTAPI = ctOpen("203.19.130.2", "ENGINEER", "user", 0);

在我的C#代碼中:

[DllImport(@"C:\Users\Admin\source\repos\WindowsFormsApp2\WindowsFormsApp2\dll\CtApi.dll")]
private static extern IntPtr ctOpen(string a, string b, string c, int d);

private void button1_Click(object sender, EventArgs e)
{
    IntPtr ptrObj = Marshal.AllocHGlobal(4);
    ptrObj = ctOpen("192.168.1.192", "Engineer", "00", 0);  
}

API應該返回一些東西。 當我為ptrObj調試值時始終為0

API參考

ctOpen(sComputer,sUser,sPassword,nMode)

我猜目標計算機已拒絕您的連接。

  1. 嘗試使用GetLastError函數來檢查錯誤。

  2. 嘗試使用Process Monitor來查看您的應用程序嘗試連接到的內容。 按進程名稱過濾,然后監視TCP *事件,您應該看到目標IP和端口。

P / S:據我從CTAPI文檔可以看出,您使用的PInvoke簽名是正確的,因此這可能是CT安裝/配置的問題。

HANDLE是一個無符號整數,表示指向資源的指針。

uint hCTAPI = ctOpen(NULL, NULL, NULL, 0);

應該為您工作。 它為您提供了指向您在案例中實例化的資源的指針。 當您要調用此資源的方法時,這些方法可能會要求hCTAPI是簽名中的第一個(或最后一個)參數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM