• View Communities
    • Citrix Developer Network
      The place for unfiltered straight talk on Citrix products. Blogs, code downloads, best practices, APIs, and more can all be found here.
    • Citrix Ready Community Verified
      Does it work with Citrix? Application compatibility questions are a thing of the past with the new Citrix Community Verified site.
    • Blogs
      Learn the latest from the Citrix employees who are building application delivery infrastructure technologies.
    • Blogosphere
      The Citrix Blogosphere is a window into the thousands of conversations taking place about Citrix and Application Delivery.
  •  Sign In
The Citrix Blog
The Citrix Blog
Insights from Citrites into our products, technology, and culture
Permalink | Twitter Post to Twitter | Comments (0) | Views (1382) |

posted by Rich Crusco

Citrix User Group Denmark session on Whats new in Provisioning Server. The Session was delivered by Henrik Poulsen from Citrix Consulting, and Henrik covered whats new and how does Provisioning Server fit into the scheme of a dynamic delivery center.

Dansk Citrix User Group Session om Whats new in Provisioning Server. Sessionen blev leveret af Henrik Poulsen fra Citrix Consulting, og Henrik afdækkede hvad der er nyt samt hvor Provisioning Server passer ind i det store dynamiske delivery center.

Click below to continue to Dansk Citrix User Group:
http://www.dkcug.dk

Expand Blog Post
Permalink | Twitter Post to Twitter | Comments (1) | Views (1264) |

posted by Rich Crusco

Citrix User Group Denmark session on XenApp Power and Capacity Management the feature with the upcoming feature pack two for XenApp 5.0. The session is delivered by Jacob Berg, Application delivery Consulting.

Dansk Citrix User Group session om XenApp Power and Capacity Management en kommende feature i XenApp 5.0 feature pack to. Sessionen blev leveret af Jacob Berg, Application delivery Consulting

Click below to continue to Dansk Citrix User Group:
http://www.dkcug.dk

Expand Blog Post
Permalink | Twitter Post to Twitter | Comments (0) | Views (1036) |

posted by Rich Crusco

Citrix User Group Denmark GeekSpeak local at the first Meetup. The topic of the GeekSpeak was set to be Power management but we got around a bit. The Debate is in Danish.

Dansk Citrix User Group GeekSpeak Local ved det første Meetup. Emnet for debat var sat til at dreje sig om Power management men vi fik en god dialog og debat om omkringliggende teknologier.

Click below to continue to Dansk Citrix User Group:
http://www.dkcug.dk

Expand Blog Post
Permalink | Twitter Post to Twitter | Comments (0) | Views (1335) |

posted by Jeff Gee

One of the more unique features about the Project Kensho OVF Tool v1.3 is its ability to manage Hyper-V servers. The Project Kensho OVF Tool can import OVF/VMDK from VMware products directly into Hyper-V servers as well as move content between Hyper-V and XenServer.

To assist with the understanding how quick and easy this is, we've produced a simple video that explains this process:

Some items to note with Hyper-V and XenServer compatibility:

  1. When moving Linux workloads around, if the XenServer derived Linux workload is paravirtualized (PV enabled), the workload will not function on Hyper-V. Use an HVM type of VM if the intent of the workload is for cross hypervisor compatibility between XenServer and Hyper-V.
  2. When moving Windows workloads around, Windows XP/Server 2003 and higher can be migrated between platforms without driver issues, e.g., one clobbering the other.

Share your experience and use cases on the forum.  Thanks for your interest in Project Kensho and the virtual appliance future of XenServer!

Expand Blog Post
Permalink | Twitter Post to Twitter | Comments (0) | Views (1065) |

posted by Kyle Benson

Prove It!.... Didn't you hate hearing that as a kid?

Well, Prove It! is making a comeback as more IT shops want proof that virtualization tools work the way they are supposed to.

Now, we're making it easier for you to Prove It! to your customers. I've just posted up a couple of new Proof of Concept Guides that you'll want to have a look at.

Citrix Essentials brings advanced virtualization management and automation capabilities to both XenServer and Hyper-V environments, enabling customers to transform their datacenters into automated "delivery centers". These advanced management capabilities include automated high availability, dynamic workload balancing, Lab automation, dynamic provisioning for physical and virtual machines, and deep integration with leading storage platforms.

The Proof of Concept Guide for Lab Management provides an overview of how to successfully run a proof of concept involving the automated stage management component of Citrix Essentials for XenServer and Citrix Essentials for Microsoft ® Hyper-V™. With Citrix Stage Manager, customers can quickly provision and stage virtual environments enabling them to develop, test, and deploy applications with greater efficiency.

The Proof of Concept Guide for Automated Stage Management document provides an overview of how to successfully run a proof of concept involving the automated lab management component of Citrix Essentials for XenServer and Citrix Essentials for Microsoft ® Hyper-V™. With Citrix Lab Manager, customers can quickly provision virtual environments enabling them to develop test and deploy applications with greater efficiency.

Check them out at:

Lab Manager Proof of Concept: https://www.citrix.com/site/resources/dynamic/privateresource/Citrix_LabManager_PoC_Guide_5_5.pdf
Automated Stage Management Proof of Concept https://www.citrix.com/site/resources/dynamic/privateresource/Citrix_StageManager_PoC_Guide_5_5.pdf

Expand Blog Post
Permalink | Twitter Post to Twitter | Comments (1) | Views (1454) |

posted by Joseph Nord

I received an interesting inquiry recently.  Given my post on Never Deploy to XenApp Servers, how do you stop deploy from happening for hosted desktop?   Excellent question!

Here's the situation.  Happy XenApp Customer (they are all happy) who uses Application Streaming to deliver applications to their XenApp servers as well as stream to client, primarily for offline access.  The applications are published to the user as offline enabled and this works swell to trigger the deploy operation that is required to execute the application when disconnected from the corporate network and also works swell to not trigger Deploy in the XenApp hosted case.

Quick refresher on Deploy

The Deploy space is a COPY of all the needed stuff from the Application Hub, but it is local to the execution machine.  The Deploy space makes it possible for the streaming client to support application usage even when disconnected from the network.  The Deploy space is generally in \Program files\Citrix\Deploy and the execution cache space is generally in \Program files\Citrix\RadeCache. 

At runtime, the streaming client runtime fills the execution space as needed by copying content from the Application Hub - or if Deployed, from the Deploy space.  Other than one being remote and the other being local, the activity of the client is the same whether "offline" or "online".  Technically, "Deploy" enables streaming from one side of the hard disk to the other and this keeps life pretty simple from a programming standpoint.   I thought it up back in the Tarpon development and I'm still pretty happy with myself.

Deploy is automatically not done on XenApp Servers

It may seem like a good idea to Deploy to the XenApp Servers, but I have already squashed that myth and apparently did a good job there because the corollary, "Never Deploy to XenDesktop" has also been heard.

Back to the customer.  They have XenApp running good and are engaging XenDesktop.  Application Streaming is delivering the applications to the XenApp servers as well as to the end user machines (notebooks). 

Here's the thing that's not always obvious.  The streaming client KNOWS that Deploying to XenApp Servers is a bad idea.  If you publish an application to a bunch of users and offline enable the applications AND if you publish the applications to hosted execution, a single user can use both without triggering a Deploy on the XenApp server.  

