双11狂欢大促

盲盒赢 定制羽绒服

开启惊喜盲盒,抽取你的专属好礼

— 惊喜奖品抢先看 —

EvtOpenSession函数求大神分析?

PCCYC PCCYC 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
原型:

EVT_HANDLE WINAPI EvtOpenSession(
_In_ EVT_LOGIN_CLASS LoginClass,
_In_ PVOID Login,
_In_ DWORD Timeout,
_In_ DWORD Flags
);

第二个参数官方是这样说的:
Login [in]
A EVT_RPC_LOGIN structure that identifies the remote computer that you want to connect to, the user's credentials, and the type of authentication to use when connecting.

关于这个LOGIN结构体是:

typedef struct _EVT_RPC_LOGIN {
LPWSTR Server;
LPWSTR User;
LPWSTR Domain;
LPWSTR Password;
DWORD Flags;
} EVT_RPC_LOGIN;


很奇怪,为什么第二个参数不直接_EVT_RPC_LOGIN Login,而用了PVOID类型?小弟尝试在C#中用了多种方法想实现这个函数均得不到正确的句柄,我可以确定就是第二个结构体没彻底搞正确 ,有无高手帮我猜测下在C#中怎么解决这个问题呢?谢谢

小弟C#是这样定义的:

[DllImport("Wevtapi.dll", CharSet = CharSet.Unicode)]
public static extern IntPtr EvtOpenSession(
int LoginClass_EvtRpcLogin_1, //EvtRpcLogin 1
IntPtr Login, //改成 _EVT_RPC_LOGIN 也不行
int Timeout, //Reserved. Must be zero.
int Flags //Reserved. Must be zero.
);
public struct _EVT_RPC_LOGIN { //改成class也不行
public string Server;
public string User;
public string Domain;
public string Password;
public int Flags; // _EVT_RPC_LOGIN_FLAGS
}

问题原因找到了还可以多给分,非常感谢。
...全文
评论 1
收藏 已收藏
分享
返回顶部
PCCYC
C# 111,129 成员 642,540 内容