You are constructing a StringBuilder to hold the result, but then you don't use it to talk to GetClassName - you convert that to a string first and pass that:
Dim sClassName As New StringBuilder("", 256)
GetClassName(ParentHandler, sClassName.ToString, 256)
Since you haven't added any data to the StringBuilder, the ToString call will return an empty string, so will have a length of zero - and since strings are immutable in .NET anyway GetClassName can't change it even if you did pass actual data ...
Pass the StringBuilder directly instead:
Dim sClassName As New StringBuilder("", 256)
GetClassName(ParentHandler, sClassName, 256)