<div class="content" name="RpcRemoteFindFirstPrinterChangeNotificationEx" uuid="eb66b221-1c1f-4249-b8bc-c5befec2314d"><p>RpcRemoteFindFirstPrinterChangeNotificationEx creates a
remote change notification object that monitors changes to printer objects and
sends change notifications to a <span><a href="831cd729-be7c-451e-b729-bd8d84ce4d24#gt_3b2da3d1-c159-4399-a6dd-dfd5f76fa2f5" data-linktype="relative-path">print client</a></span> using
either <span><a href="38bf5d2c-e4a7-44b2-b16f-91ff8226f836" data-linktype="relative-path">RpcRouterReplyPrinter (section 3.2.4.1.2)</a></span>
or <span><a href="1b44cb82-95b5-485c-9ec9-0360c3a3ecb0" data-linktype="relative-path">RpcRouterReplyPrinterEx (section 3.2.4.1.4)</a></span>.</p><dl>
<dd>
<div><pre> DWORD RpcRemoteFindFirstPrinterChangeNotificationEx(
   [in] PRINTER_HANDLE hPrinter,
   [in] DWORD fdwFlags,
   [in] DWORD fdwOptions,
   [in, string, unique] wchar_t* pszLocalMachine,
   [in] DWORD dwPrinterLocal,
   [in, unique] RPC_V2_NOTIFY_OPTIONS* pOptions
 );
</pre></div>
</dd></dl><p><b>hPrinter: </b>A handle to a printer or server
object that was opened by <span><a href="bd0bb8d5-26fd-4705-81f5-614d32b9f38f" data-linktype="relative-path">RpcAddPrinter (section 3.1.4.2.3)</a></span>,
<span><a href="3af45717-308f-4b4f-8428-430d12856110" data-linktype="relative-path">RpcAddPrinterEx (section 3.1.4.2.15)</a></span>,
<span><a href="989357e2-446e-4872-bb38-1dce21e1313f" data-linktype="relative-path">RpcOpenPrinter (section 3.1.4.2.2)</a></span>,
or <span><a href="0e81ce18-72b1-46c3-8584-a205393b04ff" data-linktype="relative-path">RpcOpenPrinterEx (section 3.1.4.2.14)</a></span>.</p><p><b>fdwFlags: </b>Flags that specify the conditions
that are required for a change notification object to enter a signaled state. A
change notification MUST occur when one or more of the specified conditions are
met.</p><dl>
<dd>
<p>This parameter specifies a bitwise OR of zero or
more <span><a href="f7e72f6c-8ba3-4573-8a7e-dd12f2cff50e" data-linktype="relative-path">Printer Change
Values (section 2.2.4.13)</a></span>. The rules governing printer
change values are specified in section 2.2.4.13.</p>
</dd></dl><p><b>fdwOptions: </b>The category of printers for which
change notifications are returned. This parameter MUST be one of the supported
values specified in Printer Notification Values (section <span><a href="41d5c622-ec77-49ff-95e3-69b325ce4e77" data-linktype="relative-path">2.2.3.8</a></span>).</p><p><b>pszLocalMachine: </b>A pointer to a string that
represents the name of the client computer. The rules governing server names
are specified in section <span><a href="9b3f8135-7022-4b72-accb-aefcc360c83b" data-linktype="relative-path">2.2.4.16</a></span>.</p><p><b>dwPrinterLocal: </b>An implementation-specific
unique value that MUST be sufficient for the client to determine whether a call
to <span><a href="7fcd3036-d45a-4ec7-b081-f2b860e66676" data-linktype="relative-path">RpcReplyOpenPrinter (section 3.2.4.1.1)</a></span>
by the server is associated with the <i>hPrinter</i> parameter in this call.<a id="Appendix_A_Target_382"></a><a aria-label="Product behavior note 382" href="e81cbc09-ab05-4a32-ae4a-8ec57b436c43#Appendix_A_382" data-linktype="relative-path">&lt;382&gt;</a></p><p><b>pOptions: </b>A pointer to an <span><a href="4599c052-e814-4174-9bd5-00473329a9f8" data-linktype="relative-path">RPC_V2_NOTIFY_OPTIONS (section 2.2.1.13.1)</a></span>
structure that specifies printer or job members that the client listens to for
notifications. For lists of members that can be monitored, see Printer
Notification Values (section 2.2.3.8) and <span><a href="76acb7fb-b63f-4cad-88dd-6920096a2f13" data-linktype="relative-path">Job Notification
Values (section 2.2.3.3)</a></span>.</p><dl>
<dd>
<p>The value of this parameter can be NULL if the value
of <i>fdwFlags</i> is nonzero.</p>
</dd></dl><p><b>Return Values: </b>This method MUST return zero
(ERROR_SUCCESS) to indicate successful completion or a nonzero Windows error
code to indicate failure <span><a href="../ms-erref/1bc92ddf-b79e-413c-bbaa-99a5281a6c90" data-linktype="relative-path">[MS-ERREF]</a></span>.</p><p>Upon receiving this message, the server MUST validate
parameters as follows:</p><ul><li><p><span><span> 
</span></span>Perform the validation steps specified in <span><a href="10bfa8c2-d456-4ad0-912d-e674766a36c8" data-linktype="relative-path">PRINTER_HANDLE
Parameters (section 3.1.4.1.11)</a></span>. This method SHOULD assume
that the handle to the printer or server object can be used without further
access checks.</p>
</li><li><p><span><span> 
</span></span>Verify that a notification object is not already associated with
the current handle.</p>
</li><li><p><span><span> 
</span></span>Verify that either <i>pOptions</i> is not NULL or that the value <i>fdwFlags</i>
is valid and not zero.</p>
</li></ul><p>If parameter validation fails, the server MUST fail the
operation immediately returning a nonzero error response to the client.
Otherwise, the server MUST process the message and compose a response to the
client as follows:</p><ul><li><p><span><span> 
</span></span>Create and initialize a notification object that captures the
notification settings requested by the user.</p>
</li><li><p><span><span> 
</span></span>Create and initialize a notification channel back to the client
over which the server MUST communicate the change notifications. This MUST be
done by calling RpcReplyOpenPrinter on the client specified by the name pointed
to by <i>pszLocalMachine</i>.</p>
</li><li><p><span><span> 
</span></span>Associate the notification object with the context for <i>hPrinter</i>.</p>
</li><li><p><span><span> 
</span></span>After the preceding steps have been performed, the server SHOULD
add the client to the list of notification clients for the printer object or
server object, and it SHOULD notify the client by using RpcRouterReplyPrinter
or RpcRouterReplyPrinterEx when the object changes.</p>
<p>The choice of notification
methods does not depend on whether notifications have been requested using <span><a href="b8b414d9-f1cd-4191-bb6b-87d09ab2fd83" data-linktype="relative-path">RpcRemoteFindFirstPrinterChangeNotification</a></span>
or RpcRemoteFindFirstPrinterChangeNotificationEx. It is based on whether
notifications can be expressed in the <i>fdwFlags</i> parameter of
RpcRouterReplyPrinter alone, or if additional information is required to be
provided using the additional parameters of RpcRouterReplyPrinterEx.</p>
</li><li><p><span><span> 
</span></span>Return the status of the operation.</p>
</li></ul></div>