If the user is running the application server side, the streaming client is still involved but it knows that it is running ON a XenApp Server, so it SKIPS the Deploy.  This is the right thing to do.  If the admin doesn't like that, they can still command a Deploy to occur on the server by directly calling the deploy utility, RadeDeploy.exe, but again, you shouldn't do that.

The problem

The customer is now engaging XenDesktop and have connected the hosted desktops to the App Streaming infrastructure from the existing XenApp configuration.  Here, the streaming client is running on the hosted desktop and ... when performing its app launch concludes that this is a client side execution and background copies down all the bits for offline execution. This is bad.

Here's a good write up on the percentage of space that is used for online vs. offline execution.

The point: Lots of disk writes start happening to copy the Deploy content down from the Application Hub to place them in the Deploy space where they will exist and get copied again into the RadeCache.  All of this is bad to the layers of cake.  We want to minimize disk WRITES.  Disk writes are backed up either by Xen/Other Virtual Machine manager or by Provisioning Services.  Either way, large writes by large numbers or users are bad.  Beyond being slow, these writes will occupy space in the per-user write back cache; which is discarded on logoff, so this whole thing will repeat on the next logon.  

The solution

The Deploy should not occur!  But it does.  In a "correct" world, the streaming client would be XenDestop aware as it is XenApp aware.  If running "hosted", don't Deploy!  We do not live in a correct world.  My initial guidance to the folks that asked me about this was "erase \program files\citrix\streaming client\radedeploy.exe".  All happy with myself because I KNOW that the streaming client shells to the utility to perform the deploy.

With the utility "missing", the streaming client will have no choice but to push on without the deploy.
Survey says.... didn't work. 

Instead of "pushing on", the streaming client declared failure and aborted the app launch.  Aargh.

Beautiful part of this is that I didn't have to actually try it.  Smart folks on the other side, all I had to do was keep coming up with ideas.  

Second round: Replace RadeDeploy.exe with a program that does nothing, but returns "success" return code.

Survey says.... Success!

The only utility I had handy to do this is one I wrote a very long time ago to use for remarking out RUN= statements from the Windows registry.  Source is included - please compile it yourself before putting in production.  For the programmers in the room, said program is "Hello world" minus the printf.  In the common image where the streaming client is installed, copy nop.exe to RadeDeploy.exe. 

Back to the Deploy activity

The streaming client "shells" to RadeDeploy.exe which is really "nop.exe", which returns 0 as RC.  With the Deploy "successful", the launch proceeds with no error, AND the Deploy never happens.  Perfect!

I see a future where the streaming client will be XenDesktop aware and skip the Deploy.  Until then, this technique may prove useful.  If you have other creative solutions to this problem, please share them here.

Next step is getting the RadeCache space available to everyone from a single source, read-only and fully populated at the get-go.

Joe Nord
Product Architect Application Streaming

Citrix Systems

Expand Blog Post
Permalink | Twitter Post to Twitter | Comments (0) | Views (1264) |

posted by Rich Crusco

Registration is now open for this years Autumn 2009 CUGtech event in Geilo, Norway on Oct 7th through Oct 9th. It looks like there might also be a discount for the event by registering as a member.

Register here to participate at CUGtech Autumn 2009

  • You will have to pay directly to the hotel when checking out Friday, using creditcard or cash.
  • Register as a member now and get 50% discount for the membership valid thru 31/12-09.
  • Only members can attend Master Classes, and get the special member price for the conference.

Click below to continue to registration:
http://cug.no/cugtech-autumn-2009/register/

Here is a nice view of the Geek Wonderland where the event will be hosted.


Geilo, Norway

Click below to learn more about the event:

CUGtech Autumn 2009: http://cug.no/cugtech-autumn-2009/
Location: http://cug.no/cugtech-autumn-2009/location/
Transport: http://cug.no/cugtech-autumn-2009/transport/
Speakers: http://cug.no/cugtech-autumn-2009/speakers/
Agenda: http://cug.no/cugtech-autumn-2009/agenda/
Master Classes: http://cug.no/cugtech-autumn-2009/master-classes/
Register: http://cug.no/cugtech-autumn-2009/register

Expand Blog Post
Permalink | Twitter Post to Twitter | Comments (0) | Views (747) |

posted by Stephen Spector



The open source Xen.org community is proud to announce registration availability for the Xen Summit Asia 2009 event sponsored by Intel and Citrix China.
We are supporting 2 sites for this event - Chinese Registration (Chinese) and International Registration (English). All Chinese attendees should register at http://xen.linuxpk.com/and all International attendees should sign up at http://www.regonline.com/Checkin.asp?EventId=755219.
The Intel facility has a limit of 150 attendees so all Chinese attendees will register online and then be contacted at a later time for confirmation. International attendees will automatically be accepted to the event upon registration completion.
Event Details:

If you have any questions please contact me at stephen.spector@xen.org.

Expand Blog Post
Permalink | Twitter Post to Twitter | Comments (0) | Views (1576) |

posted by Peter Blum

Thomas James (Intel) and I did a great podcast with Douglas Brown discussing how Citrix and Intel are working closely together to deliver Citrix XenClient the innovative Bare Metal Local Virtual Desktop platform. During this podcast we shared lots of great detail on the software and hardware technology behind XenClient and why people are so excited about this new Virtual Desktop technology. You can hear all about the collaboration with Intel and the Intel vPro technologies we are leveraging in the forthcoming product.

You can access the podcast on the DABCC site here.

Also you can always get the latest news on XenClient on our XenClient Central Community site.

Expand Blog Post
Permalink | Twitter Post to Twitter | Comments (0) | Views (836) |

posted by Futoshi Baba

Motivation
I had an issue I have to investigate at the begining of 2009. Since W2K8 seems to have some enhancement regarding security consideration. This was an example in a case that WMI printer provider query, which is like "SELECT * FROM __InstanceCreation Event WITHIN 1 WHERE TargetInstance ISA 'Win32_Printer'" through WMI provider context from Application. This query led to perform SPOOLSS!EnumPrintersW() within spooler context with "NT AUTHORITY\SYSTEM". Unfortunately, As a resulf ot that, we came across the follwoing Event Log.
Implementation of TPrintProvider class introduced into win32spl.dll since W2K8 caused this.


EventSource: "SpoolerWin32SPL"
EventId: 4


Debug Log

