Hello I am trying to pass the calls of ITaskbarList meditating CoCreateInstance + DispCallFunc etc etc, a bit for learning a bit more to not use the tlb, but apparently I have not been able to start I try to make some calls but I only get errors.

Will my statements be correct?
Private Const SetProgressValue As Long = 1
Private Const SetProgressState As Long = 2

Code:
Option Explicit
Private Declare Function CLSIDFromString Lib "ole32" (ByVal str As Long, ID As Any) As Long
Private Declare Sub CopyMemory Lib "kernel32.dll" Alias "RtlMoveMemory" (ByRef Destination As Any, ByRef Source As Any, ByVal Length As Long)
Private Declare Function CoCreateInstance Lib "ole32" (ByVal rclsid As Long, ByVal pUnkOuter As Long, ByVal dwClsContext As Long, ByVal riid As Long, ByRef ppv As Long) As Long
Private Declare Function DispCallFunc Lib "oleaut32" (ByVal pvInstance As Long, ByVal oVft As Long, ByVal lCc As Long, ByVal vtReturn As VbVarType, ByVal cActuals As Long, prgVt As Any, prgpVarg As Any, pvargResult As Variant) As Long

Private Type GUID
    Data1 As Long
    Data2 As Integer
    Data3 As Integer
    Data4(0 To 7) As Byte
End Type

Private Const CLSID_TaskbarList As String = "{56FDF344-FD6D-11d0-958A-006097C9A090}"
Private Const IID_ITaskbarList2 As String = "{602D4995-B13A-429b-A66E-1935E44F4317}"
Private Const IID_ITaskbarList3 As String = "{EA1AFB91-9E28-4B86-90E9-9E9F8A5EEFAF}"
Private Const CLSID_TaskbarList3 As String = "{EA1AFB91-9E28-4B86-90E9-9E9F8A5EEFAF}"
Private Const CLSID_TaskbarList4 As String = "{C43DC798-95D1-4BEA-9030-BB99E2983A1A}"

Private Const CLSCTX_INPROC_SERVER      As Long = 1
Private Const CC_STDCALL As Long = &H4&
Private Const SetProgressValue As Long = 1
Private Const SetProgressState As Long = 2
Private Const TBPF_NORMAL As Long = 2
Private Const crProgressMax As Currency = 100
Private crProgress As Currency


Public Sub TEST()
    Dim IID As GUID
    Dim CLSID As GUID
    Dim rc As Long
    Dim iTaskBarVB2 As Long
    
    rc = CLSIDFromString(StrPtr(CLSID_TaskbarList), CLSID)
    rc = CLSIDFromString(StrPtr(CLSID_TaskbarList3), IID)
    rc = CoCreateInstance(VarPtr(CLSID), 0&, CLSCTX_INPROC_SERVER, VarPtr(IID), iTaskBarVB2)
    
    Call DispCallByVtbl(iTaskBarVB2, SetProgressState, Form1.hWnd, TBPF_NORMAL)
      
    crProgress = 50
    Call DispCallByVtbl(iTaskBarVB2, SetProgressValue, Form1.hWnd, crProgress, crProgressMax)
End Sub

Private Function DispCallByVtbl(pUnk As Long, ByVal lIndex As Long, ParamArray A() As Variant) As Variant
    Dim lIdx            As Long
    Dim vParam()        As Variant
    Dim vType(0 To 63)  As Integer
    Dim vPtr(0 To 63)   As Long
    Dim hResult         As Long
    
    vParam = A
    For lIdx = 0 To UBound(vParam)
        vType(lIdx) = VarType(vParam(lIdx))
        vPtr(lIdx) = VarPtr(vParam(lIdx))
    Next
    hResult = DispCallFunc(pUnk, lIndex * 4, CC_STDCALL, vbLong, lIdx, vType(0), vPtr(0), DispCallByVtbl)
    If hResult < 0 Then
        Err.Raise hResult, "DispCallFunc"
    End If
End Function