From f8d3b8e58f4e07b288484a0b48103a6f162463eb Mon Sep 17 00:00:00 2001 From: Dmitry Timoshkov Date: Wed, 10 Jun 2020 13:31:42 +0800 Subject: [PATCH] prntvpt: Implement PTCloseProvider. Signed-off-by: Dmitry Timoshkov Signed-off-by: Alexandre Julliard --- dlls/prntvpt/main.c | 21 +++++++++++++++++++++ dlls/prntvpt/prntvpt.spec | 2 +- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/dlls/prntvpt/main.c b/dlls/prntvpt/main.c index 9c12b0cbfad..1bbe280d0e5 100644 --- a/dlls/prntvpt/main.c +++ b/dlls/prntvpt/main.c @@ -57,6 +57,27 @@ HRESULT WINAPI PTQuerySchemaVersionSupport(PCWSTR printer, DWORD *version) return E_NOTIMPL; } +static BOOL is_valid_provider(struct prn_provider *prov) +{ + return prov && prov->owner == GetCurrentThreadId(); +} + +HRESULT WINAPI PTCloseProvider(HPTPROVIDER provider) +{ + struct prn_provider *prov = (struct prn_provider *)provider; + + TRACE("%p\n", provider); + + if (!is_valid_provider(prov)) + return E_HANDLE; + + prov->owner = 0; + ClosePrinter(prov->hprn); + heap_free(prov); + + return S_OK; +} + HRESULT WINAPI PTOpenProvider(PCWSTR printer, DWORD version, HPTPROVIDER *provider) { DWORD used_version; diff --git a/dlls/prntvpt/prntvpt.spec b/dlls/prntvpt/prntvpt.spec index 5581fa4c500..99c67082425 100644 --- a/dlls/prntvpt/prntvpt.spec +++ b/dlls/prntvpt/prntvpt.spec @@ -1,7 +1,7 @@ @ stdcall PTQuerySchemaVersionSupport(wstr ptr) @ stdcall PTOpenProvider(wstr long ptr) @ stdcall PTOpenProviderEx(wstr long long ptr ptr) -@ stub PTCloseProvider +@ stdcall PTCloseProvider(ptr) @ stub BindPTProviderThunk @ stub PTGetPrintCapabilities @ stub PTMergeAndValidatePrintTicket