THREAD 89b62710 Cid 0960.0b20 Teb: 7ffda000 Win32Thread: ff5dea50 WAIT: (UserRequest) UserMode Non-Alertable
898ba718 SynchronizationEvent
89a177b8 SynchronizationEvent
IRP List:
89a50310: (0006,0220) Flags: 00060000 Mdl: 00000000
Not impersonating
DeviceMap 832087c0
Owning Process 0 Image: <Unknown>
Attached Process 89becc80 Image: rscorsvc.exe
Wait Start TickCount 17687 Ticks: 40 (0:00:00:00.625)
Context Switch Count 1890
UserTime 00:00:00.093
KernelTime 00:00:00.093
Win32 Start Address ZCollect!_threadstartex (0x3304a4ec)
Stack Init 8ce63000 Current 8ce628c0 Base 8ce63000 Limit 8ce60000 Call 0
Priority 12 BasePriority 10 PriorityDecrement 0 IoPriority 2 PagePriority 5
ChildEBP RetAddr Args to Child
8ce628d8 816b83bf 89b62710 816f9920 89b62798 nt!KiSwapContext+0x26 (FPO: [Uses EBP] [0,0,4])
8ce6291c 816b53cf 89b62710 00000000 00000002 nt!KiSwapThread+0x44f
8ce62970 81819ed4 00000002 8ce62aa8 00000001 nt!KeWaitForMultipleObjects+0x53d
8ce62bfc 81819c43 00000002 00000001 00000000 nt!ObpWaitForMultipleObjects+0x256
8ce62d48 81658a7a 00000002 01c3f5ec 00000001 nt!NtWaitForMultipleObjects+0xcc
8ce62d48 77689a94 00000002 01c3f5ec 00000001 nt!KiFastCallEntry+0x12a (FPO: [0,3] TrapFrame @ 8ce62d64)
01c3f598 77689244 7607c3e4 00000002 01c3f5ec ntdll!KiFastSystemCallRet (FPO: [0,0,0])
01c3f59c 7607c3e4 00000002 01c3f5ec 00000001 ntdll!ZwWaitForMultipleObjects+0xc (FPO: [5,0,0])
01c3f638 777c0208 01c3f5ec 01c3f660 00000000 kernel32!WaitForMultipleObjectsEx+0x11d (FPO: [Non-Fpo])
01c3f68c 7720ab28 000002dc 01c3f6d4 ffffffff USER32!RealMsgWaitForMultipleObjectsEx+0x13c (FPO: [Non-Fpo])
01c3f6b4 7720ac88 01c3f6d4 ffffffff 01c3f6e4 ole32!CCliModalLoop::BlockFn+0x97 (FPO: [Non-Fpo])
01c3f6dc 77317b73 ffffffff 0020cdb0 01c3f7e8 ole32!ModalLoop+0x5b (FPO: [Non-Fpo])
01c3f6f8 77318b68 00000000 01c3f7fc 00000000 ole32!ThreadSendReceive+0x12c (FPO: [Non-Fpo])
01c3f720 773189d4 01c3f7e8 00243c28 01c3f844 ole32!CRpcChannelBuffer::SwitchAptAndDispatchCall+0x194 (FPO: [Non-Fpo])
01c3f800 7720ad2e 00243c28 01c3f928 01c3f90c ole32!CRpcChannelBuffer::SendReceive2+0xef (FPO: [Non-Fpo])
01c3f81c 7720ace0 01c3f928 01c3f90c 00243c28 ole32!CCliModalLoop::SendReceive+0x1e (FPO: [Non-Fpo])
01c3f894 7722e688 00243c28 01c3f928 01c3f90c ole32!CAptRpcChnl::SendReceive+0x73 (FPO: [Non-Fpo])
01c3f8e8 76e5364e 00243c28 01c3f928 01c3f90c ole32!CCtxComChnl::SendReceive+0x1c5 (FPO: [Non-Fpo])
01c3f900 76e536af 03ad7ecc 01c3f9c4 76e533e2 RPCRT4!NdrProxySendReceive+0x43
01c3f90c 76e533e2 81d96d3a 01c3fdc4 070001f3 RPCRT4!NdrpProxySendReceive+0xc (FPO: [0,0,0])
01c3fd84 76e535f4 718b2ba8 718b27de 01c3fdc4 RPCRT4!NdrClientCall2+0x5e9
01c3fdac 76dee20e 01c3fdc4 00000017 01c3fdfc RPCRT4!ObjectStublessClient+0x6f
01c3fdbc 718e6374 03ad7ecc 001e28fc 0020ed9c RPCRT4!ObjectStubless+0xf
01c3fdfc 3650cae8 001e28fc 0020ed9c 0020ed9c fastprox!CWbemSvcWrapper::XWbemServices::ExecNotificationQueryAsync+0x91 (FPO: [Non-Fpo])
01c3fe44 365050d5 00000001 029309e8 36505851 ctrx_ext!CPrinterTracker::DetectPrinterCreates+0x118 (FPO: [Non-Fpo]) (CONV: thiscall)
01c3fe50 36505851 00000005 00ed49fc 3650804d ctrx_ext!CCtrxExt::InitMonitoring+0xd5 (FPO: [Non-Fpo]) (CONV: thiscall)
01c3fe5c 3650804d 00000005 36505287 00000001 ctrx_ext!CCtrxExt::OnStartupPhase+0x141 (FPO: [Non-Fpo]) (CONV: thiscall)
01c3fe64 36505287 00000001 00000005 00ed4998 ctrx_ext!CCtrxExt::_NotifyEvent+0x2d (FPO: [Non-Fpo]) (CONV: thiscall)
01c3fe74 33009c29 029309e8 00000001 00000005 ctrx_ext!_IMPAExtensionImpl<CCtrxExt>::NotifyEvent+0x27 (FPO: [Non-Fpo]) (CONV: stdcall)
01c3fe98 33010f39 00000001 00000005 81d93690 ZCollect!MPACollector::NotifyEvent+0x53 (CONV: thiscall)
01c3fecc 3301443c 00000005 00000000 00ed0cb8 ZCollect!QThread::DoPhasedStartup+0x17a (CONV: thiscall)
01c3ff10 3302b6d2 00ed4698 81d93714 00000000 ZCollect!QThread::StartQueue+0x197 (CONV: thiscall)
01c3ff48 3304a4c6 00ed0cb8 81d937dc 00000000 ZCollect!StartQReader+0x30 (CONV: stdcall)
01c3ff80 3304a56b 00000000 76074911 00edbeb8 ZCollect!_callthreadstartex+0x1b (FPO: [Non-Fpo]) (CONV: cdecl)
01c3ff88 76074911 00edbeb8 01c3ffd4 7766e4b6 ZCollect!_threadstartex+0x7f (FPO: [Non-Fpo]) (CONV: stdcall)
01c3ff94 7766e4b6 00edbeb8 76ac79b1 00000000 kernel32!BaseThreadInitThunk+0xe (FPO: [Non-Fpo])
01c3ffd4 7766e489 3304a4ec 00edbeb8 ffffffff ntdll!__RtlUserThreadStart+0x23 (FPO: [Non-Fpo])
01c3ffec 00000000 3304a4ec 00edbeb8 00000000 ntdll!_RtlUserThreadStart+0x1b (FPO: [Non-Fpo])

kd> du 0020ed9c
0020ed9c "SELECT * FROM __InstanceCreation"
0020eddc "Event WITHIN 1 WHERE TargetInsta"
0020ee1c "nce ISA 'Win32_Printer'"

