Como Windows Ejecuta Aplicaciones de 32 Bits en 64 Bits

Embed Size (px)

Citation preview

  • 8/17/2019 Como Windows Ejecuta Aplicaciones de 32 Bits en 64 Bits

    1/22

  • 8/17/2019 Como Windows Ejecuta Aplicaciones de 32 Bits en 64 Bits

    2/22

    omo se puede ver, el emuladorWOW64debe realizar el cambio de direcci&n del

    sistema de !iceros para garantizar que el c&digo de 32 y 64 bits siga separado"

    ero mantener arcivos del 7 separados es solamente el principio" El

    emulador WOW64realiza el cambio de direcci&n del sistema de !iceros paravarios componentes clave del sistema operativo de (indo)s"

    tro lugar en (indo)s en donde se utiliza el cambio de direcci&n del sistema de

  • 8/17/2019 Como Windows Ejecuta Aplicaciones de 32 Bits en 64 Bits

    3/22

    !iceros es en la carpeta de arcivos de programa" asi todas las aplicaciones

  • 8/17/2019 Como Windows Ejecuta Aplicaciones de 32 Bits en 64 Bits

    4/22

      “ ”  

  • 8/17/2019 Como Windows Ejecuta Aplicaciones de 32 Bits en 64 Bits

    5/22

    carpeta propia para la aplicaci&n" En las versiones 064 de (indo)s, las

  • 8/17/2019 Como Windows Ejecuta Aplicaciones de 32 Bits en 64 Bits

    6/22

      “ ”  

  • 8/17/2019 Como Windows Ejecuta Aplicaciones de 32 Bits en 64 Bits

    7/22

    aplicaciones

    32 bits est/n instaladas en una carpeta nombrada 8rogram 9iles *0:6-;" .

    in embargo, la carpeta de arcivos de programa puede no estar siempre en el

  • 8/17/2019 Como Windows Ejecuta Aplicaciones de 32 Bits en 64 Bits

    8/22

    mismo lugar en cada microordenador" or ello, la mayor$a de los desarrolladores

  • 8/17/2019 Como Windows Ejecuta Aplicaciones de 32 Bits en 64 Bits

    9/22

      “ ”  

  • 8/17/2019 Como Windows Ejecuta Aplicaciones de 32 Bits en 64 Bits

    10/22

    que llama

     !unciones para obtener el nombre real de esta car eta en el en cues i&n" En

    as versiones de 32 bits de (indo)s, la !unci&n .nica vez que se ace re!erencia a la c

    arpeta de arcivos de programa? puede también ser re!erenciada en el tiempo

    de ejecuci&n" #unque ay varias maneras que una aplicaci&n pueda determinar el no

    mbre y la localizaci&n de la carpeta de arcivos de programa, el empleo de las vari

    ables de entorno es lo m/s utiliza o" En una versi&n de 32 bits de (indo)s,

     la variable de entorno @rogram9iles@ contiene la trayectoria a la carpeta de arcivos de programa" En una versi&n 064 de (indo)s, es

    variable de entorno también se utiliza, pero trabaja de una !orma di!eren

    te" a regla m/s importante de la plata!orma 064 es que no puedes mezclar

    de ninguna manera c&digo de 64 y 32 bits" as variables de entorno se llaman

    a menudo dentro de !iceros de comandos por lotes *"A7 o "B#- o por scripts" .ie

    do éste el caso, ejecutar scripts puede ser un poco peligroso en un entorno de 6

    4 bits" C7ebe (indo)s tratar el script como c&digo de 32 bits o como de 64D a r 

    espuesta a!ecta no s&lo al contenido de las variables de entorno, sino también que

    los programas que llame el propio script" or ejemplo, un script de 64 bi

    no puede lanzar un proceso de 32 bits *por lo menos no de la manera normal

    -" (indo)s consigue solucionar estos problemas o!reciendo dos intérpretes de co

    mandos1 uno de 64 bits y otro de 32" as var

    les de entorno se establecen de acuerdo al intérprete de com

    andos u ilizado or ejemplo, si se abre una ventana de comandos lanzando

    el comandoCMD.EXEen la ventana 8%nicioEjecutar F; *Gun-, (indo)s abrir/

  • 8/17/2019 Como Windows Ejecuta Aplicaciones de 32 Bits en 64 Bits

    11/22

    una ventana de comandos de 64 bits" En la mayor$a de los casos, la variable de

  • 8/17/2019 Como Windows Ejecuta Aplicaciones de 32 Bits en 64 Bits

    12/22

      8

  • 8/17/2019 Como Windows Ejecuta Aplicaciones de 32 Bits en 64 Bits

    13/22

    9iles;" .i se lanza un sc

    t, éste podr/ ejecutar aplicacion s y comandos de 64 bits, p ro no de 32 bi

    ts"

    En el lado contrario, si se lanza“C:WindowsSysWOW64cmd.exe”en la ventana

  • 8/17/2019 Como Windows Ejecuta Aplicaciones de 32 Bits en 64 Bits

    14/22

    8%nicioEjecutar F;, la ventana de comandos que se ejecuta es de 32 bits" En ese

  • 8/17/2019 Como Windows Ejecuta Aplicaciones de 32 Bits en 64 Bits

    15/22

      8   ;

  • 8/17/2019 Como Windows Ejecuta Aplicaciones de 32 Bits en 64 Bits

    16/22

    Como se puede ver, la localización de la carpeta de archivos de programa se

     redirige dependiendo de si se est/ !uncionando a 32 & 64 bits" ero ay una

  • 8/17/2019 Como Windows Ejecuta Aplicaciones de 32 Bits en 64 Bits

    17/22

    e0cepci&n a esta regla1 si una aplicaci&n tiene la re!erencia a la carpeta de

  • 8/17/2019 Como Windows Ejecuta Aplicaciones de 32 Bits en 64 Bits

    18/22

      8   ;

  • 8/17/2019 Como Windows Ejecuta Aplicaciones de 32 Bits en 64 Bits

    19/22

    se utilizar/ esta carpeta directamente, sin tener en cuenta el entorno en el que se

     est/ trabajando y esto podr$a dar lugar a diversos problemas, al intentar 

     ejecutar c&digo de 64 bits de alg>n componente cuando la aplicaci&n es de 32

     bits" #!ortunadamente esto no es una

    ena pr/ctica de programaci&n y esperamos no encontrarlo en nuestras aplicaciones"

    ambién en el registro ay una estructura a utilizar cuand

    o e est/ trabajando a 64 bits y otra a usar cuando se est/ e

    n 32 bits" #s$, dentro de

  • 8/17/2019 Como Windows Ejecuta Aplicaciones de 32 Bits en 64 Bits

    20/22

    aplicaci&n o !icero de comandos que cumpla las normas A"COM permite que

    alguien con abilidades de programaci&n m$nimas pueda escribir una aplicaci&n o

    un script que interact>e con (indo)s" a persona que escribe la aplicaci&n o el

    script puede acerlo sin tener que aprender un lenguaje de programaci&n tal como

    NN, y sin tener que aprender todos los inter!aces de programaci&n

    deWindows*#%s-"

    (indo)s se dise'& de manera que todos los objetosCOM disponibles estuvieran

    dentro del registro" ara garantizar que el c&digo de 32 bits esté aislado

    totalmente del c&digo de 64 bits, los objetosCOM de 32 y 64bits se almacenan en

    dos partes distintas del registro"

    En lenguaje de Aicroso!t un servidorCOM es un objeto que ace disponible su

    !uncionalidad a través de A" as aplicaciones y scripts que acen uso de esa

    !uncionalidad se llaman clientes A"

    uando se abla de un servidor COM inLprocess se re!iere generalmente a las

    bibliotecas *arcivos "7-, porque éstas se ejecutan como parte del mismo

    proceso que las aplicaciones y scripts que los llamaron" 5n servidor COM outLo!L

    process es un objetoCOM *generalmente un !icero ejecutable- que se ejecuta en

    un proceso distinto que la aplicaci&n o script que lo llam&"

    uando una aplicaci&n intenta registrar un objeto A, el

    emulador WOW64pondr/ las entradas correspondientes en la secci&n apropiadadel registro, dependiendo de si el objeto COM es un objeto de 64 o de 32 bits"

    uando una aplicaci&n o un script que se supone que son de 32 bits intentan

    cargar un objetoCOM en el proceso, el emuladorWOW64redirecciona el registro

    para estar seguro que la aplicaci&n o script lee la porci&n del registro que re!iere a

    objetosCOM de 32 bits" .i el registro no contiene una re!erencia a una versi&n de

    32 bits del objetoCOM solicitado,WOW64dir/ a la aplicaci&n que no e0iste el

    objeto, aunque e0ista una versi&n 64 bits disponible" a misma cosa sucede si una

    aplicaci&n de 64 bits solicita un objeto A"Windowscomprobar/ la parte delregistro correspondiente a 64 bits para saber si ay una re!erencia al objeto y no

    ar/ caso de cualquier objetoCOM de 32 bits"

    Servidores COM Out-of-process

  • 8/17/2019 Como Windows Ejecuta Aplicaciones de 32 Bits en 64 Bits

    21/22

    a manera queWOW64vuelve a dirigir peticiones de servidoresCOM inLprocess

    es bastante directa" ero las cosas !uncionan di!erentemente para los

    servidores COM outLo!Lprocess" a redirecci&n del registro todav$a ace !alta, pero

    esto es solamente una parte del proceso"

    as llamadas a un servidorCOM outLo!Lprocess son la e0cepci&n a la regla de

    mantener separados el c&digo de 32 bits y el de 64"

     #islar el c&digo de 32 bits es normalmente un requisito porque no puedes mezclar

    c&digo de 64 bits y de 32 dentro de un proceso" ero cuando son

    servidores COM outLo!Lprocess, el objetoCOM est/ !uncionando en un proceso

    totalmente distinto del del c&digo que lo llam&" Esto signi!ica que la aplicaci&n

    puede !uncionar con c&digo de 32 y llamar a un objeto COM de 64 bits, o

    viceversa"

    Ia que la aplicaci&n y el objeto COM est/n !uncionando en procesos distintos, es

    !/cil ver que ser$a posible que !uncionaran ambos en el mismo sistema" Cero

    c&mo puede la aplicaci&n comunicarse con un objeto COM si uno est/

    !uncionando en 32 bits y el otro en 64D #unque la aplicaci&n y el objeto COM no

    puedan interactuar directamente uno con otro porque estén !uncionando en

    procesos distintos, pueden comunicarse con Gemote rocedure alls *Gs-"

    os ordenadores que !uncionan en una versi&n 064 de Windowsutilizan la

    redirecci&n del registro para conseguir el !uncionamiento de aplicaciones de 32 y

    64 bits" Esta redirecci&n del registro evita que las aplicaciones sobreLescriban la

    con!iguraci&n de las de 64 bits, pero permite todav$a que las aplicaciones y los

    arcivos 7 que utilicen arborescencias escritas a mano contin>en !uncionando"

    as claves del registro relacionadas con las aplicaciones est/n instaladas

    generalmente en la clave

  • 8/17/2019 Como Windows Ejecuta Aplicaciones de 32 Bits en 64 Bits

    22/22

    bits y, de !orma transparente, vuelve a dirigir estas llamadas al lugar apropiado

    dentro del registro de (indo)s"

    a entrada nicomecanismo usado" or ello, las versiones 064 deWindowsutilizan también otra

    técnica conocida como re!le0i&n del registro"

    Esta técnica copias claves espec$!icas y valores del registro entre las dos vistas

    del registro *una de 32 bits y otra de 64 bits- para mantenerlas sincronizadas" El

    re!lector es inteligente y copia datos del COM activo para los servidores locales

    entre las vistas del registro, pero no los datos inLprocess, porque el mezclar datos

    inLprocess de 32 con 64 bits no se permite en un Windowsde 64 bits"