以下代码的java等效代码是什么?

Rak*_*yal 1 c java assembly jna equivalent

我正在使用JNA来调用user32.dll和kernel32.dll的方法.它现在工作正常.我遇到了一些问题,我知道我必须调用这个方法.

void SendCommandToConsole( char* Cmd )
{
    DWORD dwCall = 0x004C1030;
    __asm
    {
        push Cmd;
        push 0;
        call dwCall;
    }
}

SendCommandToConsole ( "rp 2000" );
Run Code Online (Sandbox Code Playgroud)

但我甚至没有得到它是什么?__asm在做什么?

如果我使用的标签不正确,请添加适当的标签.:)

根据建议编辑添加的.Net和C#标记.上面的代码是在C#或.NET中,可能是具有该语言知识的人可以告诉我们它实际上是什么,以及我们如何在java中执行此操作.

Gal*_*llo 5

只是为了展示引擎盖下发生的事情:

你的来电:

SendCommandToConsole("rp 2000");

使用类型为(char*Cmd)的参数调用函数(SendCommandToConsole).

在上面的例子中,(char*Cmd)等于"rp 2000"的字符串(sic).

现在发生的事情是,更高级别的语言(在您的示例中为Java)需要告诉低级语言如何用他们理解的语言解释他们的指令.

因此,上面的例子("我想用"rp 2000"的字符串参数调用函数"SendCommandToConsole")意味着我们需要与低级语言进行通信:

  • "高傲要求我们执行命令"."哦,是啊,哪一个?"
  • "他们告诉我'SendCommandToConsole'"
  • "哦,那个家伙?他住在地址'0x004C1030'这里."
  • "哦,你知道这个家伙的地址吗?你能提供这个高级版想要提供的套餐吗?"
  • "当然可以,但他只接受特定顺序的包裹,而且只接受某种类型的包裹."
  • "没问题,我的清单就在这里......让我们看看它是否符合这个家伙的要求."

"首先,那个地址的家伙只想知道两件事情,他们必须遵守:

  • 你想让我做什么
  • 我将结果报告给谁?"

"好的,这很容易"

我会断言我希望他做什么:

  • "CMD"
  • 现在我要断言我希望他将结果报告给:"没有人(0)"

好吧,我会打电话给你......你现在可以继续你的一天.

(因为它是一个"无效"的返回,这意味着你不关心交易的结果)