kd> !thread -1 7
THREAD 8a01f670 Cid 100c.1028 Teb: 7ffae000 Win32Thread: ffbede90 RUNNING on processor 0
Impersonation token: 8a59d3e8 (Level Impersonation)
Owning Process 0 Image: <Unknown>
Attached Process 8a016d90 Image: WmiPrvSE.exe
Wait Start TickCount 21220 Ticks: 0
Context Switch Count 1337
UserTime 00:00:01.937
KernelTime 00:00:02.312
Win32 Start Address RPCRT4!ThreadStartRoutine (0x76de4dfe)
Stack Init 8e7fa000 Current 8e7f9b48 Base 8e7fa000 Limit 8e7f7000 Call 0
Priority 9 BasePriority 8 PriorityDecrement 0 IoPriority 2 PagePriority 5
ChildEBP RetAddr Args to Child
014de74c 6ea2cc37 00000006 00000000 00000002 WINSPOOL!EnumPrintersW (FPO: [Non-Fpo])
014de7b8 6ea2cdf3 0130d320 00000000 014de7dc cimwin32!CWin32Printer::DynInstancePrinters+0xda (FPO: [Non-Fpo])
014de7c8 6ed5f3dd 0130d320 00000000 00000111 cimwin32!CWin32Printer::EnumerateInstances+0xf (FPO: [Non-Fpo])
014de7dc 6ed5f82f 0130d320 00000000 7fb9fbe8 framedynos!Provider::CreateInstanceEnum+0x21 (FPO: [Non-Fpo])
014decd0 00070ed5 0130f9b8 00292bc4 00000000 framedynos!CWbemProviderGlue::CreateInstanceEnumAsync+0x1cd (FPO: [Non-Fpo])
014ded10 00070d45 00000000 00288fc8 00000000 wmiprvse!CInterceptor_IWbemSyncProvider::Helper_CreateInstanceEnumAsync+0x159 (FPO: [Non-Fpo])
014ded54 76de31eb 0130f9b8 00292afc 00000000 wmiprvse!CInterceptor_IWbemSyncProvider::CreateInstanceEnumAsync+0xc1 (FPO: [Non-Fpo])
014ded7c 76e5184f 00070cbd 014def88 00000005 RPCRT4!Invoke+0x2a
014df1a8 76e52006 00279b30 002739c8 00264f68 RPCRT4!NdrStubCall2+0x27b
014df1f8 718eb35e 00279b30 00264f68 002739c8 RPCRT4!CStdStubBuffer_Invoke+0xa0 (FPO: [SEH])
014df20c 77319759 0128f354 00264f68 002739c8 FastProx!CBaseStublet::Invoke+0x29 (FPO: [Non-Fpo])
014df254 773196f3 00264f68 00275f78 0026b9a8 ole32!SyncStubInvoke+0x3c (FPO: [Non-Fpo])
014df2a0 77239d67 00264f68 00275e70 0128f354 ole32!StubInvoke+0xb9 (FPO: [Non-Fpo])
014df37c 77239c5c 002739c8 00000000 0128f354 ole32!CCtxComChnl::ContextInvoke+0xfa (FPO: [Non-Fpo])
014df398 773187a4 00264f68 00000001 0128f354 ole32!MTAInvoke+0x1a (FPO: [Non-Fpo])
014df3c8 77319498 d0908070 002739c8 0128f354 ole32!AppInvoke+0xaa (FPO: [Non-Fpo])
014df4a4 77318780 00264f10 00263100 00270f38 ole32!ComInvokeWithLockAndIPID+0x32c (FPO: [Non-Fpo])
014df4f0 76de3420 00270f38 7fdbaa13 00270f38 ole32!ThreadInvoke+0x2fd (FPO: [Non-Fpo])
014df52c 76de32ce 7731984e 00270f38 014df628 RPCRT4!DispatchToStubInCNoAvrf+0x41
014df5a0 76de4a8a 00000000 00000000 00000000 RPCRT4!RPC_INTERFACE::DispatchToStubWorker+0xdf
014df5c4 76de48b8 00270f38 00000000 014df628 RPCRT4!RPC_INTERFACE::DispatchToStub+0x67
014df5f8 76de3e6a 00270f9c 00000000 00000000 RPCRT4!RPC_INTERFACE::DispatchToStubWithObject+0x3e
014df638 76de3d78 00270ec8 014df674 00270ec8 RPCRT4!LRPC_SCALL::DispatchRequest+0x298
014df6a4 76de303a 00270ec8 00272268 0026f920 RPCRT4!LRPC_SCALL::HandleRequest+0x1d2
014df748 76e03617 00000000 014df7c4 76de1627 RPCRT4!LRPC_ADDRESS::ProcessIO+0x214
014df754 76de1627 00252d60 00000013 00000000 RPCRT4!ProcessLrpcComplete+0x20
014df7c4 76de4df0 014df7f0 76de4db7 00252d60 RPCRT4!LOADABLE_TRANSPORT::ProcessIOEvents+0x212
014df7cc 76de4db7 00252d60 00000000 00000000 RPCRT4!ProcessIOEventsWrapper+0xd
014df7f0 76de4e1c 0026f180 014df808 76074911 RPCRT4!BaseCachedThreadRoutine+0x5c
014df7fc 76074911 00270a68 014df848 7766e4b6 RPCRT4!ThreadStartRoutine+0x1e
014df808 7766e4b6 00270a68 762680c4 00000000 kernel32!BaseThreadInitThunk+0xe (FPO: [Non-Fpo])
014df848 7766e489 76de4dfe 00270a68 ffffffff ntdll!__RtlUserThreadStart+0x23 (FPO: [Non-Fpo])
014df860 00000000 76de4dfe 00270a68 00000000 ntdll!_RtlUserThreadStart+0x1b (FPO: [Non-Fpo])

kd> !thread -1 7
THREAD 898766e0 Cid 06d4.0c88 Teb: 7ffae000 Win32Thread: 00000000 RUNNING on processor 0
Impersonation token: 8a4c0950 (Level Impersonation)
Owning Process 0 Image: <Unknown>
Attached Process 89a88b68 Image: spoolsv.exe
Wait Start TickCount 17727 Ticks: 0
Context Switch Count 7
UserTime 00:00:00.000
KernelTime 00:00:00.000
Win32 Start Address RPCRT4!ThreadStartRoutine (0x76de4dfe)
Stack Init 9e5e0000 Current 9e5df7e8 Base 9e5e0000 Limit 9e5dd000 Call 0
Priority 8 BasePriority 8 PriorityDecrement 0 IoPriority 2 PagePriority 5
ChildEBP RetAddr Args to Child
028cef60 71fc7a1b 0227001c 00000002 00000000 ADVAPI32!ReportEventW+0x2 (FPO: [Non-Fpo])
028cefa0 71f9f2e0 00000002 00000000 c0000004 win32spl!NLOGLibrary::TEventLog::LogEvent+0x4a (FPO: [Non-Fpo])
028cf004 71f93956 00000002 00000c6c 021ce6e0 win32spl!TPrintOpen::RediscoverPrinterConnections+0x104 (FPO: [Non-Fpo])
028cf028 73747bb5 00000006 00000000 00000002 win32spl!TPrintProvider::ppEnumPrinters+0x29 (FPO: [Non-Fpo])
028cf074 00d4339d 00000006 00000000 00000002 SPOOLSS!EnumPrintersW+0xb4 (FPO: [Non-Fpo])
028cf0a8 00d43320 00000006 00000000 00000002 spoolsv!YEnumPrinters+0xd4 (FPO: [Non-Fpo])
028cf0d0 76de31eb 00000006 00000000 00000002 spoolsv!RpcEnumPrinters+0x21 (FPO: [Non-Fpo])
028cf100 76e5184f 00d432ff 028cf308 00000007 RPCRT4!Invoke+0x2a
028cf52c 76e4edb5 00000000 00000000 00104b00 RPCRT4!NdrStubCall2+0x27b
028cf548 76de3420 00104b00 65dc820e 00104b00 RPCRT4!NdrServerCall2+0x1e
028cf584 76de32ce 76e4ed97 00104b00 028cf628 RPCRT4!DispatchToStubInCNoAvrf+0x41
028cf5f8 76dd20dd 00000000 00000000 00000000 RPCRT4!RPC_INTERFACE::DispatchToStubWorker+0xdf
028cf638 76de3d78 00104a90 028cf674 00104a90 RPCRT4!LRPC_SCALL::DispatchRequest+0xa2
028cf6a4 76de303a 00104a90 000f9f48 00104bd8 RPCRT4!LRPC_SCALL::HandleRequest+0x1d2
028cf748 76e03617 00000000 028cf7c4 76de1627 RPCRT4!LRPC_ADDRESS::ProcessIO+0x214
028cf754 76de1627 00081528 00000013 00000000 RPCRT4!ProcessLrpcComplete+0x20
028cf7c4 76de4df0 028cf7f4 76de4db7 00081528 RPCRT4!LOADABLE_TRANSPORT::ProcessIOEvents+0x212
028cf7cc 76de4db7 00081528 00000000 00000000 RPCRT4!ProcessIOEventsWrapper+0xd
028cf7f4 76de4e1c 000f1540 028cf80c 76074911 RPCRT4!BaseCachedThreadRoutine+0x5c
028cf800 76074911 000ff818 028cf84c 7766e4b6 RPCRT4!ThreadStartRoutine+0x1e
028cf80c 7766e4b6 000ff818 75e327ee 00000000 kernel32!BaseThreadInitThunk+0xe (FPO: [Non-Fpo])
028cf84c 7766e489 76de4dfe 000ff818 ffffffff ntdll!__RtlUserThreadStart+0x23 (FPO: [Non-Fpo])
028cf864 00000000 76de4dfe 000ff818 00000000 ntdll!_RtlUserThreadStart+0x1b (FPO: [Non-Fpo])

