Win8 M3 (7989) findings relevant to Managed .net & WPF/SL developers

Discussion in 'Windows 8' started by SilverlightWPF, Jun 19, 2011.

  1. NaiveUser

    NaiveUser MDL Senior Member

    Apr 14, 2011
    419
    523
    10
    well, here is some strings inside mscorrc.dll

    11024,Immersive bind.
    11025,Framework bind.
    11026,Assembly.LoadFile bind.
    11027,Windows Runtime Type bind.
    11028,Dependency name: %s
    11029,Found: %s
    11030,IL image bind.
    11031,Native image bind.

    so Immersive is aware by the CLR, insane.

    and some boring error strings about WinRT interop:

    9733,Null strings may not be marshaled in HSTRING fields.
    9734,Invalid managed/unmanaged type combination (Windows Runtime strings must be marshaled as HString).
    9735,HiddenLengthParamIndex '%1' refers to an index in the native method signature which does not precede '%2', the index of the hidden length array.
    9736,HiddenLengthParamIndexes may not be duplicated in a single method signature.
    9737,Illegal use of both implicit and explicit hidden length array indexes in a single method signature.
    9738,HiddenLengthArray may not be combined with the LCIDConversionAttribute.
    9739,The LCIDConversionAttribute may not be used on Windows Runtime methods.
    9740,Invalid managed/unmanaged type combination (Windows Runtime arrays must be marshaled as HiddenLengthArray).
    9741,Invalid managed/unmanaged type combination (Windows Runtime interfaces, classes and delegates must have a Guid or a default interface).
    9742,Invalid managed/unmanaged type combination (SpecifiedInterface can only be used on Windows Runtime interface group and class types).
    9743,The default interface must refer to a Windows Runtime interface with a GUID.
    9744,The default interface must refer to an interface that is implemented by the type.
    9745,Invalid managed/unmanaged type combination (Delegates must be imported from Windows Runtime and marshaled as Interface).
    9747,Unexpected change made to file '%1'.
    9748,Invalid managed/unmanaged type combination (the DateTimeOffset structure must be paired with Struct).
    9749,There is not enough information to call IEnumerable.GetEnumerator on a Windows Runtime object, please cast the object to IEnumerable<T> first.
    9750,There is not enough information to cast a Windows Runtime object to IEnumerable, please cast the object to IEnumerable<T> first.
    9751,Windows Runtime interface '%1' in assembly '%2' must have a valid GUID.
    9752,Windows Runtime interface group '%1' in assembly '%2' cannot have a GUID.
    9753,Unable to compute GUID for type '%1' because the instantiation contains types that are not supported by Windows Runtime.
    9754,Unable to compute GUID because type '%1' does not have a default Windows Runtime interface.
    9755,Cannot construct type '%1'. Windows Runtime attribute types are not constructable.
    9756,Windows Runtime type '%1' could not be found.
    9757,When attempting to unbox a Windows Runtime IReference<T> or IReferenceArray<T>, IInspectable's GetRuntimeClassName returned an invalid type name. Type name: '%s'
    9758,The type '%1' is not supported by Windows Runtime.
     
    Stop hovering to collapse... Click to collapse... Hover to expand... Click to expand...
  2. NaiveUser

    NaiveUser MDL Senior Member

    Apr 14, 2011
    419
    523
    10
    #102 NaiveUser, Jul 11, 2011
    Last edited: Jul 11, 2011
    there is a class called WindowsRuntimeDesignerContext in the namespace System.Runtime.DesignerServices, look like design-time support for WinRT. it uses CreateDesignerContext/SetDesignerContext functions in native dll QCall.dll. what the heck is this QCall.dll used everywhere in CLR ?
     
    Stop hovering to collapse... Click to collapse... Hover to expand... Click to expand...
  3. bored_neo

    bored_neo MDL Junior Member

    Jun 3, 2011
    53
    26
    0
    qcall.dll methods are implemented in clr.dll.

    This reminds me of the immersvive PE section. I can understand what WinRT type bind is, but what's that "immersive bind"?!!

    He he, when I first saw the IReference<T> interface in 7989 my first thought was "hey, this is basically boxing for WinRT" :)
     
  4. mossyblog

    mossyblog MDL Novice

    Jul 11, 2011
    4
    0
    0

    Yes, this is mostly being done by Silverlight teams post Silverlight 5 hitting escrow. There is usually a long delay between Silverlight 5 "official release" and when the team finishes (mostly due to tooling etc catching up).

    My sources tell me that what you folks are seeing is Silverlight teams pitch to Windiv on how to retain the work produced in Silverlight - kind of - more complicated story than just that but the crux of what i was able to get was that.
     
  5. mossyblog

    mossyblog MDL Novice

    Jul 11, 2011
    4
    0
    0
    Well if they are keen to put an overlay of UI ontop of Windows8 tablet, then having a customizable chrome thats less headaches with the as-is seems logical. Think Out Of Browser chrome customization with steroids.
     
  6. mossyblog

    mossyblog MDL Novice

    Jul 11, 2011
    4
    0
    0
    You're looking at the vNext incarnation of Out Of browser. You'll find Web UI will work embedded in IE10 etc (while a beefy upgrade in rendering pipelines to boot) then to go out of browser and into more desktop via elevated trust(s) you get more access. I'd wager big that it also wont be like SL5 today, where OOB is kind of mickey mouse / clunky in execution. This will probably appear as a native desktop icon and the concept itself will most likely be abstracted from the users (kind of like Flash vs Adobe AIR). IE10 will still be your anchor point though.
     
  7. mossyblog

    mossyblog MDL Novice

    Jul 11, 2011
    4
    0
    0
    Well win8 is about device usage, so you're seeing prescribed UX around how multi-touch etc works. Developer Experience team are likely to release a metro-inspired approach to way it all snaps together and rather than doing that via external bits it makes sense to bake it into the core (lessons learnt from WP7/SL days)
     
  8. NaiveUser

    NaiveUser MDL Senior Member

    Apr 14, 2011
    419
    523
    10
    so Scott Barnes is here, wow :cool:

    I was wondered why those WinMD files looks differenct, most of them uses Camel.Case in file names, but the DirectUI stuff are all lower.case,
    surely they come from different department :D, then who owns glcnd.exe the pdf reader ? it has been ported from DUI70 to DirectUI, as a showcase ?
     
    Stop hovering to collapse... Click to collapse... Hover to expand... Click to expand...
  9. NaiveUser

    NaiveUser MDL Senior Member

    Apr 14, 2011
    419
    523
    10
    Stop hovering to collapse... Click to collapse... Hover to expand... Click to expand...
  10. ctxsnstv

    ctxsnstv MDL Novice

    Jun 12, 2011
    8
    0
    0
    Hmm, has any one dug into the stuff in Windows.ApplicationModel, particularly Windows.ApplicationModel.Core? It looks like Win8 apps under the new application model will be suspended and resumed by the system (to save battery power?) similar to smartphones? Also there are classes for telephone dialing (in Windows.Devices)
     
  11. bored_neo

    bored_neo MDL Junior Member

    Jun 3, 2011
    53
    26
    0
    Hmm, did anyone notice that the WPF ribbon (System.Windows.Controls.Ribbon.dll) has been added to the .NET Framework in 7989? That's how WindowChrome got in.

    Also, the .NET Framework directory now contains a subdir named "Facade" that contains a bunch of assemblies. They only contain TypeForwardedTo assembly attributes. It looks as if they're trying to split existing larger assemblies into smaller ones.
     
  12. bored_neo

    bored_neo MDL Junior Member

    Jun 3, 2011
    53
    26
    0
    #112 bored_neo, Jul 13, 2011
    Last edited by a moderator: Apr 20, 2017
    There's a new NGenTask.exe command in .NET Framework. I'm still looking into it (it's a .NET exe so it can be decompiled) but it looks like this ngens assemblies that have been used in the past. And it appears to have something to do with appx too:

    Code:
    Console.Error.WriteLine("   /RuntimeWide - Parse the fusion stream of the usage logs instead of the AppX stream. Task runs in machine-wide mode.");
    
     
  13. NaiveUser

    NaiveUser MDL Senior Member

    Apr 14, 2011
    419
    523
    10
    #113 NaiveUser, Jul 13, 2011
    Last edited by a moderator: Apr 20, 2017
    This ? Managed AppX packages installs native images into its own private or 'local appdata' locations instead of 'runtime wide' or 'global' location ?

    Code:
    if (string.CompareOrdinal(binder, "fusion") == 0)
    {
    this.NGenArgs = "install \"{0}\" /NoDependencies /noroot";
    return;
    }
    if (string.CompareOrdinal(binder, "AppX") == 0)
    {
    this.NGenArgs = string.Concat(new string[]
    {
    "install \"{0}\" /NoDependencies /noroot /package:\"", 
    binderParam, 
    "\" /localappdata:\"", 
    logFile.Root.Directory.FullName, 
    "\""
    });
    this.Container = binderParam;
    return;
    }
     
    Stop hovering to collapse... Click to collapse... Hover to expand... Click to expand...
  14. NaiveUser

    NaiveUser MDL Senior Member

    Apr 14, 2011
    419
    523
    10
    the purpose of the 'Facade' dir is a mystery to me. splitting larger assemblies is not a 'Facade' to me. if I can take a wild guess then maybe they are trying to define a subset of the BCL for whatever reasons, maybe a portable profile ?
     
    Stop hovering to collapse... Click to collapse... Hover to expand... Click to expand...
  15. bored_neo

    bored_neo MDL Junior Member

    Jun 3, 2011
    53
    26
    0
    Maybe, but it's weird that even primitive types like int and bool are in System.Runtime instead of mscorlib. This reminds me a bit of the api-ms-win-* dlls that they are using in the win32 world.
     
  16. bored_neo

    bored_neo MDL Junior Member

    Jun 3, 2011
    53
    26
    0
    2 small additions to .NET:

    - WeakReference<T> - finally, a generic version of WeakReference
    - IProgress<T>, Progress<T> - simple api to report progress from a background thread, used when "marshaling" WinRT's IAsyncActionWithProgress<T>.
     
  17. NaiveUser

    NaiveUser MDL Senior Member

    Apr 14, 2011
    419
    523
    10
    I guess the purpose of the facade is that you can write your application with ONLY these assemblies in the facade, so obviously you need primitive types to write an app. After some quick checkings, my first impression about the subset api of this facade is, they DONT have those classes that NOT-available in Silverlight, or, ARE-available in WinMetadata. So, perhaps Facade + WinMetadata == Core Profile ?? :hypo: make any sense ??
     
    Stop hovering to collapse... Click to collapse... Hover to expand... Click to expand...
  18. NaiveUser

    NaiveUser MDL Senior Member

    Apr 14, 2011
    419
    523
    10
    #118 NaiveUser, Jul 17, 2011
    Last edited: Jul 17, 2011
    oh, I just found something about "Mosh", the Mbae.exe uses "CMoshWindow" as the class name member in the WNDCLASSEX parameter of a RegisterClassEx call, then it uses this class in a call of CreateImmersiveWindow.
     
    Stop hovering to collapse... Click to collapse... Hover to expand... Click to expand...
  19. NaiveUser

    NaiveUser MDL Senior Member

    Apr 14, 2011
    419
    523
    10
    #119 NaiveUser, Jul 17, 2011
    Last edited by a moderator: Apr 20, 2017
    Stop hovering to collapse... Click to collapse... Hover to expand... Click to expand...
  20. SilverlightWPF

    SilverlightWPF MDL Junior Member

    Jun 11, 2011
    69
    8
    0
    #120 SilverlightWPF, Jul 18, 2011
    Last edited by a moderator: Apr 20, 2017
    (OP)
    Stop hovering to collapse... Click to collapse... Hover to expand... Click to expand...