Prev: Problem running .wmv , when a file system filter driver is ins
Next: Please document setup for new WLK 1.5 IO Cancellation with Direct
From: Dale Ziebarth on 5 May 2010 13:52 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 5 May 2010 13:58
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. |