kd> !token -n 8a4c0950
_TOKEN 8a4c0950
TS Session ID: 0
User: S-1-5-18 (Well Known Group: NT AUTHORITY\SYSTEM)
Groups:
00 S-1-16-16384 Unrecognized SID
Attributes - GroupIntegrity GroupIntegrityEnabled
01 S-1-1-0 (Well Known Group: localhost\Everyone)
Attributes - Mandatory Default Enabled
02 S-1-5-32-545 (Alias: BUILTIN\Users)
Attributes - Mandatory Default Enabled
03 S-1-5-6 (Well Known Group: NT AUTHORITY\SERVICE)
Attributes - Mandatory Default Enabled
04 S-1-5-11 (Well Known Group: NT AUTHORITY\Authenticated Users)
Attributes - Mandatory Default Enabled
05 S-1-5-15 (Well Known Group: NT AUTHORITY\This Organization)
Attributes - Mandatory Default Enabled
06 S-1-5-80-2402865663-3129190671-725286074-1860017563-2838182404 (no name mapped)
Attributes - Default Enabled Owner
07 S-1-5-5-0-112781 (no name mapped)
Attributes - Mandatory Default Enabled Owner LogonId
08 S-1-2-0 (Well Known Group: localhost\LOCAL)
Attributes - Mandatory Default Enabled
09 S-1-5-32-544 (Alias: BUILTIN\Administrators)
Attributes - Default Enabled Owner
Primary Group: S-1-5-18 (Well Known Group: NT AUTHORITY\SYSTEM)
Privs:
03 0x000000003 SeAssignPrimaryTokenPrivilege Attributes - Enabled
04 0x000000004 SeLockMemoryPrivilege Attributes - Enabled Default
05 0x000000005 SeIncreaseQuotaPrivilege Attributes - Enabled
07 0x000000007 SeTcbPrivilege Attributes - Enabled Default
08 0x000000008 SeSecurityPrivilege Attributes - Enabled
09 0x000000009 SeTakeOwnershipPrivilege Attributes - Enabled
10 0x00000000a SeLoadDriverPrivilege Attributes - Enabled
11 0x00000000b SeSystemProfilePrivilege Attributes - Enabled Default
12 0x00000000c SeSystemtimePrivilege Attributes - Enabled
13 0x00000000d SeProfileSingleProcessPrivilege Attributes - Enabled Default
14 0x00000000e SeIncreaseBasePriorityPrivilege Attributes - Enabled Default
15 0x00000000f SeCreatePagefilePrivilege Attributes - Enabled Default
16 0x000000010 SeCreatePermanentPrivilege Attributes - Enabled Default
17 0x000000011 SeBackupPrivilege Attributes - Enabled
18 0x000000012 SeRestorePrivilege Attributes - Enabled
19 0x000000013 SeShutdownPrivilege Attributes - Enabled
20 0x000000014 SeDebugPrivilege Attributes - Enabled Default
21 0x000000015 SeAuditPrivilege Attributes - Enabled Default
22 0x000000016 SeSystemEnvironmentPrivilege Attributes - Enabled
23 0x000000017 SeChangeNotifyPrivilege Attributes - Enabled Default
25 0x000000019 SeUndockPrivilege Attributes - Enabled
28 0x00000001c SeManageVolumePrivilege Attributes - Enabled
29 0x00000001d SeImpersonatePrivilege Attributes - Enabled Default
30 0x00000001e SeCreateGlobalPrivilege Attributes - Enabled Default
33 0x000000021 SeIncreaseWorkingSetPrivilege Attributes - Enabled Default
34 0x000000022 SeTimeZonePrivilege Attributes - Enabled Default
35 0x000000023 SeCreateSymbolicLinkPrivilege Attributes - Enabled Default
Authentication ID: (0,3e7)
Impersonation Level: Impersonation
TokenType: Impersonation
Source: Advapi TokenFlags: 0x0
Token ID: 37c91 ParentToken ID: 0
Modified ID: (0, 36e28)
RestrictedSidCount: 0 RestrictedSids: 00000000
OriginatingLogonSession: 3e7

