From: Dmitry Timoshkov dmitry@baikal.ru
Signed-off-by: Dmitry Timoshkov dmitry@baikal.ru --- dlls/prntvpt/prntvpt.spec | 2 +- dlls/prntvpt/ticket.c | 25 +++++++++++++++++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-)
diff --git a/dlls/prntvpt/prntvpt.spec b/dlls/prntvpt/prntvpt.spec index 7e8ff150491..93d4688d086 100644 --- a/dlls/prntvpt/prntvpt.spec +++ b/dlls/prntvpt/prntvpt.spec @@ -10,7 +10,7 @@ @ stdcall PTReleaseMemory(ptr) @ stdcall ConvertDevModeToPrintTicketThunk2(ptr ptr long long ptr ptr) @ stub ConvertDevModeToPrintTicketThunk -@ stub ConvertPrintTicketToDevModeThunk2 +@ stdcall ConvertPrintTicketToDevModeThunk2(ptr ptr long long long ptr ptr ptr) @ stub ConvertPrintTicketToDevModeThunk @ stdcall -private DllCanUnloadNow() @ stub DllGetClassObject diff --git a/dlls/prntvpt/ticket.c b/dlls/prntvpt/ticket.c index 253ea4ce0a5..3dd4e18e9d7 100644 --- a/dlls/prntvpt/ticket.c +++ b/dlls/prntvpt/ticket.c @@ -747,6 +747,31 @@ HRESULT WINAPI PTConvertPrintTicketToDevMode(HPTPROVIDER provider, IStream *stre return S_OK; }
+HRESULT WINAPI ConvertPrintTicketToDevModeThunk2(HPTPROVIDER provider, BYTE *ticket, ULONG ticket_size, EDefaultDevmodeType type, + EPrintTicketScope scope, BYTE **dm, ULONG *size, BSTR *error) +{ + static const LARGE_INTEGER zero; + HRESULT hr; + IStream *stream; + + TRACE("%p,%p,%lu,%d,%d,%p,%p,%p\n", provider, ticket, ticket_size, type, scope, dm, size, error); + + hr = CreateStreamOnHGlobal(0, TRUE, &stream); + if (hr != S_OK) return hr; + + hr = IStream_Write(stream, ticket, ticket_size, NULL); + if (hr == S_OK) + { + IStream_Seek(stream, zero, STREAM_SEEK_SET, NULL); + + hr = PTConvertPrintTicketToDevMode(provider, stream, type, scope, size, (PDEVMODEW *)dm, error); + } + + IStream_Release(stream); + + return hr; +} + static HRESULT add_attribute(IXMLDOMElement *element, const WCHAR *attr, const WCHAR *value) { VARIANT var;