From: Dale Ziebarth on
During development of a printer driver what appears to be a bug with Vista
spooler (client-side) caching of printer Bidirectional data was discovered.

I have a sample application which demonstrates the problem. Sharing a
printer from Vista to XP works fine, but sharing a printer from XP to Vista
experiences the problem.

The problem is that calling DeletePrinterData then GetPrinterData on the
client side results in a error code 2 (file not found). What should occur
however is that the client side spooler should RpcGetPrinterData to the
server side spooler and the server side perform the GetPrinterDataFromPort
call to the server side Language Monitor. It appears that the ChangeId (see
the MS-RPRN spec) has not been invalidated on the client side when the
registry key deletion occurs such that the next time GetPrinterData is called
the client side thinks that nothing changed on the server side and thus it
does not need to call the RpcGetPrinterData to get the data from the server
side.

I do not know if the same issue exists in Windows 7 or 2008 Server or not.
From: Dale Ziebarth on
The question that I intended to ask was how I could invalidate the
bidirection data cache on the client side such that it thinks the ChangeId on
the server side does not match what the client thinks it is?

Thanks!

"Dale Ziebarth" wrote:

> During development of a printer driver what appears to be a bug with Vista
> spooler (client-side) caching of printer Bidirectional data was discovered.
>
> I have a sample application which demonstrates the problem. Sharing a
> printer from Vista to XP works fine, but sharing a printer from XP to Vista
> experiences the problem.
>
> The problem is that calling DeletePrinterData then GetPrinterData on the
> client side results in a error code 2 (file not found). What should occur
> however is that the client side spooler should RpcGetPrinterData to the
> server side spooler and the server side perform the GetPrinterDataFromPort
> call to the server side Language Monitor. It appears that the ChangeId (see
> the MS-RPRN spec) has not been invalidated on the client side when the
> registry key deletion occurs such that the next time GetPrinterData is called
> the client side thinks that nothing changed on the server side and thus it
> does not need to call the RpcGetPrinterData to get the data from the server
> side.
>
> I do not know if the same issue exists in Windows 7 or 2008 Server or not.