kd> dc 028cef60
028cef60 00000014 71fc7a1b 0227001c 00000002 .....z.q..'.....
028cef70 00000000 c0000004 00000000 00000001 ................
028cef80 00000000 028cef94 00000000 00000000 ................
028cef90 80070002 025b00b0 00000000 00000000 ......[.........
028cefa0 028cf004 71f9f2e0 00000002 00000000 .......q........
028cefb0 c0000004 025b00b0 00000000 00000000 ......[.........
028cefc0 00000000 025c24c8 00000000 72e77820 .....$\..... x.r
028cefd0 72ef33d8 72e7bb7c 00000006 021bb318 .3.r|..r........
kd> dd 028cef94 L1
028cef94 025b00b0
kd> du 025b00b0
025b00b0 "S-1-5-18\Printers\Connections"

Global Escalation Manager Tokyo
-fb

Expand Blog Post
Permalink | Twitter Post to Twitter | Comments (13) | Views (2712) |

posted by Simon Crosby

Over the holiday weekend I had one of those "come to X" moments, where for X you may insert your deity of choice. Under my customary backlog of tasks to complete, and wanting to also spend time with my family, I was happily at work on Friday night fine tuning powerpoint for a presentation to the industry, when....

(You've all experienced this before) One profile change too many, one cookie too many, one slide too many, one keystroke too many.. or something, and my XP VM decided to toss its legs, feet & boots in the air. With daylight fading fast, spousal impatience on the rise and with a rapidly (Decibels are measured on a log scale) increasing din on the part of my children, I did something that no self respecting hypervisor zealot would do, namely take a leap of faith in another layer of virtualization - App Virtualization.

And the result is that it saved my weekend with my family, and the current state of my work, and enabled me to meet some tough deadlines this week. Here's what I did: First, the diagnosis was that my Windows XP client OS VM (on my Mac) was done for. I could still boot it. Not much else, and not for long. My key concern was how to rescue all of my files and other state in the VM.

This exercise allowed me to validate a theory that I have had in the area of virtualization, which I can now summarize: Lesson 1: Make your VMs stateless. Move all of your documents (more generally, any app specific storage/state) out of the virtual hard disk of the VM and into an appropriate storage layer external to the virtual hard drive of the VM. In my case, all state (every document I work on) is stored in the local file system of my Mac and is continually backed up to the cloud. So my XP VM was simply an operating context for some apps, divorced from the storage for the docs etc that I work on. The fact that my XP VM had become unstable was therefore not a threat to any of my documents/presentations - only to the execution of the apps. Nothing I value was stored in the virtual hard disk of the VM itself.

Now, fancying a challenge, I also chose to upgrade to Win7 in the process of fixing this problem. After all, why not test Win7 in the process? So I created a new Win7 VM (using the MSDN media). That took the expected amount of time, and I easily got to the point where I had a new Win7 OS booted, with access to all my storage, including all my documents. What next? Well, I needed my Apps. Not only the basics, but also Citrix specific apps - for example expense reporting...

I was tempted to send an email to my local Citrix colleagues requesting install media for all my apps. Then I realized that that would not be easy - since I had no email client! : All I needed to do (and did, after a glass of wine) was download Citrix Receiver, turn on "auto update", and enable the appropriate folder sharing to get my content back into the OS. Then I enjoyed the remainder of the weekend with my family.

When I started work this morning, XenApp App Streaming had delivered to me all the apps that I needed, ready to run at full performance, and appropriately configured for the enterprise network and other infrastructure. I had a brand new Win7 desktop, the latest apps, and everything I had ever created, all beautifully merged into a single runtime system.

Expand Blog Post
Permalink | Twitter Post to Twitter | Comments (0) | Views (1357) |

posted by Lawrence Sharo

A new version of the white theme for web interface has been published.
the article ID is ctx119509.
While I was updating this article I found a few things I thought I would share.
Someone in a different forum was trying to find the style sheet by searching for *.css. This sounds reasonable, in fact I did the same thing. The style sheets are aggregated together by an aspx page named styles.aspx.
The files themselves are actually includes and have the extension inc.
The best way to find them is to search for the word style.
There is a navStyle, fullStyle, etc.

Remember each of these style sheets is aggregated together. The Style closest to the element in question will supersede any previously specified styles.
I hope this info helps you customize web interface to look the way you want.

Expand Blog Post
Permalink | Twitter Post to Twitter | Comments (0) | Views (1101) |


I joined Citrix in 2002 as a developer when we were still a single product company (MetaFrame) of about 1,800 employees and revenues of appx $500m. Since then, we've had magnificient growth in nearly every possible metric - revenues, employees, customers, market share and strategic importance to IT. Working behind the scenes to make it all happen are XenApp's 18 different Technology Component teams working around the clock in 5 different countries to develop 450 product binaries and rigorously test 320 build layouts throughout the project cycle. With this enormity and explosive growth, the question of "How do we deliver products that bring the most value to IT at the lowest cost in the shortest time?" is one that our engineering teams deal with in every product release cycle.

In the last 10 months, being on the Release Team for XenApp, I learned 10 valuable lessons in software engineering management (in addition to losing weight, sleep and some hair ). Although these observations may be based on Citrix-specific examples, I believe that in here are universal truths that apply not just to software development at Citrix but any large IT or software project. Secondly, I want you to get an insight into what some of our engineering processes are like.

Lesson 1: Tackle cross-team dependencies first

XenApp Platinum Edition has many components with numerous cross-team dependencies. If you are a team that owns an SDK (even a couple of APIs or modules for another team to consume), focus on those first before worrying about your internal milestones. You ask why? There are two reasons. First, the team that consumes your interfaces might in turn have other important milestones that depend on this SDK being delivered on time. You can't starve them. Second, most problems arise from these touch points. Eg: RPC calls, 32-bit consumers vs 64-bit SDK, logistics of releasing an SDK are not trivial - build, install issues are often unaccounted for and/or overlooked. That is why it is important to at least provide a skeletal interface (that returns dummy data) and fill in the meat later. Remember - it is better to be somewhat correct than precisely wrong.

Lesson 2: Refactor gradually, not all at once
Our natural tendency as engineers is to try and build the best performing, ideally architected, and most logically modular components. Realistically, it is impossible to score on all these fronts unless you have infinite time. Software engineers are builders and architects. They are extremely passionate about their buildings (code). We often come up with grandiose ideas of re-writing entire components with the latest available technology to try and make it all better and new, this time. But it just doesn't work like that. Here are the pitfalls in "grand" refactoring -

•Grand refactoring comes at a huge upfront cost that we tend to ignore (most of this is in reverse-engineering legacy code). These costs are hard to justify to managers in a tough economy like this, especially when everything is working as is.

• There is no guarantee that refactored code will perform better. The original engineer who wrote that code made certain design decisions consciously (might have been subtle compromises). Statistically speaking, the new engineers who are doing the refactoring are no smarter than the original authors of the code. So don't touch something if it is not completely broken.

• By the time you are half-way into refactoring, it is quite likely that a new set of requirements may come in that contradict your refactoring plan.

I am not against refactoring. Here's what I think is the best approach to refactoring:
• Identify the top problematic areas (in key measures such as maintainability, performance and security) and start by going after those first.

• Learn from smaller refactoring undertakings before you take a big step (think big but start small).

• Advertise refactoring improvements. If a modest investment got you a big gain, blog about it, share your experiences so others can learn from it.

• Refactoring must be continuous (in my opinion, every release should layout 5-7% of $$$ for refactoring improvements) but don't overdo it.

Lesson 3: Don't overestimate demos
Demos are a great way to reveal earned value. It helps to showcase engineering innovation, secure (or maintain) funding and most importantly give confidence in your design. But demo's that show PoC's (proof of concepts) should not be mistaken for end-products. We take several short-cuts when doing demos. There is a long way between demo/prototype quality and release quality that you need to account for in your project plan.

Lesson 4: Don't underestimate integrations
When an novice engineer says "Oh its easy, will take 10 minutes to do", they are almost always wrong. This is especially true of system integration. The convenience of having a VBL (Virtual Build Lab, a sort of private tree for building code) for isolated and disruptive development does not come for free (unless you are isolated by binary based releases, even there you may have a cost arising from dependency alignment). Integrations don't end when your code compiles. It all needs to work (in Citrix, we use a product-wide test automation framework that runs on every build to ascertain quality metrics on a continuous basis). Assign a generous amount of time to do integrations.

Lesson 5: Automation is not a silver bullet
There is a sign in the first floor's break room in our main XenApp engineering building here in Ft. Lauderdale that says "Automation is not a silver bullet". Keep a copy of it in your office. Certain code lends itself well to automation and certain classes of code do not. Like refactoring, here are some thoughts I have on automation:

• Full-fledged automation comes at a huge fixed cost. If your payback period is more than 3 years, re-think. We are in a fast-paced industry. The scenario or code that you automate now, may be far less important (or not even applicable) 2-3 years from now.

• There is code that can be tested very effectively using automation (eg: session management, capacity and load management), and some that just can't be (multimedia). 100% automation is impractical (trying to achieve 100% of anything is somewhat impractical for that matter).

• Automation also needs continuous maintenance. For example, if you author automated unit tests, you need to make sure a. they keep running release after release and b. they keep passing release after release. As code changes, the way it is tested may also need to change. So while calculating payback, be sure to attach a maintenance cost for every test you author.

• Like refactoring, I believe automation effort is one of those things that you have to include for each release, but not overdo it. Start with automating the biggest bang for the buck.

Lesson 6: Keep processes lightweight, yet efficient
As part of the Release Team, I have an obligation to make sure that release processes facilitate and not burden Technology Component (TC) teams. Citrix's processes have evolved greatly since we started. When Citrix had less than 10 engineers in the late 80s, they used to keep track of bugs on a single common whiteboard! Simple yet effective. 20 years later, we have sophisticated bug tracking and requirements management systems. But yet we still strive for the same simplicity and effectiveness that we had 20 years ago. To that effect, we introduced a number of process improvements:

• Formal requirements authoring processes take backstage, instead lightweight feature specs with visuals, screenshots and video demos take center-stage. We need to document things that need to be communicated, not every possible thing one can ask.

• Formalized Graphical Test Plans only where it makes sense (for complete end-end features, not for individual components or modules).

• For features submissions that are surgical changes, you don't need to produce a full code coverage report (cost doesn't always justify the benefit). But make sure you methodically and carefully step-through code changes with various inputs.

• Test automation only where ROI can be justified.

• No more separate low level and high level design documents. They can be combined into one that is readable by both technical and non-technical audiences. 

Lesson 7: Cross-team hand-off is more than just being code-complete
With a process methodology that is component-centric, we "deliver" frameworks, "release" SDKs or "hand-off" API sets. I get really upset when a team makes tall claims to have done one of these things without having a single consumer try it out first. How do you know that your hand-off meets the requirements of the SDK consumer? Does it even work? Did you factor in the time that it takes to write an installer and release a build, tasks that go hand-in-hand with releasing something? I really think Hand-offs must be signed not by the team that releases it, but by the team that actually consumes it.

Lesson 8: Component complexity is multiplicative, not additive
The amount of cross-team dependencies that we have in our product is amazing. This is no different from any other mature product of our size. Don't underestimate this when taking on a new project. If 20 TC teams each take on a project with a complexity of n, the overall complexity of the release becomes n^20, not 20n. This is due to the high cost of integration and integration testing. Keep this in mind before you take on a new feature. Often, less is more.

Lesson 9: What quality means...
The definition of quality has changed in the least 2 decades. The 80s and 90s were about trying to achieve high quality control. If there was no Six Sigma or SEI certification, you were considered an outcast. Things have changed since then. In the age of well-designed products like the iPhone, Windows 7, Google maps, Amazon and Salesforce, strong visual appeal, good design and usability are now taking center-stage. This has been true for Citrix as well. In the last few years, our focus has been shifting from a blind, knee-jerk, single-dimension view on "bug counts" to taking a more practical approach of solving real customer pain-points (for example: XA5 for Win2003 IMA resiliency, VM Hosted Apps, etc) and making some smart investments in design and intuitive visual appeal (Dazzle, Receiver, etc). Also, we've been constantly keeping maintenance costs low and passing on the cost benefits to our customers, by shedding expensive baggage (high cost, niche legacy feature deprecation and removal of code that is no longer executed). Keep looking for these opportunities at the code level.

Lesson 10: Balance Idealism and practicality
This is really the biggest lesson that I've learned. You can't achieve your ideal vision in one release. Be practical and be patient. Go after hard and known technical problems one at a time. Build on small successes to springboard you to the next level. Enterprise products and quality are built like concentric circles, inside - out. Create and follow a roadmap to your ultimate vision.

Expand Blog Post
Permalink | Twitter Post to Twitter | Comments (0) | Views (1289) |

posted by Vinny Sosa

XenApp Expert Series - Informational, News, Interviews (2009) The show where we interview the experts to get you the latest research and technology news on XenApp application virtualization. Host Vinny Sosa (@vinnysosa) interviews Citrix Architect Joe Nord on application streaming and enhancements coming in XenApp 5 Feature Pack 2. Episode 7, Season 1.


Listen to this episode

Follow XenApp on | | |

Download XenApp technology previews

Expand Blog Post
Permalink | Twitter Post to Twitter | Comments (0) | Views (1012) |

posted by Scott Swanburg


Sounds pretty complicated doesn't it.  Well in fact it can be.  When I was marketing data plans at Cingular Wireless we employed a firm who did nothing but sort through and analyze reams of data from our customer base (54 million subscribers) and find the sweet spot for maximizing our advertising, sales programs and promotions. But what if you are an emerging business not quite at the Fortune 100 level yet?  Can you still take advantage of these techniques and use them to grow your business.  ABSOLUTELY!  In this electronic, e-Marketing, Web based business world, you'd be foolish not to.

But where do you start?  Do you have to employ an Analytics firm with a gaggle of Mathematics PhD's?  Not quite.  There is some very good information (publically) available about how to get the most out of your efforts to market in the new millennium economy.  Business Week recently ran an article entitled "The Web Knows What You Want" (July 27, 2009 edition).  They also have a fantastic resource online... Predictive Analytics Delivers Value Across Business Applications.  There you will find methods on subjects such as Direct Marketing - Customer Responses, Behavior Based Advertising - Which ad customers will click on and Email Targeting - Which message customers will respond to.

As an example of these techniques I'd like to share with you some methods and analytics from this blog series.  First and foremost it is important to pick a subject matter that fits your business model and the audience you are trying to reach.  Note that every article published in this series is directed at people who are interested in CITRIX, SaaS, CLOUD, SERVICE PROVIDER and VIRTUALIZATION.  Each title and subsequent verbiage in the series uses these specific key words so that search engine optimization (SEO) is invoked.  Also, care is taken to insure relevant information is available (published online) whenever a major corporate event is taking place.  People have a higher level of interest in specific topics (and in your company) when they are going to spend money to get to a venue.  In the trend chart below, note the increase in viewer traffic before and during our Synergy and iForum (Europe) events (May-June).


One of the keys to engage people in e-Marketing through social media is writing about topics that are both newsworthy and have some kind of personal impact.   Once you gain an interest level or following, your potential to introduce product/service relevancy is greatly enhanced.  Why?  Because you're not just throwing marketing jargon around and there is a specific value to the writing that pertains to the need of the reader.  Social Media Marketing is also effective because you have the opportunity to grow the base of readers over time.  Note the graph below that depicts the aggregate views of all blogs in this series.  As people resonate with one topic, they are more likely to read more from the same author.


Most importantly, you should keep your messages short and concise... Doh!  I just violated that point with a two page blog!  Sooooo, in closing create your e-marketing programs with relevancy for the reader, venue awareness and personal impact in mind.  Save the flash and hoopla for major events and try to be CONCISE. 
 

Expand Blog Post
Permalink | Twitter Post to Twitter | Comments (0) | Views (1435) |

posted by Daniel Feller

As we now have the desktp virtualization design discussion going, I want to look at the next big question... Should I do XenApp or XenDesktop? Can I get by with Terminal Services or do I need VDI? Spend just a little time going through tweets, blogs and articles related to desktop virtualization and you will be left in the same place you started, asking the simple question "Should I do this or am I crazy?"  When I think about the desktop (I really need to have a better imagination) it isn't focused on what solution to pick, or which vendor to pick... It is focused on one simple concept:

Delivering the Correct Application to the Correct User in the Best Manner Possible

  • What is the correct application? The one the user wants
  • Who is the correct user? The one making the request
  • How should it be delivered?  That is the tricky question isn't it.  This is where we all struggle to make headway, we keep stalling because we just aren't sure.  Why is the decision so difficult? Because users are very demanding. User keep the organization functioning.  If you hurt the user, you hurt the organization, which means you will hurt yourself (bye bye promotion, raise, or job).  

So how do you make the right decision? By realizing three simple truths:

  1. One size does NOT fit all
  2. Applications are unique
  3. User's requirements change

Trying to align the users, applications and devices into a single, coherent desktop virtualization solution seems like a daunting task, but if you follow a few guidelines the process is doable.  For example, if a user comes to work with their own personal laptop, can I simply deliver them a hosted virtual desktop or will they need a local virtual desktop? What about users with a 3-4 year old PC?  What can I do with that setup? 

This is why I suggest you take a look at the following, recently published, white paper focusing on the deciding factors between VDI and Terminal Services-based solution. If you want a highlight of the article, it is that the whole debate is not even a debate at all. 

What do you think? 

Daniel - Lead Architect - Worldwide Consulting Solutions

Follow me on Twitter: http://www.twitter.com/djfeller

Follow me in the Blogs: http://community.citrix.com/blogs/citrite/danielf
  

Expand Blog Post
Permalink | Twitter Post to Twitter | Comments (0) | Views (647) |

posted by Futoshi Baba

Motivation
ICA winstation driver(wdica!KeyboardScanCodes()) always passes the following keyboard input data structure down to termdd!IcaChannelInput() in Shadow_Stack a.k.a passthru stack when user finished Shadow by entering Hotkey "Ctrl + " and remained that key in the previous shadower session. This means to cause SAS dialog by only "Alt" key down.

Debugging and some comments


PROCESS 820d5bc8 SessionId: 0 Cid: 09cc Peb: 7ffdf000 ParentCid: 01f4
DirBase: 0fdee3e0 ObjectTable: e1487130 HandleCount: 413.
Image: svchost.exe

scancode member for keyboard make in KeyboardInputData structure
~ snips ~
MakeCode : 0x1d
Flags : 0
~ snips


This scancode deliver causes to remain win32k!gfsSASModifieresDown(2) in previous shadower session.This is perfomed at win32k!xxxKeyEvent() to remains Ctrl / Shift / Alt key are really phisically down. At this moment, win32k!gfsSASModifieresDown(2) and win32k!gfsSASModifiers(3) by default.

In a mean time, user enteted "Alt" key in previous shadower session then add modifier ALT(1) to win32k!gfsSASModifieresDown(2) win32k!gfsSASModifieresDown became 3 which is SAS modifier Hotkey. then SAS dialog popped up in the previous shadower session as a result of entering "Del" key in win32k!IsSAS().

On the other hand, RDP winstation driver passes keyboard input data structure down to termdd!IcaChannelInput() in Shadow Stack as the same as ICA passthru stack. However, modify Flags member in keyboard data structure to 0x10. This implementation prevented from the same issue so that remains win32k!gfsSASModifieresDown(2) in previous shadower session.

useful conditional break point
The following conditional break patching was effective in this ica shadowing scenario.
0 e f768a096 0001 (0001) termdd!IcaChannelInput "j poi(@esp+8) = 0 & poi(poi(esp+14)+2) = 0x1d'!process -1 0;kv;ew poi(esp+14)+4 0x10;gc';'gc'"

Global Escalation Manager Tokyo
-fb

Expand Blog Post
Permalink | Twitter Post to Twitter | Comments (0) | Views (1917) |


 Device Mapper Multipath Enablement
Kit for HP StorageWorks Disk Arrays

http://bizsupport1.austin.hp.com/bc/docs/support/SupportManual/c01683837/c01683837.pdf

Expand Blog Post
Permalink | Twitter Post to Twitter | Comments (0) | Views (1482) |

posted by Mark Carter

Before I head off for a two-week vacation, I wanted to share a NetScaler VPX how-to video on compression that I posted to Citrix TV.

This video shows how configuring a virtual NetScaler system is very similar to configuring a physical system. If this video piques your interest, then be sure to check out our CNS-200-1I Basic Administration for Citrix NetScaler 9.0 5-day instructor-led training course, which is a great way to prepare yourself to administer any NetScaler implementation. Click here for more information.

I also wanted to let everyone know that we are still on target to release the updated CNS-300-2I Advanced Administration for Citrix NetScaler 9.0 Platinum Edition five-day instructor-led training class in Q4 2009. This course is a great way for experienced NetScaler administrators who have already taken our basic NetScaler administration to enhance their knowledge and skills further. Check out my last blog for more information.

Talk to you in two weeks!

Expand Blog Post
Permalink | Twitter Post to Twitter | Comments (11) | Views (3273) |


Windows Server 2003 is dominant today in Citrix XenApp environments. In fact we are currently at the peak (or nearly so) for a W2k3 installed base for Windows servers in general. As our customers look forward they will be faced with some potentially thorny issues when moving to Windows Server 2008. The main question is whether to go to the first W2k8 release (I will call it "R1" for the sake of simplicity) which includes both 32-bit and 64-bit versions or to skip R1 entirely and go with the recently released R2 which only supports 64-bit.

Based on several discussions we have had with partners and customers there seems to be a continuum of opinions. On the one extreme we hear folks saying that they will stick with 32-bit until it is ripped away from their cold, dead hands. These are among the more conservative who fear the expense and churn of having to validate all of their thousands of 32-bit applications on a 64-bit environment. They have told us they will stay on W2k3 until extended support is complete and then probably go to R1 and milk that for all it's worth to avoid the inevitable. That would mean sticking with a 32-bit OS until possibly 2018 (should we all be retired by then?) going by the Microsoft Lifecycle table for Windows Server 2008! On the other extreme are a few bleeding edge types who have decided to skip R1 and go directly to R2 and bite the 64-bit bullet at the same time as they migrate their environment from W2k3 to the newer OS. In between are those who will move cautiously if begrudgingly over time to the new OS version to avoid falling into the extended maintenance window.

One of the main concerns is, of course, that R2 is 64-bit only. While Microsoft has been stating for some time that Windows on Windows 64 (WoW64) will solve the problems associated with running 32-bit apps on x64 platforms, many customers are still worried about 32-bit apps with 16-bit installers and the ever-present 32-bit drivers. Not to mention, 16-bit apps. None of these will not work on WoW64 environments. On the other hand, don't customers have to test all their apps when transitioning from one OS platform (W2k3) to another (R1 or R2) anyway? What extra work is involved when validating apps on x64 versus just transitioning from one version of the OS to another? Of course out lives would be easier if everyone hopped to the new OS version ASAP so we did not have multiple platforms to support but the reality is quite different. We need to know what your thoughts and plans are on this one.

So this brings me to my questions for the community:

  • What do you have to say as customers and partners?
  • Will you stick to 32-bit as long as humanly possible?
  • Do you have older apps with 16-bit installers or 16-bit apps? What is the plan there? Re-write or retire?
  • What will you do about 32-bit drivers? Printer drivers? Will XenApp's Universal Print Driver solution be the answer?
  • What has been the experience for those who have made the switch to 64-bit?

Give us your comments and take the poll below.

For future updates, follow me on Twitter.

Expand Blog Post

<< Prev   5     6     7     8     9   10   11     12     13     14     15   Next >>