protected override bool TryCreateViewer(FileInfo fileInfo, out HandlerResult?handlerResult)
    {
        var pcchOut = 0u;
        var riid    = typeof(IPreviewHandler).GUID.ToString("B");

        if (PInvoke.AssocQueryString(ASSOCF.ASSOCF_INIT_DEFAULTTOSTAR, ASSOCSTR.ASSOCSTR_SHELLEXTENSION, fileInfo.Extension, riid, Span <char> .Empty, ref pcchOut).Failed)
        {
            handlerResult = default;

            return(false);
        }

        var shellFileControl = new ShellFileControl();

        using (shellFileControl.Initialize())
        {
            shellFileControl.Loaded += (_, _) => shellFileControl.Open(fileInfo);
        }

        handlerResult = new HandlerResult {
            Viewer = shellFileControl
        };

        return(true);
    }
    // ReSharper disable once InconsistentNaming
    private static bool TryGetPreviewHandlerCLSID(FileInfo fileInfo, out Guid clsid)
    {
        var         pcchOut = 40u;
        Span <char> pszOut  = stackalloc char[(int)pcchOut];

        var riid = typeof(IPreviewHandler).GUID.ToString("B");

        if (PInvoke.AssocQueryString(ASSOCF.ASSOCF_INIT_DEFAULTTOSTAR, ASSOCSTR.ASSOCSTR_SHELLEXTENSION, fileInfo.Extension, riid, pszOut, ref pcchOut).Failed)
        {
            clsid = Guid.Empty;

            return(false);
        }

        clsid = Guid.Parse(pszOut[..(int)(pcchOut - 1)]);