From e8c4dbcec21d9b65cb680c6c773e560f761d42f8 Mon Sep 17 00:00:00 2001 From: Zebediah Figura Date: Wed, 1 May 2019 18:24:10 -0500 Subject: [PATCH] setupapi: Implement W -> A mapping of SPFILENOTIFY_NEEDMEDIA. Signed-off-by: Zebediah Figura Signed-off-by: Alexandre Julliard --- dlls/setupapi/queue.c | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/dlls/setupapi/queue.c b/dlls/setupapi/queue.c index e160d9e9f0c..0775507c7ed 100644 --- a/dlls/setupapi/queue.c +++ b/dlls/setupapi/queue.c @@ -247,7 +247,28 @@ UINT CALLBACK QUEUE_callback_WtoA( void *context, UINT notification, break; case SPFILENOTIFY_NEEDMEDIA: - FIXME("mapping for %d not implemented\n",notification); + { + const SOURCE_MEDIA_W *mediaW = (const SOURCE_MEDIA_W *)param1; + char path[MAX_PATH]; + SOURCE_MEDIA_A mediaA; + + mediaA.Tagfile = strdupWtoA(mediaW->Tagfile); + mediaA.Description = strdupWtoA(mediaW->Description); + mediaA.SourcePath = strdupWtoA(mediaW->SourcePath); + mediaA.SourceFile = strdupWtoA(mediaW->SourceFile); + mediaA.Flags = mediaW->Flags; + path[0] = 0; + + ret = callback_ctx->orig_handler(callback_ctx->orig_context, notification, + (UINT_PTR)&mediaA, (UINT_PTR)&path); + MultiByteToWideChar(CP_ACP, 0, path, -1, (WCHAR *)param2, MAX_PATH); + + heap_free((char *)mediaA.Tagfile); + heap_free((char *)mediaA.Description); + heap_free((char *)mediaA.SourcePath); + heap_free((char *)mediaA.SourceFile); + break; + } case SPFILENOTIFY_STARTQUEUE: case SPFILENOTIFY_ENDQUEUE: case SPFILENOTIFY_STARTSUBQUEUE: