From 4f05a57abc4cd37d1d180d03ec5248aea12f66a9 Mon Sep 17 00:00:00 2001 From: ljc545w Date: Mon, 13 Jun 2022 12:58:56 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E9=83=A8=E5=88=86=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CWeChatRobot/SendArticle.cpp | 10 +- CWeChatRobot/SendArticle.h | 2 +- CWeChatRobot/SendAtText.cpp | 9 +- CWeChatRobot/SendAtText.h | 4 +- CWeChatRobot/WeChatRobot.cpp | 12 +- CWeChatRobot/WeChatRobot.h | 4 +- CWeChatRobot/WeChatRobotCOM.idl | 4 +- CWeChatRobot/WeChatRobotCOM_i.h | 12 +- CWeChatRobot/WeChatRobotCOM_p.c | 1227 +++++++++++---------- DWeChatRobot/DWeChatRobot.vcxproj | 4 + DWeChatRobot/DWeChatRobot.vcxproj.filters | 18 + DWeChatRobot/DeleteUser.cpp | 32 + DWeChatRobot/DeleteUser.h | 3 + DWeChatRobot/SendAppMsg.cpp | 51 + DWeChatRobot/SendAppMsg.h | 3 + DWeChatRobot/SendArticle.cpp | 12 +- DWeChatRobot/SendArticle.h | 2 +- DWeChatRobot/SendAtText.cpp | 16 +- DWeChatRobot/SendAtText.h | 2 +- DWeChatRobot/pch.h | 2 + Python/wxRobot.py | 23 +- Release/CWeChatRobot.exe | Bin 98304 -> 98304 bytes Release/DWeChatRobot.dll | Bin 60416 -> 62464 bytes 23 files changed, 809 insertions(+), 643 deletions(-) create mode 100644 DWeChatRobot/DeleteUser.cpp create mode 100644 DWeChatRobot/DeleteUser.h create mode 100644 DWeChatRobot/SendAppMsg.cpp create mode 100644 DWeChatRobot/SendAppMsg.h diff --git a/CWeChatRobot/SendArticle.cpp b/CWeChatRobot/SendArticle.cpp index 7eda750..9a8c3c9 100644 --- a/CWeChatRobot/SendArticle.cpp +++ b/CWeChatRobot/SendArticle.cpp @@ -5,9 +5,10 @@ struct SendArticleStruct { DWORD title; DWORD abstract; DWORD url; + DWORD imgpath; }; -BOOL SendArticle(wchar_t* wxid, wchar_t* title, wchar_t* abstract, wchar_t* url) { +BOOL SendArticle(wchar_t* wxid, wchar_t* title, wchar_t* abstract, wchar_t* url, wchar_t* imgpath) { if (!hProcess) return 1; DWORD WeChatRobotBase = GetWeChatRobotBase(); @@ -20,8 +21,9 @@ BOOL SendArticle(wchar_t* wxid, wchar_t* title, wchar_t* abstract, wchar_t* url) LPVOID titleaddr = VirtualAllocEx(hProcess, NULL, 1, MEM_COMMIT, PAGE_READWRITE); LPVOID abstractaddr = VirtualAllocEx(hProcess, NULL, 1, MEM_COMMIT, PAGE_READWRITE); LPVOID urladdr = VirtualAllocEx(hProcess, NULL, 1, MEM_COMMIT, PAGE_READWRITE); + LPVOID imgaddr = VirtualAllocEx(hProcess, NULL, 1, MEM_COMMIT, PAGE_READWRITE); SendArticleStruct* paramAndFunc = (SendArticleStruct*)::VirtualAllocEx(hProcess, 0, sizeof(SendArticleStruct), MEM_COMMIT, PAGE_READWRITE); - if (!wxidaddr || !titleaddr || !abstractaddr || !urladdr || + if (!wxidaddr || !titleaddr || !abstractaddr || !urladdr || !imgaddr || !paramAndFunc || !WeChatRobotBase) { return 1; @@ -35,10 +37,13 @@ BOOL SendArticle(wchar_t* wxid, wchar_t* title, wchar_t* abstract, wchar_t* url) WriteProcessMemory(hProcess, abstractaddr, abstract, wcslen(abstract) * 2 + 2, &dwWriteSize); if (urladdr) WriteProcessMemory(hProcess, urladdr, url, wcslen(url) * 2 + 2, &dwWriteSize); + if (imgpath && imgaddr) + WriteProcessMemory(hProcess, imgaddr, imgpath, wcslen(imgpath) * 2 + 2, &dwWriteSize); params.wxid = (DWORD)wxidaddr; params.title = (DWORD)titleaddr; params.abstract = (DWORD)abstractaddr; params.url = (DWORD)urladdr; + params.imgpath = imgpath ? (DWORD)imgaddr : 0; if (paramAndFunc) WriteProcessMemory(hProcess, paramAndFunc, ¶ms, sizeof(params), &dwId); @@ -51,6 +56,7 @@ BOOL SendArticle(wchar_t* wxid, wchar_t* title, wchar_t* abstract, wchar_t* url) VirtualFreeEx(hProcess, titleaddr, 0, MEM_RELEASE); VirtualFreeEx(hProcess, abstractaddr, 0, MEM_RELEASE); VirtualFreeEx(hProcess, urladdr, 0, MEM_RELEASE); + VirtualFreeEx(hProcess, imgaddr, 0, MEM_RELEASE); VirtualFreeEx(hProcess, paramAndFunc, 0, MEM_RELEASE); return 0; } \ No newline at end of file diff --git a/CWeChatRobot/SendArticle.h b/CWeChatRobot/SendArticle.h index 30ef949..02d3ba4 100644 --- a/CWeChatRobot/SendArticle.h +++ b/CWeChatRobot/SendArticle.h @@ -1,3 +1,3 @@ #pragma once #include -BOOL SendArticle(wchar_t* wxid, wchar_t* title, wchar_t* abstract, wchar_t* url); \ No newline at end of file +BOOL SendArticle(wchar_t* wxid, wchar_t* title, wchar_t* abstract, wchar_t* url, wchar_t* imgpath); \ No newline at end of file diff --git a/CWeChatRobot/SendAtText.cpp b/CWeChatRobot/SendAtText.cpp index ff7f701..bfa0ff9 100644 --- a/CWeChatRobot/SendAtText.cpp +++ b/CWeChatRobot/SendAtText.cpp @@ -6,9 +6,10 @@ struct SendAtTextStruct DWORD wxid; DWORD wxmsg; DWORD length; + DWORD AutoNickName; }; -int SendAtText(wchar_t* chatroomid, wchar_t* wxid, wchar_t* wxmsg) { +int SendAtText(wchar_t* chatroomid, wchar_t* wxid, wchar_t* wxmsg,BOOL AutoNickName) { if (!hProcess) return 1; DWORD WeChatRobotBase = GetWeChatRobotBase(); @@ -38,6 +39,7 @@ int SendAtText(wchar_t* chatroomid, wchar_t* wxid, wchar_t* wxmsg) { params.wxid = (DWORD)wxidaddr; params.wxmsg = (DWORD)wxmsgaddr; params.length = 1; + params.AutoNickName = AutoNickName; if (paramAndFunc) { if (!::WriteProcessMemory(hProcess, paramAndFunc, ¶ms, sizeof(SendAtTextStruct), &dwTId)) @@ -65,7 +67,7 @@ int SendAtText(wchar_t* chatroomid, wchar_t* wxid, wchar_t* wxmsg) { return 0; } -BOOL SendAtText(wchar_t* chatroomid, SAFEARRAY* psaValue, wchar_t* wxmsg) { +BOOL SendAtText(wchar_t* chatroomid, SAFEARRAY* psaValue, wchar_t* wxmsg,BOOL AutoNickName) { if (!hProcess) return 1; VARIANT rgvar; @@ -77,7 +79,7 @@ BOOL SendAtText(wchar_t* chatroomid, SAFEARRAY* psaValue, wchar_t* wxmsg) { VariantInit(&rgvar); long pIndex = 0; hr = SafeArrayGetElement(psaValue, &pIndex, &rgvar); - return SendAtText(chatroomid, rgvar.bstrVal, wxmsg); + return SendAtText(chatroomid, rgvar.bstrVal, wxmsg,AutoNickName); } vector wxidptrs; DWORD dwWriteSize = 0; @@ -113,6 +115,7 @@ BOOL SendAtText(wchar_t* chatroomid, SAFEARRAY* psaValue, wchar_t* wxmsg) { params.wxid = (DWORD)wxidptrsaddr; params.wxmsg = (DWORD)wxmsgaddr; params.length = wxidptrs.size(); + params.AutoNickName = AutoNickName; if (paramAndFunc) { WriteProcessMemory(hProcess, paramAndFunc, ¶ms, sizeof(SendAtTextStruct), &dwTId); } diff --git a/CWeChatRobot/SendAtText.h b/CWeChatRobot/SendAtText.h index ad48227..88b14e4 100644 --- a/CWeChatRobot/SendAtText.h +++ b/CWeChatRobot/SendAtText.h @@ -1,4 +1,4 @@ #pragma once #include -int SendAtText(wchar_t* chatroomid, wchar_t* wxid, wchar_t* wxmsg); -int SendAtText(wchar_t* chatroomid, SAFEARRAY* wxid, wchar_t* wxmsg); \ No newline at end of file +int SendAtText(wchar_t* chatroomid, wchar_t* wxid, wchar_t* wxmsg,BOOL AutoNickName); +int SendAtText(wchar_t* chatroomid, SAFEARRAY* wxid, wchar_t* wxmsg,BOOL AutoNickName); \ No newline at end of file diff --git a/CWeChatRobot/WeChatRobot.cpp b/CWeChatRobot/WeChatRobot.cpp index c1c5399..52e16cc 100644 --- a/CWeChatRobot/WeChatRobot.cpp +++ b/CWeChatRobot/WeChatRobot.cpp @@ -37,14 +37,14 @@ STDMETHODIMP CWeChatRobot::CSendText(BSTR wxid, BSTR wxmsg, int* __result) { * 参数3:文本消息内容 * 参数4:预返回的值,调用时无需提供 */ -STDMETHODIMP CWeChatRobot::CSendAtText(BSTR chatroomid, VARIANT* wxid, BSTR wxmsg, int* __result) { +STDMETHODIMP CWeChatRobot::CSendAtText(BSTR chatroomid, VARIANT* wxid, BSTR wxmsg, BOOL AutoNickName, int* __result) { *__result = 0; if (wxid->vt == VT_BSTR) { - *__result = SendAtText(chatroomid,wxid->bstrVal, wxmsg); + *__result = SendAtText(chatroomid, wxid->bstrVal, wxmsg, AutoNickName); } - else if(wxid->vt == (VT_ARRAY | VT_VARIANT)) { + else if (wxid->vt == (VT_ARRAY | VT_VARIANT)) { SAFEARRAY* psaValue = wxid->parray; - *__result = SendAtText(chatroomid, psaValue, wxmsg); + *__result = SendAtText(chatroomid, psaValue, wxmsg, AutoNickName); } return S_OK; } @@ -76,8 +76,8 @@ STDMETHODIMP CWeChatRobot::CSendFile(BSTR wxid, BSTR filepath, int* __result) { * 参数4:文章链接 * 参数5:预返回的值,调用时无需提供 */ -STDMETHODIMP CWeChatRobot::CSendArticle(BSTR wxid, BSTR title,BSTR abstract,BSTR url, int* __result) { - *__result = SendArticle(wxid, title,abstract,url); +STDMETHODIMP CWeChatRobot::CSendArticle(BSTR wxid, BSTR title,BSTR abstract,BSTR url, BSTR imgpath, int* __result) { + *__result = SendArticle(wxid, title,abstract,url,imgpath); return S_OK; } diff --git a/CWeChatRobot/WeChatRobot.h b/CWeChatRobot/WeChatRobot.h index 9c049ec..818e134 100644 --- a/CWeChatRobot/WeChatRobot.h +++ b/CWeChatRobot/WeChatRobot.h @@ -56,9 +56,9 @@ public: STDMETHODIMP CSendImage(BSTR wxid, BSTR imagepath, int* __result); STDMETHODIMP CSendText(BSTR wxid, BSTR wxmsg, int* __result); STDMETHODIMP CSendFile(BSTR wxid, BSTR filepath, int* __result); - STDMETHODIMP CSendArticle(BSTR wxid, BSTR title, BSTR abstract, BSTR url, int* __result); + STDMETHODIMP CSendArticle(BSTR wxid, BSTR title, BSTR abstract, BSTR url, BSTR imgpath, int* __result); STDMETHODIMP CSendCard(BSTR receiver, BSTR sharedwxid, BSTR nickname, int* __result); - STDMETHODIMP CSendAtText(BSTR chatroomid, VARIANT* wxid, BSTR wxmsg, int* __result); + STDMETHODIMP CSendAtText(BSTR chatroomid, VARIANT* wxid, BSTR wxmsg, BOOL AutoNickName, int* __result); STDMETHODIMP CGetFriendList(VARIANT* __result); STDMETHODIMP CGetFriendListString(BSTR* __result); STDMETHODIMP CGetWxUserInfo(BSTR wxid, BSTR* __result); diff --git a/CWeChatRobot/WeChatRobotCOM.idl b/CWeChatRobot/WeChatRobotCOM.idl index 2f82156..df379fb 100644 --- a/CWeChatRobot/WeChatRobotCOM.idl +++ b/CWeChatRobot/WeChatRobotCOM.idl @@ -21,7 +21,7 @@ interface IWeChatRobot : IDispatch [id(3)] HRESULT CSendText([in] BSTR wxid, [in] BSTR wxmsg, [out, retval] int* __result); [id(4)] HRESULT CSendImage([in] BSTR wxid, [in] BSTR imagepath, [out, retval] int* __result); [id(5)] HRESULT CSendFile([in] BSTR wxid, [in] BSTR filepath, [out, retval] int* __result); - [id(6)] HRESULT CSendArticle([in] BSTR wxid, [in] BSTR title, [in] BSTR abstract, [in] BSTR url, [out, retval] int* __result); + [id(6)] HRESULT CSendArticle([in] BSTR wxid, [in] BSTR title, [in] BSTR abstract, [in] BSTR url, [in] BSTR imgpath, [out, retval] int* __result); [id(7)] HRESULT CSendCard([in] BSTR receiver, [in] BSTR sharedwxid, [in] BSTR nickname, [out, retval] int* __result); [id(8)] HRESULT CGetFriendList([out, retval] VARIANT* __result); [id(9)] HRESULT CGetFriendListString([out, retval] BSTR* __result); @@ -34,7 +34,7 @@ interface IWeChatRobot : IDispatch [id(16)] HRESULT CStartReceiveMessage([out, retval] int* __result); [id(17)] HRESULT CReceiveMessage([out, retval] VARIANT* __result); [id(18)] HRESULT CStopReceiveMessage([out, retval] int* __result); - [id(19)] HRESULT CSendAtText([in] BSTR chatroomid, [in] VARIANT* wxid, [in] BSTR wxmsg, [out, retval] int* __result); + [id(19)] HRESULT CSendAtText([in] BSTR chatroomid, [in] VARIANT* wxid, [in] BSTR wxmsg, [in] BOOL AutoNickName, [out, retval] int* __result); [id(20)] HRESULT CGetChatRoomMembers([in] BSTR chatroomid, [out, retval] VARIANT* __result); [id(21)] HRESULT CGetDbHandles([out, retval] VARIANT* __result); [id(22)] HRESULT CExecuteSQL([in] DWORD DbHandle, [in] BSTR sql, [out, retval] VARIANT* __result); diff --git a/CWeChatRobot/WeChatRobotCOM_i.h b/CWeChatRobot/WeChatRobotCOM_i.h index ce40564..c64ba96 100644 --- a/CWeChatRobot/WeChatRobotCOM_i.h +++ b/CWeChatRobot/WeChatRobotCOM_i.h @@ -114,6 +114,7 @@ EXTERN_C const IID IID_IWeChatRobot; /* [in] */ BSTR title, /* [in] */ BSTR abstract, /* [in] */ BSTR url, + /* [in] */ BSTR imgpath, /* [retval][out] */ int *__result) = 0; virtual /* [id] */ HRESULT STDMETHODCALLTYPE CSendCard( @@ -161,6 +162,7 @@ EXTERN_C const IID IID_IWeChatRobot; /* [in] */ BSTR chatroomid, /* [in] */ VARIANT *wxid, /* [in] */ BSTR wxmsg, + /* [in] */ BOOL AutoNickName, /* [retval][out] */ int *__result) = 0; virtual /* [id] */ HRESULT STDMETHODCALLTYPE CGetChatRoomMembers( @@ -318,6 +320,7 @@ EXTERN_C const IID IID_IWeChatRobot; /* [in] */ BSTR title, /* [in] */ BSTR abstract, /* [in] */ BSTR url, + /* [in] */ BSTR imgpath, /* [retval][out] */ int *__result); /* [id] */ HRESULT ( STDMETHODCALLTYPE *CSendCard )( @@ -378,6 +381,7 @@ EXTERN_C const IID IID_IWeChatRobot; /* [in] */ BSTR chatroomid, /* [in] */ VARIANT *wxid, /* [in] */ BSTR wxmsg, + /* [in] */ BOOL AutoNickName, /* [retval][out] */ int *__result); /* [id] */ HRESULT ( STDMETHODCALLTYPE *CGetChatRoomMembers )( @@ -512,8 +516,8 @@ EXTERN_C const IID IID_IWeChatRobot; #define IWeChatRobot_CSendFile(This,wxid,filepath,__result) \ ( (This)->lpVtbl -> CSendFile(This,wxid,filepath,__result) ) -#define IWeChatRobot_CSendArticle(This,wxid,title,abstract,url,__result) \ - ( (This)->lpVtbl -> CSendArticle(This,wxid,title,abstract,url,__result) ) +#define IWeChatRobot_CSendArticle(This,wxid,title,abstract,url,imgpath,__result) \ + ( (This)->lpVtbl -> CSendArticle(This,wxid,title,abstract,url,imgpath,__result) ) #define IWeChatRobot_CSendCard(This,receiver,sharedwxid,nickname,__result) \ ( (This)->lpVtbl -> CSendCard(This,receiver,sharedwxid,nickname,__result) ) @@ -551,8 +555,8 @@ EXTERN_C const IID IID_IWeChatRobot; #define IWeChatRobot_CStopReceiveMessage(This,__result) \ ( (This)->lpVtbl -> CStopReceiveMessage(This,__result) ) -#define IWeChatRobot_CSendAtText(This,chatroomid,wxid,wxmsg,__result) \ - ( (This)->lpVtbl -> CSendAtText(This,chatroomid,wxid,wxmsg,__result) ) +#define IWeChatRobot_CSendAtText(This,chatroomid,wxid,wxmsg,AutoNickName,__result) \ + ( (This)->lpVtbl -> CSendAtText(This,chatroomid,wxid,wxmsg,AutoNickName,__result) ) #define IWeChatRobot_CGetChatRoomMembers(This,chatroomid,__result) \ ( (This)->lpVtbl -> CGetChatRoomMembers(This,chatroomid,__result) ) diff --git a/CWeChatRobot/WeChatRobotCOM_p.c b/CWeChatRobot/WeChatRobotCOM_p.c index e27f235..135b7f4 100644 --- a/CWeChatRobot/WeChatRobotCOM_p.c +++ b/CWeChatRobot/WeChatRobotCOM_p.c @@ -49,7 +49,7 @@ #include "WeChatRobotCOM_i.h" #define TYPE_FORMAT_STRING_SIZE 1239 -#define PROC_FORMAT_STRING_SIZE 1471 +#define PROC_FORMAT_STRING_SIZE 1483 #define EXPR_FORMAT_STRING_SIZE 1 #define TRANSMIT_AS_TABLE_SIZE 0 #define WIRE_MARSHAL_TABLE_SIZE 2 @@ -304,11 +304,11 @@ static const WeChatRobotCOM_MIDL_PROC_FORMAT_STRING WeChatRobotCOM__MIDL_ProcFor 0x6c, /* Old Flags: object, Oi2 */ /* 218 */ NdrFcLong( 0x0 ), /* 0 */ /* 222 */ NdrFcShort( 0xc ), /* 12 */ -/* 224 */ NdrFcShort( 0x1c ), /* x86 Stack size/offset = 28 */ +/* 224 */ NdrFcShort( 0x20 ), /* x86 Stack size/offset = 32 */ /* 226 */ NdrFcShort( 0x0 ), /* 0 */ /* 228 */ NdrFcShort( 0x24 ), /* 36 */ /* 230 */ 0x46, /* Oi2 Flags: clt must size, has return, has ext, */ - 0x6, /* 6 */ + 0x7, /* 7 */ /* 232 */ 0x8, /* 8 */ 0x45, /* Ext Flags: new corr desc, srv corr check, has range on conformance */ /* 234 */ NdrFcShort( 0x0 ), /* 0 */ @@ -339,1059 +339,1072 @@ static const WeChatRobotCOM_MIDL_PROC_FORMAT_STRING WeChatRobotCOM__MIDL_ProcFor /* 260 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */ /* 262 */ NdrFcShort( 0x2a ), /* Type Offset=42 */ - /* Parameter __result */ + /* Parameter imgpath */ -/* 264 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */ +/* 264 */ NdrFcShort( 0x8b ), /* Flags: must size, must free, in, by val, */ /* 266 */ NdrFcShort( 0x14 ), /* x86 Stack size/offset = 20 */ -/* 268 */ 0x8, /* FC_LONG */ - 0x0, /* 0 */ +/* 268 */ NdrFcShort( 0x2a ), /* Type Offset=42 */ - /* Return value */ + /* Parameter __result */ -/* 270 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ +/* 270 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */ /* 272 */ NdrFcShort( 0x18 ), /* x86 Stack size/offset = 24 */ /* 274 */ 0x8, /* FC_LONG */ 0x0, /* 0 */ + /* Return value */ + +/* 276 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ +/* 278 */ NdrFcShort( 0x1c ), /* x86 Stack size/offset = 28 */ +/* 280 */ 0x8, /* FC_LONG */ + 0x0, /* 0 */ + /* Procedure CSendCard */ -/* 276 */ 0x33, /* FC_AUTO_HANDLE */ +/* 282 */ 0x33, /* FC_AUTO_HANDLE */ 0x6c, /* Old Flags: object, Oi2 */ -/* 278 */ NdrFcLong( 0x0 ), /* 0 */ -/* 282 */ NdrFcShort( 0xd ), /* 13 */ -/* 284 */ NdrFcShort( 0x18 ), /* x86 Stack size/offset = 24 */ -/* 286 */ NdrFcShort( 0x0 ), /* 0 */ -/* 288 */ NdrFcShort( 0x24 ), /* 36 */ -/* 290 */ 0x46, /* Oi2 Flags: clt must size, has return, has ext, */ +/* 284 */ NdrFcLong( 0x0 ), /* 0 */ +/* 288 */ NdrFcShort( 0xd ), /* 13 */ +/* 290 */ NdrFcShort( 0x18 ), /* x86 Stack size/offset = 24 */ +/* 292 */ NdrFcShort( 0x0 ), /* 0 */ +/* 294 */ NdrFcShort( 0x24 ), /* 36 */ +/* 296 */ 0x46, /* Oi2 Flags: clt must size, has return, has ext, */ 0x5, /* 5 */ -/* 292 */ 0x8, /* 8 */ +/* 298 */ 0x8, /* 8 */ 0x45, /* Ext Flags: new corr desc, srv corr check, has range on conformance */ -/* 294 */ NdrFcShort( 0x0 ), /* 0 */ -/* 296 */ NdrFcShort( 0x1 ), /* 1 */ -/* 298 */ NdrFcShort( 0x0 ), /* 0 */ +/* 300 */ NdrFcShort( 0x0 ), /* 0 */ +/* 302 */ NdrFcShort( 0x1 ), /* 1 */ +/* 304 */ NdrFcShort( 0x0 ), /* 0 */ /* Parameter receiver */ -/* 300 */ NdrFcShort( 0x8b ), /* Flags: must size, must free, in, by val, */ -/* 302 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */ -/* 304 */ NdrFcShort( 0x2a ), /* Type Offset=42 */ - - /* Parameter sharedwxid */ - /* 306 */ NdrFcShort( 0x8b ), /* Flags: must size, must free, in, by val, */ -/* 308 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */ +/* 308 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */ /* 310 */ NdrFcShort( 0x2a ), /* Type Offset=42 */ - /* Parameter nickname */ + /* Parameter sharedwxid */ /* 312 */ NdrFcShort( 0x8b ), /* Flags: must size, must free, in, by val, */ -/* 314 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */ +/* 314 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */ /* 316 */ NdrFcShort( 0x2a ), /* Type Offset=42 */ + /* Parameter nickname */ + +/* 318 */ NdrFcShort( 0x8b ), /* Flags: must size, must free, in, by val, */ +/* 320 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */ +/* 322 */ NdrFcShort( 0x2a ), /* Type Offset=42 */ + /* Parameter __result */ -/* 318 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */ -/* 320 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */ -/* 322 */ 0x8, /* FC_LONG */ +/* 324 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */ +/* 326 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */ +/* 328 */ 0x8, /* FC_LONG */ 0x0, /* 0 */ /* Return value */ -/* 324 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ -/* 326 */ NdrFcShort( 0x14 ), /* x86 Stack size/offset = 20 */ -/* 328 */ 0x8, /* FC_LONG */ +/* 330 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ +/* 332 */ NdrFcShort( 0x14 ), /* x86 Stack size/offset = 20 */ +/* 334 */ 0x8, /* FC_LONG */ 0x0, /* 0 */ /* Procedure CGetFriendList */ -/* 330 */ 0x33, /* FC_AUTO_HANDLE */ +/* 336 */ 0x33, /* FC_AUTO_HANDLE */ 0x6c, /* Old Flags: object, Oi2 */ -/* 332 */ NdrFcLong( 0x0 ), /* 0 */ -/* 336 */ NdrFcShort( 0xe ), /* 14 */ -/* 338 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */ -/* 340 */ NdrFcShort( 0x0 ), /* 0 */ -/* 342 */ NdrFcShort( 0x8 ), /* 8 */ -/* 344 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */ +/* 338 */ NdrFcLong( 0x0 ), /* 0 */ +/* 342 */ NdrFcShort( 0xe ), /* 14 */ +/* 344 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */ +/* 346 */ NdrFcShort( 0x0 ), /* 0 */ +/* 348 */ NdrFcShort( 0x8 ), /* 8 */ +/* 350 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */ 0x2, /* 2 */ -/* 346 */ 0x8, /* 8 */ +/* 352 */ 0x8, /* 8 */ 0x43, /* Ext Flags: new corr desc, clt corr check, has range on conformance */ -/* 348 */ NdrFcShort( 0x1 ), /* 1 */ -/* 350 */ NdrFcShort( 0x0 ), /* 0 */ -/* 352 */ NdrFcShort( 0x0 ), /* 0 */ +/* 354 */ NdrFcShort( 0x1 ), /* 1 */ +/* 356 */ NdrFcShort( 0x0 ), /* 0 */ +/* 358 */ NdrFcShort( 0x0 ), /* 0 */ /* Parameter __result */ -/* 354 */ NdrFcShort( 0x4113 ), /* Flags: must size, must free, out, simple ref, srv alloc size=16 */ -/* 356 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */ -/* 358 */ NdrFcShort( 0x4ac ), /* Type Offset=1196 */ +/* 360 */ NdrFcShort( 0x4113 ), /* Flags: must size, must free, out, simple ref, srv alloc size=16 */ +/* 362 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */ +/* 364 */ NdrFcShort( 0x4ac ), /* Type Offset=1196 */ /* Return value */ -/* 360 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ -/* 362 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */ -/* 364 */ 0x8, /* FC_LONG */ +/* 366 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ +/* 368 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */ +/* 370 */ 0x8, /* FC_LONG */ 0x0, /* 0 */ /* Procedure CGetFriendListString */ -/* 366 */ 0x33, /* FC_AUTO_HANDLE */ +/* 372 */ 0x33, /* FC_AUTO_HANDLE */ 0x6c, /* Old Flags: object, Oi2 */ -/* 368 */ NdrFcLong( 0x0 ), /* 0 */ -/* 372 */ NdrFcShort( 0xf ), /* 15 */ -/* 374 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */ -/* 376 */ NdrFcShort( 0x0 ), /* 0 */ -/* 378 */ NdrFcShort( 0x8 ), /* 8 */ -/* 380 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */ +/* 374 */ NdrFcLong( 0x0 ), /* 0 */ +/* 378 */ NdrFcShort( 0xf ), /* 15 */ +/* 380 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */ +/* 382 */ NdrFcShort( 0x0 ), /* 0 */ +/* 384 */ NdrFcShort( 0x8 ), /* 8 */ +/* 386 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */ 0x2, /* 2 */ -/* 382 */ 0x8, /* 8 */ +/* 388 */ 0x8, /* 8 */ 0x43, /* Ext Flags: new corr desc, clt corr check, has range on conformance */ -/* 384 */ NdrFcShort( 0x1 ), /* 1 */ -/* 386 */ NdrFcShort( 0x0 ), /* 0 */ -/* 388 */ NdrFcShort( 0x0 ), /* 0 */ +/* 390 */ NdrFcShort( 0x1 ), /* 1 */ +/* 392 */ NdrFcShort( 0x0 ), /* 0 */ +/* 394 */ NdrFcShort( 0x0 ), /* 0 */ /* Parameter __result */ -/* 390 */ NdrFcShort( 0x2113 ), /* Flags: must size, must free, out, simple ref, srv alloc size=8 */ -/* 392 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */ -/* 394 */ NdrFcShort( 0x4ba ), /* Type Offset=1210 */ +/* 396 */ NdrFcShort( 0x2113 ), /* Flags: must size, must free, out, simple ref, srv alloc size=8 */ +/* 398 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */ +/* 400 */ NdrFcShort( 0x4ba ), /* Type Offset=1210 */ /* Return value */ -/* 396 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ -/* 398 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */ -/* 400 */ 0x8, /* FC_LONG */ +/* 402 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ +/* 404 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */ +/* 406 */ 0x8, /* FC_LONG */ 0x0, /* 0 */ /* Procedure CGetWxUserInfo */ -/* 402 */ 0x33, /* FC_AUTO_HANDLE */ +/* 408 */ 0x33, /* FC_AUTO_HANDLE */ 0x6c, /* Old Flags: object, Oi2 */ -/* 404 */ NdrFcLong( 0x0 ), /* 0 */ -/* 408 */ NdrFcShort( 0x10 ), /* 16 */ -/* 410 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */ -/* 412 */ NdrFcShort( 0x0 ), /* 0 */ -/* 414 */ NdrFcShort( 0x8 ), /* 8 */ -/* 416 */ 0x47, /* Oi2 Flags: srv must size, clt must size, has return, has ext, */ +/* 410 */ NdrFcLong( 0x0 ), /* 0 */ +/* 414 */ NdrFcShort( 0x10 ), /* 16 */ +/* 416 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */ +/* 418 */ NdrFcShort( 0x0 ), /* 0 */ +/* 420 */ NdrFcShort( 0x8 ), /* 8 */ +/* 422 */ 0x47, /* Oi2 Flags: srv must size, clt must size, has return, has ext, */ 0x3, /* 3 */ -/* 418 */ 0x8, /* 8 */ +/* 424 */ 0x8, /* 8 */ 0x47, /* Ext Flags: new corr desc, clt corr check, srv corr check, has range on conformance */ -/* 420 */ NdrFcShort( 0x1 ), /* 1 */ -/* 422 */ NdrFcShort( 0x1 ), /* 1 */ -/* 424 */ NdrFcShort( 0x0 ), /* 0 */ +/* 426 */ NdrFcShort( 0x1 ), /* 1 */ +/* 428 */ NdrFcShort( 0x1 ), /* 1 */ +/* 430 */ NdrFcShort( 0x0 ), /* 0 */ /* Parameter wxid */ -/* 426 */ NdrFcShort( 0x8b ), /* Flags: must size, must free, in, by val, */ -/* 428 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */ -/* 430 */ NdrFcShort( 0x2a ), /* Type Offset=42 */ +/* 432 */ NdrFcShort( 0x8b ), /* Flags: must size, must free, in, by val, */ +/* 434 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */ +/* 436 */ NdrFcShort( 0x2a ), /* Type Offset=42 */ /* Parameter __result */ -/* 432 */ NdrFcShort( 0x2113 ), /* Flags: must size, must free, out, simple ref, srv alloc size=8 */ -/* 434 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */ -/* 436 */ NdrFcShort( 0x4ba ), /* Type Offset=1210 */ +/* 438 */ NdrFcShort( 0x2113 ), /* Flags: must size, must free, out, simple ref, srv alloc size=8 */ +/* 440 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */ +/* 442 */ NdrFcShort( 0x4ba ), /* Type Offset=1210 */ /* Return value */ -/* 438 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ -/* 440 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */ -/* 442 */ 0x8, /* FC_LONG */ +/* 444 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ +/* 446 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */ +/* 448 */ 0x8, /* FC_LONG */ 0x0, /* 0 */ /* Procedure CGetSelfInfo */ -/* 444 */ 0x33, /* FC_AUTO_HANDLE */ +/* 450 */ 0x33, /* FC_AUTO_HANDLE */ 0x6c, /* Old Flags: object, Oi2 */ -/* 446 */ NdrFcLong( 0x0 ), /* 0 */ -/* 450 */ NdrFcShort( 0x11 ), /* 17 */ -/* 452 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */ -/* 454 */ NdrFcShort( 0x0 ), /* 0 */ -/* 456 */ NdrFcShort( 0x8 ), /* 8 */ -/* 458 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */ +/* 452 */ NdrFcLong( 0x0 ), /* 0 */ +/* 456 */ NdrFcShort( 0x11 ), /* 17 */ +/* 458 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */ +/* 460 */ NdrFcShort( 0x0 ), /* 0 */ +/* 462 */ NdrFcShort( 0x8 ), /* 8 */ +/* 464 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */ 0x2, /* 2 */ -/* 460 */ 0x8, /* 8 */ +/* 466 */ 0x8, /* 8 */ 0x43, /* Ext Flags: new corr desc, clt corr check, has range on conformance */ -/* 462 */ NdrFcShort( 0x1 ), /* 1 */ -/* 464 */ NdrFcShort( 0x0 ), /* 0 */ -/* 466 */ NdrFcShort( 0x0 ), /* 0 */ +/* 468 */ NdrFcShort( 0x1 ), /* 1 */ +/* 470 */ NdrFcShort( 0x0 ), /* 0 */ +/* 472 */ NdrFcShort( 0x0 ), /* 0 */ /* Parameter __result */ -/* 468 */ NdrFcShort( 0x2113 ), /* Flags: must size, must free, out, simple ref, srv alloc size=8 */ -/* 470 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */ -/* 472 */ NdrFcShort( 0x4ba ), /* Type Offset=1210 */ +/* 474 */ NdrFcShort( 0x2113 ), /* Flags: must size, must free, out, simple ref, srv alloc size=8 */ +/* 476 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */ +/* 478 */ NdrFcShort( 0x4ba ), /* Type Offset=1210 */ /* Return value */ -/* 474 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ -/* 476 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */ -/* 478 */ 0x8, /* FC_LONG */ +/* 480 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ +/* 482 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */ +/* 484 */ 0x8, /* FC_LONG */ 0x0, /* 0 */ /* Procedure CCheckFriendStatusInit */ -/* 480 */ 0x33, /* FC_AUTO_HANDLE */ +/* 486 */ 0x33, /* FC_AUTO_HANDLE */ 0x6c, /* Old Flags: object, Oi2 */ -/* 482 */ NdrFcLong( 0x0 ), /* 0 */ -/* 486 */ NdrFcShort( 0x12 ), /* 18 */ -/* 488 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */ -/* 490 */ NdrFcShort( 0x0 ), /* 0 */ -/* 492 */ NdrFcShort( 0x24 ), /* 36 */ -/* 494 */ 0x44, /* Oi2 Flags: has return, has ext, */ +/* 488 */ NdrFcLong( 0x0 ), /* 0 */ +/* 492 */ NdrFcShort( 0x12 ), /* 18 */ +/* 494 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */ +/* 496 */ NdrFcShort( 0x0 ), /* 0 */ +/* 498 */ NdrFcShort( 0x24 ), /* 36 */ +/* 500 */ 0x44, /* Oi2 Flags: has return, has ext, */ 0x2, /* 2 */ -/* 496 */ 0x8, /* 8 */ +/* 502 */ 0x8, /* 8 */ 0x41, /* Ext Flags: new corr desc, has range on conformance */ -/* 498 */ NdrFcShort( 0x0 ), /* 0 */ -/* 500 */ NdrFcShort( 0x0 ), /* 0 */ -/* 502 */ NdrFcShort( 0x0 ), /* 0 */ +/* 504 */ NdrFcShort( 0x0 ), /* 0 */ +/* 506 */ NdrFcShort( 0x0 ), /* 0 */ +/* 508 */ NdrFcShort( 0x0 ), /* 0 */ /* Parameter __result */ -/* 504 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */ -/* 506 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */ -/* 508 */ 0x8, /* FC_LONG */ +/* 510 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */ +/* 512 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */ +/* 514 */ 0x8, /* FC_LONG */ 0x0, /* 0 */ /* Return value */ -/* 510 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ -/* 512 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */ -/* 514 */ 0x8, /* FC_LONG */ +/* 516 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ +/* 518 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */ +/* 520 */ 0x8, /* FC_LONG */ 0x0, /* 0 */ /* Procedure CCheckFriendStatus */ -/* 516 */ 0x33, /* FC_AUTO_HANDLE */ +/* 522 */ 0x33, /* FC_AUTO_HANDLE */ 0x6c, /* Old Flags: object, Oi2 */ -/* 518 */ NdrFcLong( 0x0 ), /* 0 */ -/* 522 */ NdrFcShort( 0x13 ), /* 19 */ -/* 524 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */ -/* 526 */ NdrFcShort( 0x0 ), /* 0 */ -/* 528 */ NdrFcShort( 0x24 ), /* 36 */ -/* 530 */ 0x46, /* Oi2 Flags: clt must size, has return, has ext, */ +/* 524 */ NdrFcLong( 0x0 ), /* 0 */ +/* 528 */ NdrFcShort( 0x13 ), /* 19 */ +/* 530 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */ +/* 532 */ NdrFcShort( 0x0 ), /* 0 */ +/* 534 */ NdrFcShort( 0x24 ), /* 36 */ +/* 536 */ 0x46, /* Oi2 Flags: clt must size, has return, has ext, */ 0x3, /* 3 */ -/* 532 */ 0x8, /* 8 */ +/* 538 */ 0x8, /* 8 */ 0x45, /* Ext Flags: new corr desc, srv corr check, has range on conformance */ -/* 534 */ NdrFcShort( 0x0 ), /* 0 */ -/* 536 */ NdrFcShort( 0x1 ), /* 1 */ -/* 538 */ NdrFcShort( 0x0 ), /* 0 */ +/* 540 */ NdrFcShort( 0x0 ), /* 0 */ +/* 542 */ NdrFcShort( 0x1 ), /* 1 */ +/* 544 */ NdrFcShort( 0x0 ), /* 0 */ /* Parameter wxid */ -/* 540 */ NdrFcShort( 0x8b ), /* Flags: must size, must free, in, by val, */ -/* 542 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */ -/* 544 */ NdrFcShort( 0x2a ), /* Type Offset=42 */ +/* 546 */ NdrFcShort( 0x8b ), /* Flags: must size, must free, in, by val, */ +/* 548 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */ +/* 550 */ NdrFcShort( 0x2a ), /* Type Offset=42 */ /* Parameter __result */ -/* 546 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */ -/* 548 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */ -/* 550 */ 0x8, /* FC_LONG */ +/* 552 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */ +/* 554 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */ +/* 556 */ 0x8, /* FC_LONG */ 0x0, /* 0 */ /* Return value */ -/* 552 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ -/* 554 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */ -/* 556 */ 0x8, /* FC_LONG */ +/* 558 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ +/* 560 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */ +/* 562 */ 0x8, /* FC_LONG */ 0x0, /* 0 */ /* Procedure CCheckFriendStatusFinish */ -/* 558 */ 0x33, /* FC_AUTO_HANDLE */ +/* 564 */ 0x33, /* FC_AUTO_HANDLE */ 0x6c, /* Old Flags: object, Oi2 */ -/* 560 */ NdrFcLong( 0x0 ), /* 0 */ -/* 564 */ NdrFcShort( 0x14 ), /* 20 */ -/* 566 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */ -/* 568 */ NdrFcShort( 0x0 ), /* 0 */ -/* 570 */ NdrFcShort( 0x24 ), /* 36 */ -/* 572 */ 0x44, /* Oi2 Flags: has return, has ext, */ +/* 566 */ NdrFcLong( 0x0 ), /* 0 */ +/* 570 */ NdrFcShort( 0x14 ), /* 20 */ +/* 572 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */ +/* 574 */ NdrFcShort( 0x0 ), /* 0 */ +/* 576 */ NdrFcShort( 0x24 ), /* 36 */ +/* 578 */ 0x44, /* Oi2 Flags: has return, has ext, */ 0x2, /* 2 */ -/* 574 */ 0x8, /* 8 */ +/* 580 */ 0x8, /* 8 */ 0x41, /* Ext Flags: new corr desc, has range on conformance */ -/* 576 */ NdrFcShort( 0x0 ), /* 0 */ -/* 578 */ NdrFcShort( 0x0 ), /* 0 */ -/* 580 */ NdrFcShort( 0x0 ), /* 0 */ +/* 582 */ NdrFcShort( 0x0 ), /* 0 */ +/* 584 */ NdrFcShort( 0x0 ), /* 0 */ +/* 586 */ NdrFcShort( 0x0 ), /* 0 */ /* Parameter __result */ -/* 582 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */ -/* 584 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */ -/* 586 */ 0x8, /* FC_LONG */ +/* 588 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */ +/* 590 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */ +/* 592 */ 0x8, /* FC_LONG */ 0x0, /* 0 */ /* Return value */ -/* 588 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ -/* 590 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */ -/* 592 */ 0x8, /* FC_LONG */ +/* 594 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ +/* 596 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */ +/* 598 */ 0x8, /* FC_LONG */ 0x0, /* 0 */ /* Procedure CGetComWorkPath */ -/* 594 */ 0x33, /* FC_AUTO_HANDLE */ +/* 600 */ 0x33, /* FC_AUTO_HANDLE */ 0x6c, /* Old Flags: object, Oi2 */ -/* 596 */ NdrFcLong( 0x0 ), /* 0 */ -/* 600 */ NdrFcShort( 0x15 ), /* 21 */ -/* 602 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */ -/* 604 */ NdrFcShort( 0x0 ), /* 0 */ -/* 606 */ NdrFcShort( 0x8 ), /* 8 */ -/* 608 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */ +/* 602 */ NdrFcLong( 0x0 ), /* 0 */ +/* 606 */ NdrFcShort( 0x15 ), /* 21 */ +/* 608 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */ +/* 610 */ NdrFcShort( 0x0 ), /* 0 */ +/* 612 */ NdrFcShort( 0x8 ), /* 8 */ +/* 614 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */ 0x2, /* 2 */ -/* 610 */ 0x8, /* 8 */ +/* 616 */ 0x8, /* 8 */ 0x43, /* Ext Flags: new corr desc, clt corr check, has range on conformance */ -/* 612 */ NdrFcShort( 0x1 ), /* 1 */ -/* 614 */ NdrFcShort( 0x0 ), /* 0 */ -/* 616 */ NdrFcShort( 0x0 ), /* 0 */ +/* 618 */ NdrFcShort( 0x1 ), /* 1 */ +/* 620 */ NdrFcShort( 0x0 ), /* 0 */ +/* 622 */ NdrFcShort( 0x0 ), /* 0 */ /* Parameter __result */ -/* 618 */ NdrFcShort( 0x2113 ), /* Flags: must size, must free, out, simple ref, srv alloc size=8 */ -/* 620 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */ -/* 622 */ NdrFcShort( 0x4ba ), /* Type Offset=1210 */ +/* 624 */ NdrFcShort( 0x2113 ), /* Flags: must size, must free, out, simple ref, srv alloc size=8 */ +/* 626 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */ +/* 628 */ NdrFcShort( 0x4ba ), /* Type Offset=1210 */ /* Return value */ -/* 624 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ -/* 626 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */ -/* 628 */ 0x8, /* FC_LONG */ +/* 630 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ +/* 632 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */ +/* 634 */ 0x8, /* FC_LONG */ 0x0, /* 0 */ /* Procedure CStartReceiveMessage */ -/* 630 */ 0x33, /* FC_AUTO_HANDLE */ +/* 636 */ 0x33, /* FC_AUTO_HANDLE */ 0x6c, /* Old Flags: object, Oi2 */ -/* 632 */ NdrFcLong( 0x0 ), /* 0 */ -/* 636 */ NdrFcShort( 0x16 ), /* 22 */ -/* 638 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */ -/* 640 */ NdrFcShort( 0x0 ), /* 0 */ -/* 642 */ NdrFcShort( 0x24 ), /* 36 */ -/* 644 */ 0x44, /* Oi2 Flags: has return, has ext, */ +/* 638 */ NdrFcLong( 0x0 ), /* 0 */ +/* 642 */ NdrFcShort( 0x16 ), /* 22 */ +/* 644 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */ +/* 646 */ NdrFcShort( 0x0 ), /* 0 */ +/* 648 */ NdrFcShort( 0x24 ), /* 36 */ +/* 650 */ 0x44, /* Oi2 Flags: has return, has ext, */ 0x2, /* 2 */ -/* 646 */ 0x8, /* 8 */ +/* 652 */ 0x8, /* 8 */ 0x41, /* Ext Flags: new corr desc, has range on conformance */ -/* 648 */ NdrFcShort( 0x0 ), /* 0 */ -/* 650 */ NdrFcShort( 0x0 ), /* 0 */ -/* 652 */ NdrFcShort( 0x0 ), /* 0 */ +/* 654 */ NdrFcShort( 0x0 ), /* 0 */ +/* 656 */ NdrFcShort( 0x0 ), /* 0 */ +/* 658 */ NdrFcShort( 0x0 ), /* 0 */ /* Parameter __result */ -/* 654 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */ -/* 656 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */ -/* 658 */ 0x8, /* FC_LONG */ +/* 660 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */ +/* 662 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */ +/* 664 */ 0x8, /* FC_LONG */ 0x0, /* 0 */ /* Return value */ -/* 660 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ -/* 662 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */ -/* 664 */ 0x8, /* FC_LONG */ +/* 666 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ +/* 668 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */ +/* 670 */ 0x8, /* FC_LONG */ 0x0, /* 0 */ /* Procedure CReceiveMessage */ -/* 666 */ 0x33, /* FC_AUTO_HANDLE */ +/* 672 */ 0x33, /* FC_AUTO_HANDLE */ 0x6c, /* Old Flags: object, Oi2 */ -/* 668 */ NdrFcLong( 0x0 ), /* 0 */ -/* 672 */ NdrFcShort( 0x17 ), /* 23 */ -/* 674 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */ -/* 676 */ NdrFcShort( 0x0 ), /* 0 */ -/* 678 */ NdrFcShort( 0x8 ), /* 8 */ -/* 680 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */ +/* 674 */ NdrFcLong( 0x0 ), /* 0 */ +/* 678 */ NdrFcShort( 0x17 ), /* 23 */ +/* 680 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */ +/* 682 */ NdrFcShort( 0x0 ), /* 0 */ +/* 684 */ NdrFcShort( 0x8 ), /* 8 */ +/* 686 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */ 0x2, /* 2 */ -/* 682 */ 0x8, /* 8 */ +/* 688 */ 0x8, /* 8 */ 0x43, /* Ext Flags: new corr desc, clt corr check, has range on conformance */ -/* 684 */ NdrFcShort( 0x1 ), /* 1 */ -/* 686 */ NdrFcShort( 0x0 ), /* 0 */ -/* 688 */ NdrFcShort( 0x0 ), /* 0 */ +/* 690 */ NdrFcShort( 0x1 ), /* 1 */ +/* 692 */ NdrFcShort( 0x0 ), /* 0 */ +/* 694 */ NdrFcShort( 0x0 ), /* 0 */ /* Parameter __result */ -/* 690 */ NdrFcShort( 0x4113 ), /* Flags: must size, must free, out, simple ref, srv alloc size=16 */ -/* 692 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */ -/* 694 */ NdrFcShort( 0x4ac ), /* Type Offset=1196 */ +/* 696 */ NdrFcShort( 0x4113 ), /* Flags: must size, must free, out, simple ref, srv alloc size=16 */ +/* 698 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */ +/* 700 */ NdrFcShort( 0x4ac ), /* Type Offset=1196 */ /* Return value */ -/* 696 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ -/* 698 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */ -/* 700 */ 0x8, /* FC_LONG */ +/* 702 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ +/* 704 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */ +/* 706 */ 0x8, /* FC_LONG */ 0x0, /* 0 */ /* Procedure CStopReceiveMessage */ -/* 702 */ 0x33, /* FC_AUTO_HANDLE */ +/* 708 */ 0x33, /* FC_AUTO_HANDLE */ 0x6c, /* Old Flags: object, Oi2 */ -/* 704 */ NdrFcLong( 0x0 ), /* 0 */ -/* 708 */ NdrFcShort( 0x18 ), /* 24 */ -/* 710 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */ -/* 712 */ NdrFcShort( 0x0 ), /* 0 */ -/* 714 */ NdrFcShort( 0x24 ), /* 36 */ -/* 716 */ 0x44, /* Oi2 Flags: has return, has ext, */ +/* 710 */ NdrFcLong( 0x0 ), /* 0 */ +/* 714 */ NdrFcShort( 0x18 ), /* 24 */ +/* 716 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */ +/* 718 */ NdrFcShort( 0x0 ), /* 0 */ +/* 720 */ NdrFcShort( 0x24 ), /* 36 */ +/* 722 */ 0x44, /* Oi2 Flags: has return, has ext, */ 0x2, /* 2 */ -/* 718 */ 0x8, /* 8 */ +/* 724 */ 0x8, /* 8 */ 0x41, /* Ext Flags: new corr desc, has range on conformance */ -/* 720 */ NdrFcShort( 0x0 ), /* 0 */ -/* 722 */ NdrFcShort( 0x0 ), /* 0 */ -/* 724 */ NdrFcShort( 0x0 ), /* 0 */ +/* 726 */ NdrFcShort( 0x0 ), /* 0 */ +/* 728 */ NdrFcShort( 0x0 ), /* 0 */ +/* 730 */ NdrFcShort( 0x0 ), /* 0 */ /* Parameter __result */ -/* 726 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */ -/* 728 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */ -/* 730 */ 0x8, /* FC_LONG */ +/* 732 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */ +/* 734 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */ +/* 736 */ 0x8, /* FC_LONG */ 0x0, /* 0 */ /* Return value */ -/* 732 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ -/* 734 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */ -/* 736 */ 0x8, /* FC_LONG */ +/* 738 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ +/* 740 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */ +/* 742 */ 0x8, /* FC_LONG */ 0x0, /* 0 */ /* Procedure CSendAtText */ -/* 738 */ 0x33, /* FC_AUTO_HANDLE */ +/* 744 */ 0x33, /* FC_AUTO_HANDLE */ 0x6c, /* Old Flags: object, Oi2 */ -/* 740 */ NdrFcLong( 0x0 ), /* 0 */ -/* 744 */ NdrFcShort( 0x19 ), /* 25 */ -/* 746 */ NdrFcShort( 0x18 ), /* x86 Stack size/offset = 24 */ -/* 748 */ NdrFcShort( 0x0 ), /* 0 */ -/* 750 */ NdrFcShort( 0x24 ), /* 36 */ -/* 752 */ 0x46, /* Oi2 Flags: clt must size, has return, has ext, */ - 0x5, /* 5 */ -/* 754 */ 0x8, /* 8 */ +/* 746 */ NdrFcLong( 0x0 ), /* 0 */ +/* 750 */ NdrFcShort( 0x19 ), /* 25 */ +/* 752 */ NdrFcShort( 0x1c ), /* x86 Stack size/offset = 28 */ +/* 754 */ NdrFcShort( 0x8 ), /* 8 */ +/* 756 */ NdrFcShort( 0x24 ), /* 36 */ +/* 758 */ 0x46, /* Oi2 Flags: clt must size, has return, has ext, */ + 0x6, /* 6 */ +/* 760 */ 0x8, /* 8 */ 0x45, /* Ext Flags: new corr desc, srv corr check, has range on conformance */ -/* 756 */ NdrFcShort( 0x0 ), /* 0 */ -/* 758 */ NdrFcShort( 0x1 ), /* 1 */ -/* 760 */ NdrFcShort( 0x0 ), /* 0 */ +/* 762 */ NdrFcShort( 0x0 ), /* 0 */ +/* 764 */ NdrFcShort( 0x1 ), /* 1 */ +/* 766 */ NdrFcShort( 0x0 ), /* 0 */ /* Parameter chatroomid */ -/* 762 */ NdrFcShort( 0x8b ), /* Flags: must size, must free, in, by val, */ -/* 764 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */ -/* 766 */ NdrFcShort( 0x2a ), /* Type Offset=42 */ +/* 768 */ NdrFcShort( 0x8b ), /* Flags: must size, must free, in, by val, */ +/* 770 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */ +/* 772 */ NdrFcShort( 0x2a ), /* Type Offset=42 */ /* Parameter wxid */ -/* 768 */ NdrFcShort( 0x10b ), /* Flags: must size, must free, in, simple ref, */ -/* 770 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */ -/* 772 */ NdrFcShort( 0x4cc ), /* Type Offset=1228 */ +/* 774 */ NdrFcShort( 0x10b ), /* Flags: must size, must free, in, simple ref, */ +/* 776 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */ +/* 778 */ NdrFcShort( 0x4cc ), /* Type Offset=1228 */ /* Parameter wxmsg */ -/* 774 */ NdrFcShort( 0x8b ), /* Flags: must size, must free, in, by val, */ -/* 776 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */ -/* 778 */ NdrFcShort( 0x2a ), /* Type Offset=42 */ +/* 780 */ NdrFcShort( 0x8b ), /* Flags: must size, must free, in, by val, */ +/* 782 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */ +/* 784 */ NdrFcShort( 0x2a ), /* Type Offset=42 */ + + /* Parameter AutoNickName */ + +/* 786 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */ +/* 788 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */ +/* 790 */ 0x8, /* FC_LONG */ + 0x0, /* 0 */ /* Parameter __result */ -/* 780 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */ -/* 782 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */ -/* 784 */ 0x8, /* FC_LONG */ +/* 792 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */ +/* 794 */ NdrFcShort( 0x14 ), /* x86 Stack size/offset = 20 */ +/* 796 */ 0x8, /* FC_LONG */ 0x0, /* 0 */ /* Return value */ -/* 786 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ -/* 788 */ NdrFcShort( 0x14 ), /* x86 Stack size/offset = 20 */ -/* 790 */ 0x8, /* FC_LONG */ +/* 798 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ +/* 800 */ NdrFcShort( 0x18 ), /* x86 Stack size/offset = 24 */ +/* 802 */ 0x8, /* FC_LONG */ 0x0, /* 0 */ /* Procedure CGetChatRoomMembers */ -/* 792 */ 0x33, /* FC_AUTO_HANDLE */ +/* 804 */ 0x33, /* FC_AUTO_HANDLE */ 0x6c, /* Old Flags: object, Oi2 */ -/* 794 */ NdrFcLong( 0x0 ), /* 0 */ -/* 798 */ NdrFcShort( 0x1a ), /* 26 */ -/* 800 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */ -/* 802 */ NdrFcShort( 0x0 ), /* 0 */ -/* 804 */ NdrFcShort( 0x8 ), /* 8 */ -/* 806 */ 0x47, /* Oi2 Flags: srv must size, clt must size, has return, has ext, */ +/* 806 */ NdrFcLong( 0x0 ), /* 0 */ +/* 810 */ NdrFcShort( 0x1a ), /* 26 */ +/* 812 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */ +/* 814 */ NdrFcShort( 0x0 ), /* 0 */ +/* 816 */ NdrFcShort( 0x8 ), /* 8 */ +/* 818 */ 0x47, /* Oi2 Flags: srv must size, clt must size, has return, has ext, */ 0x3, /* 3 */ -/* 808 */ 0x8, /* 8 */ +/* 820 */ 0x8, /* 8 */ 0x47, /* Ext Flags: new corr desc, clt corr check, srv corr check, has range on conformance */ -/* 810 */ NdrFcShort( 0x1 ), /* 1 */ -/* 812 */ NdrFcShort( 0x1 ), /* 1 */ -/* 814 */ NdrFcShort( 0x0 ), /* 0 */ +/* 822 */ NdrFcShort( 0x1 ), /* 1 */ +/* 824 */ NdrFcShort( 0x1 ), /* 1 */ +/* 826 */ NdrFcShort( 0x0 ), /* 0 */ /* Parameter chatroomid */ -/* 816 */ NdrFcShort( 0x8b ), /* Flags: must size, must free, in, by val, */ -/* 818 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */ -/* 820 */ NdrFcShort( 0x2a ), /* Type Offset=42 */ +/* 828 */ NdrFcShort( 0x8b ), /* Flags: must size, must free, in, by val, */ +/* 830 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */ +/* 832 */ NdrFcShort( 0x2a ), /* Type Offset=42 */ /* Parameter __result */ -/* 822 */ NdrFcShort( 0x4113 ), /* Flags: must size, must free, out, simple ref, srv alloc size=16 */ -/* 824 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */ -/* 826 */ NdrFcShort( 0x4ac ), /* Type Offset=1196 */ +/* 834 */ NdrFcShort( 0x4113 ), /* Flags: must size, must free, out, simple ref, srv alloc size=16 */ +/* 836 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */ +/* 838 */ NdrFcShort( 0x4ac ), /* Type Offset=1196 */ /* Return value */ -/* 828 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ -/* 830 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */ -/* 832 */ 0x8, /* FC_LONG */ +/* 840 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ +/* 842 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */ +/* 844 */ 0x8, /* FC_LONG */ 0x0, /* 0 */ /* Procedure CGetDbHandles */ -/* 834 */ 0x33, /* FC_AUTO_HANDLE */ +/* 846 */ 0x33, /* FC_AUTO_HANDLE */ 0x6c, /* Old Flags: object, Oi2 */ -/* 836 */ NdrFcLong( 0x0 ), /* 0 */ -/* 840 */ NdrFcShort( 0x1b ), /* 27 */ -/* 842 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */ -/* 844 */ NdrFcShort( 0x0 ), /* 0 */ -/* 846 */ NdrFcShort( 0x8 ), /* 8 */ -/* 848 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */ +/* 848 */ NdrFcLong( 0x0 ), /* 0 */ +/* 852 */ NdrFcShort( 0x1b ), /* 27 */ +/* 854 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */ +/* 856 */ NdrFcShort( 0x0 ), /* 0 */ +/* 858 */ NdrFcShort( 0x8 ), /* 8 */ +/* 860 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */ 0x2, /* 2 */ -/* 850 */ 0x8, /* 8 */ +/* 862 */ 0x8, /* 8 */ 0x43, /* Ext Flags: new corr desc, clt corr check, has range on conformance */ -/* 852 */ NdrFcShort( 0x1 ), /* 1 */ -/* 854 */ NdrFcShort( 0x0 ), /* 0 */ -/* 856 */ NdrFcShort( 0x0 ), /* 0 */ +/* 864 */ NdrFcShort( 0x1 ), /* 1 */ +/* 866 */ NdrFcShort( 0x0 ), /* 0 */ +/* 868 */ NdrFcShort( 0x0 ), /* 0 */ /* Parameter __result */ -/* 858 */ NdrFcShort( 0x4113 ), /* Flags: must size, must free, out, simple ref, srv alloc size=16 */ -/* 860 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */ -/* 862 */ NdrFcShort( 0x4ac ), /* Type Offset=1196 */ +/* 870 */ NdrFcShort( 0x4113 ), /* Flags: must size, must free, out, simple ref, srv alloc size=16 */ +/* 872 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */ +/* 874 */ NdrFcShort( 0x4ac ), /* Type Offset=1196 */ /* Return value */ -/* 864 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ -/* 866 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */ -/* 868 */ 0x8, /* FC_LONG */ +/* 876 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ +/* 878 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */ +/* 880 */ 0x8, /* FC_LONG */ 0x0, /* 0 */ /* Procedure CExecuteSQL */ -/* 870 */ 0x33, /* FC_AUTO_HANDLE */ +/* 882 */ 0x33, /* FC_AUTO_HANDLE */ 0x6c, /* Old Flags: object, Oi2 */ -/* 872 */ NdrFcLong( 0x0 ), /* 0 */ -/* 876 */ NdrFcShort( 0x1c ), /* 28 */ -/* 878 */ NdrFcShort( 0x14 ), /* x86 Stack size/offset = 20 */ -/* 880 */ NdrFcShort( 0x8 ), /* 8 */ -/* 882 */ NdrFcShort( 0x8 ), /* 8 */ -/* 884 */ 0x47, /* Oi2 Flags: srv must size, clt must size, has return, has ext, */ +/* 884 */ NdrFcLong( 0x0 ), /* 0 */ +/* 888 */ NdrFcShort( 0x1c ), /* 28 */ +/* 890 */ NdrFcShort( 0x14 ), /* x86 Stack size/offset = 20 */ +/* 892 */ NdrFcShort( 0x8 ), /* 8 */ +/* 894 */ NdrFcShort( 0x8 ), /* 8 */ +/* 896 */ 0x47, /* Oi2 Flags: srv must size, clt must size, has return, has ext, */ 0x4, /* 4 */ -/* 886 */ 0x8, /* 8 */ +/* 898 */ 0x8, /* 8 */ 0x47, /* Ext Flags: new corr desc, clt corr check, srv corr check, has range on conformance */ -/* 888 */ NdrFcShort( 0x1 ), /* 1 */ -/* 890 */ NdrFcShort( 0x1 ), /* 1 */ -/* 892 */ NdrFcShort( 0x0 ), /* 0 */ +/* 900 */ NdrFcShort( 0x1 ), /* 1 */ +/* 902 */ NdrFcShort( 0x1 ), /* 1 */ +/* 904 */ NdrFcShort( 0x0 ), /* 0 */ /* Parameter DbHandle */ -/* 894 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */ -/* 896 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */ -/* 898 */ 0x8, /* FC_LONG */ +/* 906 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */ +/* 908 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */ +/* 910 */ 0x8, /* FC_LONG */ 0x0, /* 0 */ /* Parameter sql */ -/* 900 */ NdrFcShort( 0x8b ), /* Flags: must size, must free, in, by val, */ -/* 902 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */ -/* 904 */ NdrFcShort( 0x2a ), /* Type Offset=42 */ +/* 912 */ NdrFcShort( 0x8b ), /* Flags: must size, must free, in, by val, */ +/* 914 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */ +/* 916 */ NdrFcShort( 0x2a ), /* Type Offset=42 */ /* Parameter __result */ -/* 906 */ NdrFcShort( 0x4113 ), /* Flags: must size, must free, out, simple ref, srv alloc size=16 */ -/* 908 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */ -/* 910 */ NdrFcShort( 0x4ac ), /* Type Offset=1196 */ +/* 918 */ NdrFcShort( 0x4113 ), /* Flags: must size, must free, out, simple ref, srv alloc size=16 */ +/* 920 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */ +/* 922 */ NdrFcShort( 0x4ac ), /* Type Offset=1196 */ /* Return value */ -/* 912 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ -/* 914 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */ -/* 916 */ 0x8, /* FC_LONG */ +/* 924 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ +/* 926 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */ +/* 928 */ 0x8, /* FC_LONG */ 0x0, /* 0 */ /* Procedure CBackupSQLiteDB */ -/* 918 */ 0x33, /* FC_AUTO_HANDLE */ +/* 930 */ 0x33, /* FC_AUTO_HANDLE */ 0x6c, /* Old Flags: object, Oi2 */ -/* 920 */ NdrFcLong( 0x0 ), /* 0 */ -/* 924 */ NdrFcShort( 0x1d ), /* 29 */ -/* 926 */ NdrFcShort( 0x14 ), /* x86 Stack size/offset = 20 */ -/* 928 */ NdrFcShort( 0x8 ), /* 8 */ -/* 930 */ NdrFcShort( 0x24 ), /* 36 */ -/* 932 */ 0x46, /* Oi2 Flags: clt must size, has return, has ext, */ +/* 932 */ NdrFcLong( 0x0 ), /* 0 */ +/* 936 */ NdrFcShort( 0x1d ), /* 29 */ +/* 938 */ NdrFcShort( 0x14 ), /* x86 Stack size/offset = 20 */ +/* 940 */ NdrFcShort( 0x8 ), /* 8 */ +/* 942 */ NdrFcShort( 0x24 ), /* 36 */ +/* 944 */ 0x46, /* Oi2 Flags: clt must size, has return, has ext, */ 0x4, /* 4 */ -/* 934 */ 0x8, /* 8 */ +/* 946 */ 0x8, /* 8 */ 0x45, /* Ext Flags: new corr desc, srv corr check, has range on conformance */ -/* 936 */ NdrFcShort( 0x0 ), /* 0 */ -/* 938 */ NdrFcShort( 0x1 ), /* 1 */ -/* 940 */ NdrFcShort( 0x0 ), /* 0 */ +/* 948 */ NdrFcShort( 0x0 ), /* 0 */ +/* 950 */ NdrFcShort( 0x1 ), /* 1 */ +/* 952 */ NdrFcShort( 0x0 ), /* 0 */ /* Parameter DbHandle */ -/* 942 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */ -/* 944 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */ -/* 946 */ 0x8, /* FC_LONG */ +/* 954 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */ +/* 956 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */ +/* 958 */ 0x8, /* FC_LONG */ 0x0, /* 0 */ /* Parameter savepath */ -/* 948 */ NdrFcShort( 0x8b ), /* Flags: must size, must free, in, by val, */ -/* 950 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */ -/* 952 */ NdrFcShort( 0x2a ), /* Type Offset=42 */ +/* 960 */ NdrFcShort( 0x8b ), /* Flags: must size, must free, in, by val, */ +/* 962 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */ +/* 964 */ NdrFcShort( 0x2a ), /* Type Offset=42 */ /* Parameter __result */ -/* 954 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */ -/* 956 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */ -/* 958 */ 0x8, /* FC_LONG */ +/* 966 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */ +/* 968 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */ +/* 970 */ 0x8, /* FC_LONG */ 0x0, /* 0 */ /* Return value */ -/* 960 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ -/* 962 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */ -/* 964 */ 0x8, /* FC_LONG */ +/* 972 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ +/* 974 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */ +/* 976 */ 0x8, /* FC_LONG */ 0x0, /* 0 */ /* Procedure CVerifyFriendApply */ -/* 966 */ 0x33, /* FC_AUTO_HANDLE */ +/* 978 */ 0x33, /* FC_AUTO_HANDLE */ 0x6c, /* Old Flags: object, Oi2 */ -/* 968 */ NdrFcLong( 0x0 ), /* 0 */ -/* 972 */ NdrFcShort( 0x1e ), /* 30 */ -/* 974 */ NdrFcShort( 0x14 ), /* x86 Stack size/offset = 20 */ -/* 976 */ NdrFcShort( 0x0 ), /* 0 */ -/* 978 */ NdrFcShort( 0x24 ), /* 36 */ -/* 980 */ 0x46, /* Oi2 Flags: clt must size, has return, has ext, */ +/* 980 */ NdrFcLong( 0x0 ), /* 0 */ +/* 984 */ NdrFcShort( 0x1e ), /* 30 */ +/* 986 */ NdrFcShort( 0x14 ), /* x86 Stack size/offset = 20 */ +/* 988 */ NdrFcShort( 0x0 ), /* 0 */ +/* 990 */ NdrFcShort( 0x24 ), /* 36 */ +/* 992 */ 0x46, /* Oi2 Flags: clt must size, has return, has ext, */ 0x4, /* 4 */ -/* 982 */ 0x8, /* 8 */ +/* 994 */ 0x8, /* 8 */ 0x45, /* Ext Flags: new corr desc, srv corr check, has range on conformance */ -/* 984 */ NdrFcShort( 0x0 ), /* 0 */ -/* 986 */ NdrFcShort( 0x1 ), /* 1 */ -/* 988 */ NdrFcShort( 0x0 ), /* 0 */ +/* 996 */ NdrFcShort( 0x0 ), /* 0 */ +/* 998 */ NdrFcShort( 0x1 ), /* 1 */ +/* 1000 */ NdrFcShort( 0x0 ), /* 0 */ /* Parameter v3 */ -/* 990 */ NdrFcShort( 0x8b ), /* Flags: must size, must free, in, by val, */ -/* 992 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */ -/* 994 */ NdrFcShort( 0x2a ), /* Type Offset=42 */ +/* 1002 */ NdrFcShort( 0x8b ), /* Flags: must size, must free, in, by val, */ +/* 1004 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */ +/* 1006 */ NdrFcShort( 0x2a ), /* Type Offset=42 */ /* Parameter v4 */ -/* 996 */ NdrFcShort( 0x8b ), /* Flags: must size, must free, in, by val, */ -/* 998 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */ -/* 1000 */ NdrFcShort( 0x2a ), /* Type Offset=42 */ +/* 1008 */ NdrFcShort( 0x8b ), /* Flags: must size, must free, in, by val, */ +/* 1010 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */ +/* 1012 */ NdrFcShort( 0x2a ), /* Type Offset=42 */ /* Parameter __result */ -/* 1002 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */ -/* 1004 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */ -/* 1006 */ 0x8, /* FC_LONG */ +/* 1014 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */ +/* 1016 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */ +/* 1018 */ 0x8, /* FC_LONG */ 0x0, /* 0 */ /* Return value */ -/* 1008 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ -/* 1010 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */ -/* 1012 */ 0x8, /* FC_LONG */ +/* 1020 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ +/* 1022 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */ +/* 1024 */ 0x8, /* FC_LONG */ 0x0, /* 0 */ /* Procedure CAddFriendByWxid */ -/* 1014 */ 0x33, /* FC_AUTO_HANDLE */ +/* 1026 */ 0x33, /* FC_AUTO_HANDLE */ 0x6c, /* Old Flags: object, Oi2 */ -/* 1016 */ NdrFcLong( 0x0 ), /* 0 */ -/* 1020 */ NdrFcShort( 0x1f ), /* 31 */ -/* 1022 */ NdrFcShort( 0x14 ), /* x86 Stack size/offset = 20 */ -/* 1024 */ NdrFcShort( 0x0 ), /* 0 */ -/* 1026 */ NdrFcShort( 0x24 ), /* 36 */ -/* 1028 */ 0x46, /* Oi2 Flags: clt must size, has return, has ext, */ +/* 1028 */ NdrFcLong( 0x0 ), /* 0 */ +/* 1032 */ NdrFcShort( 0x1f ), /* 31 */ +/* 1034 */ NdrFcShort( 0x14 ), /* x86 Stack size/offset = 20 */ +/* 1036 */ NdrFcShort( 0x0 ), /* 0 */ +/* 1038 */ NdrFcShort( 0x24 ), /* 36 */ +/* 1040 */ 0x46, /* Oi2 Flags: clt must size, has return, has ext, */ 0x4, /* 4 */ -/* 1030 */ 0x8, /* 8 */ +/* 1042 */ 0x8, /* 8 */ 0x45, /* Ext Flags: new corr desc, srv corr check, has range on conformance */ -/* 1032 */ NdrFcShort( 0x0 ), /* 0 */ -/* 1034 */ NdrFcShort( 0x1 ), /* 1 */ -/* 1036 */ NdrFcShort( 0x0 ), /* 0 */ +/* 1044 */ NdrFcShort( 0x0 ), /* 0 */ +/* 1046 */ NdrFcShort( 0x1 ), /* 1 */ +/* 1048 */ NdrFcShort( 0x0 ), /* 0 */ /* Parameter wxid */ -/* 1038 */ NdrFcShort( 0x8b ), /* Flags: must size, must free, in, by val, */ -/* 1040 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */ -/* 1042 */ NdrFcShort( 0x2a ), /* Type Offset=42 */ +/* 1050 */ NdrFcShort( 0x8b ), /* Flags: must size, must free, in, by val, */ +/* 1052 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */ +/* 1054 */ NdrFcShort( 0x2a ), /* Type Offset=42 */ /* Parameter message */ -/* 1044 */ NdrFcShort( 0x8b ), /* Flags: must size, must free, in, by val, */ -/* 1046 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */ -/* 1048 */ NdrFcShort( 0x2a ), /* Type Offset=42 */ +/* 1056 */ NdrFcShort( 0x8b ), /* Flags: must size, must free, in, by val, */ +/* 1058 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */ +/* 1060 */ NdrFcShort( 0x2a ), /* Type Offset=42 */ /* Parameter __result */ -/* 1050 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */ -/* 1052 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */ -/* 1054 */ 0x8, /* FC_LONG */ +/* 1062 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */ +/* 1064 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */ +/* 1066 */ 0x8, /* FC_LONG */ 0x0, /* 0 */ /* Return value */ -/* 1056 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ -/* 1058 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */ -/* 1060 */ 0x8, /* FC_LONG */ +/* 1068 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ +/* 1070 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */ +/* 1072 */ 0x8, /* FC_LONG */ 0x0, /* 0 */ /* Procedure CAddFriendByV3 */ -/* 1062 */ 0x33, /* FC_AUTO_HANDLE */ +/* 1074 */ 0x33, /* FC_AUTO_HANDLE */ 0x6c, /* Old Flags: object, Oi2 */ -/* 1064 */ NdrFcLong( 0x0 ), /* 0 */ -/* 1068 */ NdrFcShort( 0x20 ), /* 32 */ -/* 1070 */ NdrFcShort( 0x18 ), /* x86 Stack size/offset = 24 */ -/* 1072 */ NdrFcShort( 0x8 ), /* 8 */ -/* 1074 */ NdrFcShort( 0x24 ), /* 36 */ -/* 1076 */ 0x46, /* Oi2 Flags: clt must size, has return, has ext, */ +/* 1076 */ NdrFcLong( 0x0 ), /* 0 */ +/* 1080 */ NdrFcShort( 0x20 ), /* 32 */ +/* 1082 */ NdrFcShort( 0x18 ), /* x86 Stack size/offset = 24 */ +/* 1084 */ NdrFcShort( 0x8 ), /* 8 */ +/* 1086 */ NdrFcShort( 0x24 ), /* 36 */ +/* 1088 */ 0x46, /* Oi2 Flags: clt must size, has return, has ext, */ 0x5, /* 5 */ -/* 1078 */ 0x8, /* 8 */ +/* 1090 */ 0x8, /* 8 */ 0x45, /* Ext Flags: new corr desc, srv corr check, has range on conformance */ -/* 1080 */ NdrFcShort( 0x0 ), /* 0 */ -/* 1082 */ NdrFcShort( 0x1 ), /* 1 */ -/* 1084 */ NdrFcShort( 0x0 ), /* 0 */ +/* 1092 */ NdrFcShort( 0x0 ), /* 0 */ +/* 1094 */ NdrFcShort( 0x1 ), /* 1 */ +/* 1096 */ NdrFcShort( 0x0 ), /* 0 */ /* Parameter v3 */ -/* 1086 */ NdrFcShort( 0x8b ), /* Flags: must size, must free, in, by val, */ -/* 1088 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */ -/* 1090 */ NdrFcShort( 0x2a ), /* Type Offset=42 */ +/* 1098 */ NdrFcShort( 0x8b ), /* Flags: must size, must free, in, by val, */ +/* 1100 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */ +/* 1102 */ NdrFcShort( 0x2a ), /* Type Offset=42 */ /* Parameter message */ -/* 1092 */ NdrFcShort( 0x8b ), /* Flags: must size, must free, in, by val, */ -/* 1094 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */ -/* 1096 */ NdrFcShort( 0x2a ), /* Type Offset=42 */ +/* 1104 */ NdrFcShort( 0x8b ), /* Flags: must size, must free, in, by val, */ +/* 1106 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */ +/* 1108 */ NdrFcShort( 0x2a ), /* Type Offset=42 */ /* Parameter AddType */ -/* 1098 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */ -/* 1100 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */ -/* 1102 */ 0x8, /* FC_LONG */ +/* 1110 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */ +/* 1112 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */ +/* 1114 */ 0x8, /* FC_LONG */ 0x0, /* 0 */ /* Parameter __result */ -/* 1104 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */ -/* 1106 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */ -/* 1108 */ 0x8, /* FC_LONG */ +/* 1116 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */ +/* 1118 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */ +/* 1120 */ 0x8, /* FC_LONG */ 0x0, /* 0 */ /* Return value */ -/* 1110 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ -/* 1112 */ NdrFcShort( 0x14 ), /* x86 Stack size/offset = 20 */ -/* 1114 */ 0x8, /* FC_LONG */ +/* 1122 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ +/* 1124 */ NdrFcShort( 0x14 ), /* x86 Stack size/offset = 20 */ +/* 1126 */ 0x8, /* FC_LONG */ 0x0, /* 0 */ /* Procedure CGetWeChatVer */ -/* 1116 */ 0x33, /* FC_AUTO_HANDLE */ +/* 1128 */ 0x33, /* FC_AUTO_HANDLE */ 0x6c, /* Old Flags: object, Oi2 */ -/* 1118 */ NdrFcLong( 0x0 ), /* 0 */ -/* 1122 */ NdrFcShort( 0x21 ), /* 33 */ -/* 1124 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */ -/* 1126 */ NdrFcShort( 0x0 ), /* 0 */ -/* 1128 */ NdrFcShort( 0x8 ), /* 8 */ -/* 1130 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */ +/* 1130 */ NdrFcLong( 0x0 ), /* 0 */ +/* 1134 */ NdrFcShort( 0x21 ), /* 33 */ +/* 1136 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */ +/* 1138 */ NdrFcShort( 0x0 ), /* 0 */ +/* 1140 */ NdrFcShort( 0x8 ), /* 8 */ +/* 1142 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */ 0x2, /* 2 */ -/* 1132 */ 0x8, /* 8 */ +/* 1144 */ 0x8, /* 8 */ 0x43, /* Ext Flags: new corr desc, clt corr check, has range on conformance */ -/* 1134 */ NdrFcShort( 0x1 ), /* 1 */ -/* 1136 */ NdrFcShort( 0x0 ), /* 0 */ -/* 1138 */ NdrFcShort( 0x0 ), /* 0 */ +/* 1146 */ NdrFcShort( 0x1 ), /* 1 */ +/* 1148 */ NdrFcShort( 0x0 ), /* 0 */ +/* 1150 */ NdrFcShort( 0x0 ), /* 0 */ /* Parameter __result */ -/* 1140 */ NdrFcShort( 0x2113 ), /* Flags: must size, must free, out, simple ref, srv alloc size=8 */ -/* 1142 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */ -/* 1144 */ NdrFcShort( 0x4ba ), /* Type Offset=1210 */ +/* 1152 */ NdrFcShort( 0x2113 ), /* Flags: must size, must free, out, simple ref, srv alloc size=8 */ +/* 1154 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */ +/* 1156 */ NdrFcShort( 0x4ba ), /* Type Offset=1210 */ /* Return value */ -/* 1146 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ -/* 1148 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */ -/* 1150 */ 0x8, /* FC_LONG */ +/* 1158 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ +/* 1160 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */ +/* 1162 */ 0x8, /* FC_LONG */ 0x0, /* 0 */ /* Procedure CStartWeChat */ -/* 1152 */ 0x33, /* FC_AUTO_HANDLE */ +/* 1164 */ 0x33, /* FC_AUTO_HANDLE */ 0x6c, /* Old Flags: object, Oi2 */ -/* 1154 */ NdrFcLong( 0x0 ), /* 0 */ -/* 1158 */ NdrFcShort( 0x22 ), /* 34 */ -/* 1160 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */ -/* 1162 */ NdrFcShort( 0x0 ), /* 0 */ -/* 1164 */ NdrFcShort( 0x24 ), /* 36 */ -/* 1166 */ 0x44, /* Oi2 Flags: has return, has ext, */ +/* 1166 */ NdrFcLong( 0x0 ), /* 0 */ +/* 1170 */ NdrFcShort( 0x22 ), /* 34 */ +/* 1172 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */ +/* 1174 */ NdrFcShort( 0x0 ), /* 0 */ +/* 1176 */ NdrFcShort( 0x24 ), /* 36 */ +/* 1178 */ 0x44, /* Oi2 Flags: has return, has ext, */ 0x2, /* 2 */ -/* 1168 */ 0x8, /* 8 */ +/* 1180 */ 0x8, /* 8 */ 0x41, /* Ext Flags: new corr desc, has range on conformance */ -/* 1170 */ NdrFcShort( 0x0 ), /* 0 */ -/* 1172 */ NdrFcShort( 0x0 ), /* 0 */ -/* 1174 */ NdrFcShort( 0x0 ), /* 0 */ +/* 1182 */ NdrFcShort( 0x0 ), /* 0 */ +/* 1184 */ NdrFcShort( 0x0 ), /* 0 */ +/* 1186 */ NdrFcShort( 0x0 ), /* 0 */ /* Parameter __result */ -/* 1176 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */ -/* 1178 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */ -/* 1180 */ 0x8, /* FC_LONG */ +/* 1188 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */ +/* 1190 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */ +/* 1192 */ 0x8, /* FC_LONG */ 0x0, /* 0 */ /* Return value */ -/* 1182 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ -/* 1184 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */ -/* 1186 */ 0x8, /* FC_LONG */ +/* 1194 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ +/* 1196 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */ +/* 1198 */ 0x8, /* FC_LONG */ 0x0, /* 0 */ /* Procedure CSearchContactByNet */ -/* 1188 */ 0x33, /* FC_AUTO_HANDLE */ +/* 1200 */ 0x33, /* FC_AUTO_HANDLE */ 0x6c, /* Old Flags: object, Oi2 */ -/* 1190 */ NdrFcLong( 0x0 ), /* 0 */ -/* 1194 */ NdrFcShort( 0x23 ), /* 35 */ -/* 1196 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */ -/* 1198 */ NdrFcShort( 0x0 ), /* 0 */ -/* 1200 */ NdrFcShort( 0x8 ), /* 8 */ -/* 1202 */ 0x47, /* Oi2 Flags: srv must size, clt must size, has return, has ext, */ +/* 1202 */ NdrFcLong( 0x0 ), /* 0 */ +/* 1206 */ NdrFcShort( 0x23 ), /* 35 */ +/* 1208 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */ +/* 1210 */ NdrFcShort( 0x0 ), /* 0 */ +/* 1212 */ NdrFcShort( 0x8 ), /* 8 */ +/* 1214 */ 0x47, /* Oi2 Flags: srv must size, clt must size, has return, has ext, */ 0x3, /* 3 */ -/* 1204 */ 0x8, /* 8 */ +/* 1216 */ 0x8, /* 8 */ 0x47, /* Ext Flags: new corr desc, clt corr check, srv corr check, has range on conformance */ -/* 1206 */ NdrFcShort( 0x1 ), /* 1 */ -/* 1208 */ NdrFcShort( 0x1 ), /* 1 */ -/* 1210 */ NdrFcShort( 0x0 ), /* 0 */ +/* 1218 */ NdrFcShort( 0x1 ), /* 1 */ +/* 1220 */ NdrFcShort( 0x1 ), /* 1 */ +/* 1222 */ NdrFcShort( 0x0 ), /* 0 */ /* Parameter keyword */ -/* 1212 */ NdrFcShort( 0x8b ), /* Flags: must size, must free, in, by val, */ -/* 1214 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */ -/* 1216 */ NdrFcShort( 0x2a ), /* Type Offset=42 */ +/* 1224 */ NdrFcShort( 0x8b ), /* Flags: must size, must free, in, by val, */ +/* 1226 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */ +/* 1228 */ NdrFcShort( 0x2a ), /* Type Offset=42 */ /* Parameter __result */ -/* 1218 */ NdrFcShort( 0x4113 ), /* Flags: must size, must free, out, simple ref, srv alloc size=16 */ -/* 1220 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */ -/* 1222 */ NdrFcShort( 0x4ac ), /* Type Offset=1196 */ +/* 1230 */ NdrFcShort( 0x4113 ), /* Flags: must size, must free, out, simple ref, srv alloc size=16 */ +/* 1232 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */ +/* 1234 */ NdrFcShort( 0x4ac ), /* Type Offset=1196 */ /* Return value */ -/* 1224 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ -/* 1226 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */ -/* 1228 */ 0x8, /* FC_LONG */ +/* 1236 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ +/* 1238 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */ +/* 1240 */ 0x8, /* FC_LONG */ 0x0, /* 0 */ /* Procedure CAddBrandContact */ -/* 1230 */ 0x33, /* FC_AUTO_HANDLE */ +/* 1242 */ 0x33, /* FC_AUTO_HANDLE */ 0x6c, /* Old Flags: object, Oi2 */ -/* 1232 */ NdrFcLong( 0x0 ), /* 0 */ -/* 1236 */ NdrFcShort( 0x24 ), /* 36 */ -/* 1238 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */ -/* 1240 */ NdrFcShort( 0x0 ), /* 0 */ -/* 1242 */ NdrFcShort( 0x24 ), /* 36 */ -/* 1244 */ 0x46, /* Oi2 Flags: clt must size, has return, has ext, */ +/* 1244 */ NdrFcLong( 0x0 ), /* 0 */ +/* 1248 */ NdrFcShort( 0x24 ), /* 36 */ +/* 1250 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */ +/* 1252 */ NdrFcShort( 0x0 ), /* 0 */ +/* 1254 */ NdrFcShort( 0x24 ), /* 36 */ +/* 1256 */ 0x46, /* Oi2 Flags: clt must size, has return, has ext, */ 0x3, /* 3 */ -/* 1246 */ 0x8, /* 8 */ +/* 1258 */ 0x8, /* 8 */ 0x45, /* Ext Flags: new corr desc, srv corr check, has range on conformance */ -/* 1248 */ NdrFcShort( 0x0 ), /* 0 */ -/* 1250 */ NdrFcShort( 0x1 ), /* 1 */ -/* 1252 */ NdrFcShort( 0x0 ), /* 0 */ +/* 1260 */ NdrFcShort( 0x0 ), /* 0 */ +/* 1262 */ NdrFcShort( 0x1 ), /* 1 */ +/* 1264 */ NdrFcShort( 0x0 ), /* 0 */ /* Parameter PublicId */ -/* 1254 */ NdrFcShort( 0x8b ), /* Flags: must size, must free, in, by val, */ -/* 1256 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */ -/* 1258 */ NdrFcShort( 0x2a ), /* Type Offset=42 */ +/* 1266 */ NdrFcShort( 0x8b ), /* Flags: must size, must free, in, by val, */ +/* 1268 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */ +/* 1270 */ NdrFcShort( 0x2a ), /* Type Offset=42 */ /* Parameter __result */ -/* 1260 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */ -/* 1262 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */ -/* 1264 */ 0x8, /* FC_LONG */ +/* 1272 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */ +/* 1274 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */ +/* 1276 */ 0x8, /* FC_LONG */ 0x0, /* 0 */ /* Return value */ -/* 1266 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ -/* 1268 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */ -/* 1270 */ 0x8, /* FC_LONG */ +/* 1278 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ +/* 1280 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */ +/* 1282 */ 0x8, /* FC_LONG */ 0x0, /* 0 */ /* Procedure CHookVoiceMsg */ -/* 1272 */ 0x33, /* FC_AUTO_HANDLE */ +/* 1284 */ 0x33, /* FC_AUTO_HANDLE */ 0x6c, /* Old Flags: object, Oi2 */ -/* 1274 */ NdrFcLong( 0x0 ), /* 0 */ -/* 1278 */ NdrFcShort( 0x25 ), /* 37 */ -/* 1280 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */ -/* 1282 */ NdrFcShort( 0x0 ), /* 0 */ -/* 1284 */ NdrFcShort( 0x24 ), /* 36 */ -/* 1286 */ 0x46, /* Oi2 Flags: clt must size, has return, has ext, */ +/* 1286 */ NdrFcLong( 0x0 ), /* 0 */ +/* 1290 */ NdrFcShort( 0x25 ), /* 37 */ +/* 1292 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */ +/* 1294 */ NdrFcShort( 0x0 ), /* 0 */ +/* 1296 */ NdrFcShort( 0x24 ), /* 36 */ +/* 1298 */ 0x46, /* Oi2 Flags: clt must size, has return, has ext, */ 0x3, /* 3 */ -/* 1288 */ 0x8, /* 8 */ +/* 1300 */ 0x8, /* 8 */ 0x45, /* Ext Flags: new corr desc, srv corr check, has range on conformance */ -/* 1290 */ NdrFcShort( 0x0 ), /* 0 */ -/* 1292 */ NdrFcShort( 0x1 ), /* 1 */ -/* 1294 */ NdrFcShort( 0x0 ), /* 0 */ +/* 1302 */ NdrFcShort( 0x0 ), /* 0 */ +/* 1304 */ NdrFcShort( 0x1 ), /* 1 */ +/* 1306 */ NdrFcShort( 0x0 ), /* 0 */ /* Parameter savepath */ -/* 1296 */ NdrFcShort( 0x8b ), /* Flags: must size, must free, in, by val, */ -/* 1298 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */ -/* 1300 */ NdrFcShort( 0x2a ), /* Type Offset=42 */ +/* 1308 */ NdrFcShort( 0x8b ), /* Flags: must size, must free, in, by val, */ +/* 1310 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */ +/* 1312 */ NdrFcShort( 0x2a ), /* Type Offset=42 */ /* Parameter __result */ -/* 1302 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */ -/* 1304 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */ -/* 1306 */ 0x8, /* FC_LONG */ +/* 1314 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */ +/* 1316 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */ +/* 1318 */ 0x8, /* FC_LONG */ 0x0, /* 0 */ /* Return value */ -/* 1308 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ -/* 1310 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */ -/* 1312 */ 0x8, /* FC_LONG */ +/* 1320 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ +/* 1322 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */ +/* 1324 */ 0x8, /* FC_LONG */ 0x0, /* 0 */ /* Procedure CUnHookVoiceMsg */ -/* 1314 */ 0x33, /* FC_AUTO_HANDLE */ +/* 1326 */ 0x33, /* FC_AUTO_HANDLE */ 0x6c, /* Old Flags: object, Oi2 */ -/* 1316 */ NdrFcLong( 0x0 ), /* 0 */ -/* 1320 */ NdrFcShort( 0x26 ), /* 38 */ -/* 1322 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */ -/* 1324 */ NdrFcShort( 0x0 ), /* 0 */ -/* 1326 */ NdrFcShort( 0x24 ), /* 36 */ -/* 1328 */ 0x44, /* Oi2 Flags: has return, has ext, */ +/* 1328 */ NdrFcLong( 0x0 ), /* 0 */ +/* 1332 */ NdrFcShort( 0x26 ), /* 38 */ +/* 1334 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */ +/* 1336 */ NdrFcShort( 0x0 ), /* 0 */ +/* 1338 */ NdrFcShort( 0x24 ), /* 36 */ +/* 1340 */ 0x44, /* Oi2 Flags: has return, has ext, */ 0x2, /* 2 */ -/* 1330 */ 0x8, /* 8 */ +/* 1342 */ 0x8, /* 8 */ 0x41, /* Ext Flags: new corr desc, has range on conformance */ -/* 1332 */ NdrFcShort( 0x0 ), /* 0 */ -/* 1334 */ NdrFcShort( 0x0 ), /* 0 */ -/* 1336 */ NdrFcShort( 0x0 ), /* 0 */ +/* 1344 */ NdrFcShort( 0x0 ), /* 0 */ +/* 1346 */ NdrFcShort( 0x0 ), /* 0 */ +/* 1348 */ NdrFcShort( 0x0 ), /* 0 */ /* Parameter __result */ -/* 1338 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */ -/* 1340 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */ -/* 1342 */ 0x8, /* FC_LONG */ +/* 1350 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */ +/* 1352 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */ +/* 1354 */ 0x8, /* FC_LONG */ 0x0, /* 0 */ /* Return value */ -/* 1344 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ -/* 1346 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */ -/* 1348 */ 0x8, /* FC_LONG */ +/* 1356 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ +/* 1358 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */ +/* 1360 */ 0x8, /* FC_LONG */ 0x0, /* 0 */ /* Procedure CHookImageMsg */ -/* 1350 */ 0x33, /* FC_AUTO_HANDLE */ +/* 1362 */ 0x33, /* FC_AUTO_HANDLE */ 0x6c, /* Old Flags: object, Oi2 */ -/* 1352 */ NdrFcLong( 0x0 ), /* 0 */ -/* 1356 */ NdrFcShort( 0x27 ), /* 39 */ -/* 1358 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */ -/* 1360 */ NdrFcShort( 0x0 ), /* 0 */ -/* 1362 */ NdrFcShort( 0x24 ), /* 36 */ -/* 1364 */ 0x46, /* Oi2 Flags: clt must size, has return, has ext, */ +/* 1364 */ NdrFcLong( 0x0 ), /* 0 */ +/* 1368 */ NdrFcShort( 0x27 ), /* 39 */ +/* 1370 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */ +/* 1372 */ NdrFcShort( 0x0 ), /* 0 */ +/* 1374 */ NdrFcShort( 0x24 ), /* 36 */ +/* 1376 */ 0x46, /* Oi2 Flags: clt must size, has return, has ext, */ 0x3, /* 3 */ -/* 1366 */ 0x8, /* 8 */ +/* 1378 */ 0x8, /* 8 */ 0x45, /* Ext Flags: new corr desc, srv corr check, has range on conformance */ -/* 1368 */ NdrFcShort( 0x0 ), /* 0 */ -/* 1370 */ NdrFcShort( 0x1 ), /* 1 */ -/* 1372 */ NdrFcShort( 0x0 ), /* 0 */ +/* 1380 */ NdrFcShort( 0x0 ), /* 0 */ +/* 1382 */ NdrFcShort( 0x1 ), /* 1 */ +/* 1384 */ NdrFcShort( 0x0 ), /* 0 */ /* Parameter savepath */ -/* 1374 */ NdrFcShort( 0x8b ), /* Flags: must size, must free, in, by val, */ -/* 1376 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */ -/* 1378 */ NdrFcShort( 0x2a ), /* Type Offset=42 */ +/* 1386 */ NdrFcShort( 0x8b ), /* Flags: must size, must free, in, by val, */ +/* 1388 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */ +/* 1390 */ NdrFcShort( 0x2a ), /* Type Offset=42 */ /* Parameter __result */ -/* 1380 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */ -/* 1382 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */ -/* 1384 */ 0x8, /* FC_LONG */ +/* 1392 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */ +/* 1394 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */ +/* 1396 */ 0x8, /* FC_LONG */ 0x0, /* 0 */ /* Return value */ -/* 1386 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ -/* 1388 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */ -/* 1390 */ 0x8, /* FC_LONG */ +/* 1398 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ +/* 1400 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */ +/* 1402 */ 0x8, /* FC_LONG */ 0x0, /* 0 */ /* Procedure CUnHookImageMsg */ -/* 1392 */ 0x33, /* FC_AUTO_HANDLE */ +/* 1404 */ 0x33, /* FC_AUTO_HANDLE */ 0x6c, /* Old Flags: object, Oi2 */ -/* 1394 */ NdrFcLong( 0x0 ), /* 0 */ -/* 1398 */ NdrFcShort( 0x28 ), /* 40 */ -/* 1400 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */ -/* 1402 */ NdrFcShort( 0x0 ), /* 0 */ -/* 1404 */ NdrFcShort( 0x24 ), /* 36 */ -/* 1406 */ 0x44, /* Oi2 Flags: has return, has ext, */ +/* 1406 */ NdrFcLong( 0x0 ), /* 0 */ +/* 1410 */ NdrFcShort( 0x28 ), /* 40 */ +/* 1412 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */ +/* 1414 */ NdrFcShort( 0x0 ), /* 0 */ +/* 1416 */ NdrFcShort( 0x24 ), /* 36 */ +/* 1418 */ 0x44, /* Oi2 Flags: has return, has ext, */ 0x2, /* 2 */ -/* 1408 */ 0x8, /* 8 */ +/* 1420 */ 0x8, /* 8 */ 0x41, /* Ext Flags: new corr desc, has range on conformance */ -/* 1410 */ NdrFcShort( 0x0 ), /* 0 */ -/* 1412 */ NdrFcShort( 0x0 ), /* 0 */ -/* 1414 */ NdrFcShort( 0x0 ), /* 0 */ +/* 1422 */ NdrFcShort( 0x0 ), /* 0 */ +/* 1424 */ NdrFcShort( 0x0 ), /* 0 */ +/* 1426 */ NdrFcShort( 0x0 ), /* 0 */ /* Parameter __result */ -/* 1416 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */ -/* 1418 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */ -/* 1420 */ 0x8, /* FC_LONG */ +/* 1428 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */ +/* 1430 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */ +/* 1432 */ 0x8, /* FC_LONG */ 0x0, /* 0 */ /* Return value */ -/* 1422 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ -/* 1424 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */ -/* 1426 */ 0x8, /* FC_LONG */ +/* 1434 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ +/* 1436 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */ +/* 1438 */ 0x8, /* FC_LONG */ 0x0, /* 0 */ /* Procedure CChangeWeChatVer */ -/* 1428 */ 0x33, /* FC_AUTO_HANDLE */ +/* 1440 */ 0x33, /* FC_AUTO_HANDLE */ 0x6c, /* Old Flags: object, Oi2 */ -/* 1430 */ NdrFcLong( 0x0 ), /* 0 */ -/* 1434 */ NdrFcShort( 0x29 ), /* 41 */ -/* 1436 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */ -/* 1438 */ NdrFcShort( 0x0 ), /* 0 */ -/* 1440 */ NdrFcShort( 0x24 ), /* 36 */ -/* 1442 */ 0x46, /* Oi2 Flags: clt must size, has return, has ext, */ +/* 1442 */ NdrFcLong( 0x0 ), /* 0 */ +/* 1446 */ NdrFcShort( 0x29 ), /* 41 */ +/* 1448 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */ +/* 1450 */ NdrFcShort( 0x0 ), /* 0 */ +/* 1452 */ NdrFcShort( 0x24 ), /* 36 */ +/* 1454 */ 0x46, /* Oi2 Flags: clt must size, has return, has ext, */ 0x3, /* 3 */ -/* 1444 */ 0x8, /* 8 */ +/* 1456 */ 0x8, /* 8 */ 0x45, /* Ext Flags: new corr desc, srv corr check, has range on conformance */ -/* 1446 */ NdrFcShort( 0x0 ), /* 0 */ -/* 1448 */ NdrFcShort( 0x1 ), /* 1 */ -/* 1450 */ NdrFcShort( 0x0 ), /* 0 */ +/* 1458 */ NdrFcShort( 0x0 ), /* 0 */ +/* 1460 */ NdrFcShort( 0x1 ), /* 1 */ +/* 1462 */ NdrFcShort( 0x0 ), /* 0 */ /* Parameter verStr */ -/* 1452 */ NdrFcShort( 0x8b ), /* Flags: must size, must free, in, by val, */ -/* 1454 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */ -/* 1456 */ NdrFcShort( 0x2a ), /* Type Offset=42 */ +/* 1464 */ NdrFcShort( 0x8b ), /* Flags: must size, must free, in, by val, */ +/* 1466 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */ +/* 1468 */ NdrFcShort( 0x2a ), /* Type Offset=42 */ /* Parameter __result */ -/* 1458 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */ -/* 1460 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */ -/* 1462 */ 0x8, /* FC_LONG */ +/* 1470 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */ +/* 1472 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */ +/* 1474 */ 0x8, /* FC_LONG */ 0x0, /* 0 */ /* Return value */ -/* 1464 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ -/* 1466 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */ -/* 1468 */ 0x8, /* FC_LONG */ +/* 1476 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ +/* 1478 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */ +/* 1480 */ 0x8, /* FC_LONG */ 0x0, /* 0 */ 0x0 @@ -2245,35 +2258,35 @@ static const unsigned short IWeChatRobot_FormatStringOffsetTable[] = 120, 168, 216, - 276, - 330, - 366, - 402, - 444, - 480, - 516, - 558, - 594, - 630, - 666, - 702, - 738, - 792, - 834, - 870, - 918, - 966, - 1014, - 1062, - 1116, - 1152, - 1188, - 1230, - 1272, - 1314, - 1350, - 1392, - 1428 + 282, + 336, + 372, + 408, + 450, + 486, + 522, + 564, + 600, + 636, + 672, + 708, + 744, + 804, + 846, + 882, + 930, + 978, + 1026, + 1074, + 1128, + 1164, + 1200, + 1242, + 1284, + 1326, + 1362, + 1404, + 1440 }; static const MIDL_STUBLESS_PROXY_INFO IWeChatRobot_ProxyInfo = diff --git a/DWeChatRobot/DWeChatRobot.vcxproj b/DWeChatRobot/DWeChatRobot.vcxproj index 83be836..a6237b7 100644 --- a/DWeChatRobot/DWeChatRobot.vcxproj +++ b/DWeChatRobot/DWeChatRobot.vcxproj @@ -158,6 +158,7 @@ + @@ -166,6 +167,7 @@ + @@ -184,6 +186,7 @@ + @@ -199,6 +202,7 @@ + diff --git a/DWeChatRobot/DWeChatRobot.vcxproj.filters b/DWeChatRobot/DWeChatRobot.vcxproj.filters index 45b3d80..cb5720d 100644 --- a/DWeChatRobot/DWeChatRobot.vcxproj.filters +++ b/DWeChatRobot/DWeChatRobot.vcxproj.filters @@ -85,6 +85,12 @@ {820d8228-ee6c-43ad-87ec-4e349d7a549a} + + {cf1ddfc9-e181-43e5-ba92-998439becadb} + + + {2e1bef8d-a840-4318-a728-29f1e8e68336} + @@ -153,6 +159,12 @@ 微信版本 + + 好友相关\删除好友 + + + 发送消息\发送小程序 + @@ -233,5 +245,11 @@ 微信版本 + + 好友相关\删除好友 + + + 发送消息\发送小程序 + \ No newline at end of file diff --git a/DWeChatRobot/DeleteUser.cpp b/DWeChatRobot/DeleteUser.cpp new file mode 100644 index 0000000..e9a058c --- /dev/null +++ b/DWeChatRobot/DeleteUser.cpp @@ -0,0 +1,32 @@ +#include "pch.h" + +#define DeleteUserCall1Offset 0x04417570 - 0x04360000 +#define DeleteUserCall2Offset 0x0441D570 - 0x04360000 +#define DeleteUserCall3Offset 0x047C8570 - 0x04360000 + +BOOL __stdcall DeleteUser(wchar_t* wxid) { + DWORD WeChatWinBase = GetWeChatWinBase(); + DWORD DeleteUserCall1 = WeChatWinBase + DeleteUserCall1Offset; + DWORD DeleteUserCall2 = WeChatWinBase + DeleteUserCall2Offset; + DWORD DeleteUserCall3 = WeChatWinBase + DeleteUserCall3Offset; + + WxBaseStruct pwxid(wxid); + char buffer[0x70] = { 0 }; + BOOL isSuccess = 0x0; + __asm { + pushad; + pushfd; + lea ecx, buffer; + call DeleteUserCall1; + call DeleteUserCall2; + push ecx; + lea esi, pwxid; + push esi; + mov ecx, eax; + call DeleteUserCall3; + mov isSuccess, eax; + popfd; + popad; + } + return isSuccess; +} \ No newline at end of file diff --git a/DWeChatRobot/DeleteUser.h b/DWeChatRobot/DeleteUser.h new file mode 100644 index 0000000..225175d --- /dev/null +++ b/DWeChatRobot/DeleteUser.h @@ -0,0 +1,3 @@ +#pragma once +#include +BOOL __stdcall DeleteUser(wchar_t* wxid); \ No newline at end of file diff --git a/DWeChatRobot/SendAppMsg.cpp b/DWeChatRobot/SendAppMsg.cpp new file mode 100644 index 0000000..eb16285 --- /dev/null +++ b/DWeChatRobot/SendAppMsg.cpp @@ -0,0 +1,51 @@ +#include "pch.h" + +#define SendAppMsgCall1Offset 0x04421340 - 0x04360000 +#define SendAppMsgCall2Offset 0x04AD0980 - 0x04360000 +#define SendAppMsgCall3Offset 0x04B1BB30 - 0x04360000 + +struct VectorStruct { +#ifdef _DEBUG + DWORD v_head; +#endif + DWORD v_data; + DWORD v_end1; + DWORD v_end2; +}; + +BOOL __stdcall SendAppMsg(wchar_t* wxid,wchar_t* appid) { + DWORD WeChatWinBase = GetWeChatWinBase(); + DWORD SendAppMsgCall1 = WeChatWinBase + SendAppMsgCall1Offset; + DWORD SendAppMsgCall2 = WeChatWinBase + SendAppMsgCall2Offset; + DWORD SendAppMsgCall3 = WeChatWinBase + SendAppMsgCall3Offset; + vector receiver; + VectorStruct* vs = (VectorStruct*)&receiver; + DWORD preceiver = (DWORD)&vs->v_data; + WxBaseStruct pwxid(wxid); + receiver.push_back(pwxid); + WxBaseStruct pappid(appid); + char buffer[0x1E0] = { 0 }; + BOOL isSuccess = 0x0; + __asm { + pushad; + pushfd; + push 0x60966; + sub esp, 0xC; + mov esi, dword ptr[SendAppMsgCall3]; + mov ecx, esp; + mov eax, dword ptr[preceiver]; + push eax; + call SendAppMsgCall1; + sub esp, 0x14; + lea eax, pappid; + mov ecx, esp; + push eax; + call SendAppMsgCall2; + lea ecx, buffer; + call SendAppMsgCall3; + mov isSuccess, eax; + popfd; + popad; + } + return isSuccess; +} \ No newline at end of file diff --git a/DWeChatRobot/SendAppMsg.h b/DWeChatRobot/SendAppMsg.h new file mode 100644 index 0000000..f09eea2 --- /dev/null +++ b/DWeChatRobot/SendAppMsg.h @@ -0,0 +1,3 @@ +#pragma once +#include +BOOL __stdcall SendAppMsg(wchar_t* wxid, wchar_t* appid); \ No newline at end of file diff --git a/DWeChatRobot/SendArticle.cpp b/DWeChatRobot/SendArticle.cpp index d9e2496..0cec23f 100644 --- a/DWeChatRobot/SendArticle.cpp +++ b/DWeChatRobot/SendArticle.cpp @@ -28,6 +28,7 @@ struct SendArticleStruct { DWORD title; DWORD abstract; DWORD url; + DWORD imgpath; }; /* @@ -41,7 +42,8 @@ VOID SendArticleRemote(LPVOID lparameter) { wchar_t* title = (wchar_t*)sas->title; wchar_t* abstract = (wchar_t*)sas->abstract; wchar_t* url = (wchar_t*)sas->url; - SendArticle(wxid,title,abstract,url); + wchar_t* imgpath = sas->imgpath ? (wchar_t*)sas->imgpath : NULL; + SendArticle(wxid,title,abstract,url, imgpath); } /* @@ -72,7 +74,7 @@ DWORD GetSelfWxIdAddr() { * url * returnBOOLɹ`1`ʧܷ`0` */ -BOOL __stdcall SendArticle(wchar_t* wxid,wchar_t* title, wchar_t* abstract, wchar_t* url) { +BOOL __stdcall SendArticle(wchar_t* wxid,wchar_t* title, wchar_t* abstract, wchar_t* url,wchar_t* imgpath) { DWORD WeChatWinBase = GetWeChatWinBase(); DWORD SendArticleCall1 = WeChatWinBase + SendArticleCall1Offset; DWORD SendArticleCall2 = WeChatWinBase + SendArticleCall2Offset; @@ -99,6 +101,12 @@ BOOL __stdcall SendArticle(wchar_t* wxid,wchar_t* title, wchar_t* abstract, wcha WxBaseStruct pXml(xmlbuffer); WxBaseStruct pReceiver(wxid); WxString imgbuffer = { 0 }; + wcout << imgpath << endl; + if (imgpath) { + imgbuffer.buffer = imgpath; + imgbuffer.length = wcslen(imgpath); + imgbuffer.maxLength = wcslen(imgpath) * 2; + } WxString nullStruct = { 0 }; char buffer[0xFF0] = { 0 }; DWORD isSuccess = 0x0; diff --git a/DWeChatRobot/SendArticle.h b/DWeChatRobot/SendArticle.h index 5ce0858..5df065b 100644 --- a/DWeChatRobot/SendArticle.h +++ b/DWeChatRobot/SendArticle.h @@ -1,4 +1,4 @@ #pragma once #include extern "C" __declspec(dllexport) VOID SendArticleRemote(LPVOID lparameter); -BOOL __stdcall SendArticle(wchar_t* wxid, wchar_t* title, wchar_t* abstract, wchar_t* url); \ No newline at end of file +BOOL __stdcall SendArticle(wchar_t* wxid, wchar_t* title, wchar_t* abstract, wchar_t* url,wchar_t* imgpath); \ No newline at end of file diff --git a/DWeChatRobot/SendAtText.cpp b/DWeChatRobot/SendAtText.cpp index d9769e2..59ee477 100644 --- a/DWeChatRobot/SendAtText.cpp +++ b/DWeChatRobot/SendAtText.cpp @@ -18,6 +18,7 @@ struct SendAtTextStruct DWORD wxidlist; DWORD wxmsg; DWORD length; + BOOL AutoNickName; }; /* @@ -45,10 +46,10 @@ void SendAtTextRemote(LPVOID lpParameter) { wchar_t* wsTextMsg = (WCHAR*)rp->wxmsg; if (rp->length == 0) return; - else if(rp->length == 1) - SendAtText(wsChatRoomId, (DWORD*)&rp->wxidlist, wsTextMsg,rp->length); + else if (rp->length == 1) + SendAtText(wsChatRoomId, (DWORD*)&rp->wxidlist, wsTextMsg, rp->length, rp->AutoNickName); else - SendAtText(wsChatRoomId, (DWORD*)rp->wxidlist, wsTextMsg, rp->length); + SendAtText(wsChatRoomId, (DWORD*)rp->wxidlist, wsTextMsg, rp->length, rp->AutoNickName); } /* @@ -57,9 +58,10 @@ void SendAtTextRemote(LPVOID lpParameter) { * wsWxIdصб * wsTextMsg͵Ϣ * lengthص +* AutoNickNameǷԶ䱻dz * returnvoid */ -void __stdcall SendAtText(wchar_t* wsChatRoomId, DWORD wsWxId[], wchar_t* wsTextMsg,int length) { +void __stdcall SendAtText(wchar_t* wsChatRoomId, DWORD wsWxId[], wchar_t* wsTextMsg,int length,BOOL AutoNickName) { // +1Dzһսṹ壬`AtStruct`βַ趨Ϊսṹ׵ַ WxString* AtUsers = new WxString[length + 1]; wstring AtMessage = L""; @@ -77,8 +79,10 @@ void __stdcall SendAtText(wchar_t* wsChatRoomId, DWORD wsWxId[], wchar_t* wsText temp.buffer = (wchar_t*)wsWxId[i]; temp.length = wcslen((wchar_t*)wsWxId[i]); temp.maxLength = wcslen((wchar_t*)wsWxId[i]) * 2; - memcpy(&AtUsers[querySuccess],&temp,sizeof(WxString)); - AtMessage = AtMessage + L"@" + nickname + L" "; + memcpy(&AtUsers[querySuccess], &temp, sizeof(WxString)); + if (AutoNickName) { + AtMessage = AtMessage + L"@" + nickname + L" "; + } querySuccess++; } AtMessage += wsTextMsg; diff --git a/DWeChatRobot/SendAtText.h b/DWeChatRobot/SendAtText.h index ae9891d..fe544c8 100644 --- a/DWeChatRobot/SendAtText.h +++ b/DWeChatRobot/SendAtText.h @@ -1,5 +1,5 @@ #pragma once #include -void __stdcall SendAtText(wchar_t* wsChatRoomId, DWORD wsWxId[], wchar_t* wsTextMsg, int length); +void __stdcall SendAtText(wchar_t* wsChatRoomId, DWORD wsWxId[], wchar_t* wsTextMsg, int length, BOOL AutoNickName); extern "C" __declspec(dllexport) void SendAtTextRemote(LPVOID lpParameter); \ No newline at end of file diff --git a/DWeChatRobot/pch.h b/DWeChatRobot/pch.h index 48de2cc..39abb9b 100644 --- a/DWeChatRobot/pch.h +++ b/DWeChatRobot/pch.h @@ -31,6 +31,8 @@ #include "AddFriend.h" #include "sqlite3.h" #include "wechatver.h" +#include "DeleteUser.h" +#include "SendAppMsg.h" #include #include #endif //PCH_H diff --git a/Python/wxRobot.py b/Python/wxRobot.py index e75deb2..097ba19 100644 --- a/Python/wxRobot.py +++ b/Python/wxRobot.py @@ -30,16 +30,31 @@ class ChatSession(): def SendMp4(self,mp4path): return self.robot.CSendImage(self.chatwith,mp4path) - def SendArticle(self,title,abstract,url): - return self.robot.CSendArticle(self.chatwith,title,abstract,url) + def SendArticle(self,title,abstract,url,imgpath = None): + return self.robot.CSendArticle(self.chatwith,title,abstract,url,imgpath) def SendCard(self,sharedwxid,nickname): return self.robot.CSendCard(self.chatwith,sharedwxid,nickname) - def SendAtText(self,wxid:list or str or tuple,msg): + def SendAtText(self,wxid:list or str or tuple,msg,AutoNickName = True): + """ + Parameters + ---------- + wxid : list or str or tuple + 被艾特人的wxid,列表或字符串. + msg : str + 消息内容. + AutoNickName : BOOL, optional + 是否自动填充被艾特人昵称. + + Returns None + ------- + SendAtText + 发送群艾特消息. + """ if '@chatroom' not in self.chatwith: return 1 - return self.robot.CSendAtText(self.chatwith,wxid,msg) + return self.robot.CSendAtText(self.chatwith,wxid,msg,AutoNickName) class WeChatRobot(): diff --git a/Release/CWeChatRobot.exe b/Release/CWeChatRobot.exe index 986a7e8353e149ff8467cea8bd9c425ca66f68ed..e6ecc3738673d3653b31d97509490c98e5cf5d22 100644 GIT binary patch delta 11934 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
    1D{A@)q-T9`3dMF>*^3NnY-tv79 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 LP_)x>p3DCMz$|>k diff --git a/Release/DWeChatRobot.dll b/Release/DWeChatRobot.dll index cb4657b6aaec83d5095a1a03f3a80cbd2f5800d7..b2c8f23eb059937e1feb30de2fc2e04906ee18ec 100644 GIT binary patch delta 14346 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 -- GitLab