7 Appendix B: Product Behavior

The information in this specification is applicable to the following Microsoft products or supplemental software. References to product versions include updates to those products.

  • Windows XP operating system

  • Windows Server 2003 operating system

  • Windows Vista operating system

  • Windows Server 2008 operating system

  • Windows 7 operating system

  • Windows Server 2008 R2 operating system

  • Windows 8 operating system

  • Windows Server 2012 operating system

  • Windows 8.1 operating system

  • Windows Server 2012 R2 operating system

  • Windows 10 operating system

  • Windows Server 2016 operating system

  • Windows Server operating system

  • Windows Server 2019 operating system

  • Windows Server 2022 operating system

  • Windows 11 operating system

  • Windows Server 2025 operating system

Exceptions, if any, are noted in this section. If an update version, service pack or Knowledge Base (KB) number appears with a product name, the behavior changed in that update. The new behavior also applies to subsequent updates unless otherwise specified. If a product edition appears with the product version, behavior is different in that product edition.

Unless otherwise specified, any statement of optional behavior in this specification that is prescribed using the terms "SHOULD" or "SHOULD NOT" implies product behavior in accordance with the SHOULD or SHOULD NOT prescription. Unless otherwise specified, the term "MAY" implies that the product does not follow the prescription.

<1> Section 2.2.7.2: For print queues using a printer driver with a driver version of 0x00000004 (see cVersion in [MS-RPRN] section 2.2.1.3.1), Windows print servers use AsyncUIBalloon messages to send details about configuration status changes to client UI components. In these messages, the balloonUI element contains exactly one action element (section 2.2.7.2.1). The action element contains the dll attribute "PrintConfig.dll" and the entrypoint attribute "NotifyEntry". The text data in the action element is an XML fragment of the following form:

 <Envelope printer="…" reason="{23bb1328-63de-4293-915b-a6a23d929acb}" detail="…">
   <Schema … />
   …
 </Envelope>

The Envelope element contains the following attributes:

printer: A string containing the name of the print queue whose configuration has changed.

reason: The GUID {23bb1328-63de-4293-915b-a6a23d929acb}.

detail: A GUID provided by the printer driver excluding the GUID {ec8f261f-267c-469f-b5d6-3933023c29cc} which is reserved.

The Envelope element contains one or more Schema elements (section 2.2.8.1.2), each of which represents one of the configuration changes.

<2> Section 2.2.7.2.1: For all Windows versions, the function signature of the method specified by the entrypoint attribute is as follows.

 void entrypoint(void * data);

data: The data from the action element.

Windows clients load the file indicated by the dll attribute as a dynamic linked library and call the method in the library indicated by the entrypoint attribute, passing in data by using the data parameter.

<3> Section 2.2.7.5.1: For all Windows versions, the function signature of the method specified by the entrypoint attribute varies depending on the bidi attribute value, as shown in the following table.

bidi value

 Method prototype

"true"

void * entrypoint(void * data:)

"false"

void entrypoint(void * data:)

data: The data from the customUI element.

Windows clients load the file indicated by the dll attribute as a dynamic linked library and call the method in the library indicated by the entrypoint attribute, passing in data by using the data parameter.

<4> Section 2.2.7.7.1: For all Windows versions, the function signature of the method specified by the entrypoint attribute depends on the bidi attribute value as shown in the following table.

bidi value

 Method prototype

"true"

void * entrypoint(void * data)

"false"

void entrypoint(void * data)

data: The data from the customData element.

Windows clients load the file indicated by the dll attribute as a dynamic linked library and call the method in the library indicated by the entrypoint attribute, passing in data by using the data parameter.

<5> Section 2.2.8.1.2: In Windows, these attributes correspond to printer attributes in the bidirectional communications schema. This schema is a hierarchy of printer attributes, some of which are properties, and the rest are values or value entries. Bidirectional communications interfaces are implemented by printer-specific components. A detailed description of printer drivers and the bidirectional communications schema can be found in [MSDN-MPD] and [MSDN-BIDI].

<6> Section 2.2.8.1.10: In Windows, these attributes correspond to printer attributes in the bidirectional communications schema. This schema is a hierarchy of printer attributes, some of which are properties, and the rest are values or value entries. Bidirectional communications interfaces are implemented by printer-specific components. A detailed description of printer drivers and the bidirectional communications schema can be found in [MSDN-MPD] and [MSDN-BIDI].

<7> Section 3.1.1.4: Opnums reserved for local use apply to Windows as follows.

opnum

Description

2

Not used by Windows.

<8> Section 3.1.1.4.3: When a local client directly calls the local API equivalent of IRPCAsyncNotify_GetNewChannel (CreatePrintAsyncNotifyChannel as described in [MSDN-ASYNC]) without a prior successful call to IRPCAsyncNotify_RegisterClient using the same PRPCREMOTEOBJECT value, the local server fails the call immediately and returns the HRESULT error value ([MS-ERREF] section 2.1.1) 0x8004000D. This action is not supported on Windows XP or Windows Server 2003.

<9> Section 3.1.1.4.3: When a local client directly calls the local API equivalent of IRPCAsyncNotify_GetNewChannel (CreatePrintAsyncNotifyChannel as described in [MSDN-ASYNC]) following a prior call to IRPCAsyncNotify_UnregisterClient using the same PRPCREMOTEOBJECT value, the server fails the call immediately and returns the HRESULT error value ([MS-ERREF] section 2.1.1) 0x8004000E. This action is not supported on Windows XP or Windows Server 2003.

<10> Section 3.1.1.4.5: For all Windows versions, the server by default limits the number of buffered unidirectional notifications to 100.

The default limit of 100 can be changed by creating a REG_DWORD value in the registry at HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows NT\Printers\InternalQueueSizeForUniDiChannel and setting this value to the desired limit for the number of buffered unidirectional notifications. This action is not supported on Windows XP, Windows Server 2003, Windows Vista, or Windows Server 2008.

<11> Section 3.1.1.4.6: When a local client directly calls the local API equivalent of IRPCAsyncNotify_CloseChannel (IPrintAsyncNotifyChannel::CloseChannel as described in [MSDN-ASYNC]) following a successful return from IRPCAsyncNotify_GetNotificationSendResponse with a NULL value returned for the pChannel parameter, or following a prior successful return from IRPCAsyncNotify_CloseChannel, the server fails the call immediately and returns the HRESULT error value ([MS-ERREF] section 2.1.1) 0x80040008. This action is not supported on Windows XP or Windows Server 2003.