Using the NVIDIA GeForce2 MX400 on 32-bit Windows Vista / Windows 7

January 8, 2011

The GeForce2 MX400 is an older NVIDIA graphics card which is no longer supported in Windows Vista or later versions of Windows (including Windows 7).

Windows Vista introduced a new display driver model (WDDM) which offers significant changes and improvements over the previous model (XPDM) used in Windows XP/2000/2003. WDDM requires advanced GPU features which are not available on many older graphics cards. Windows Vista can use XPDM drivers which means you can install versions of drivers which vendors have provided for Windows XP, but there are a lot of stability issues with most of them. Vista includes updated XPDM drivers for a limited number of legacy cards which are installed automatically work properly. For most legacy display adapters it will simply install the “Standard VGA Adapter” driver. This driver works fine for many things, but it ignores the extra features supported by many adapters (like multiple displays, larger screen resolutions, configurable CRT monitor refresh rate, and DirectX/OpenGL hardware acceleration).

The GeForce2 MX400 has decent enough features to be useful for regular users who don’t need a lot of GPU power (for gaming etc.). The problem is that the XPDM drivers for legacy NVIDIA display adapters included with Windows Vista only support the GeForce4 series or newer.  The GeForce2 MX400 is installed as a standard VGA adapter which cripples many of it’s capabilities.

Luckily, the Windows 2000/XP drivers provided by NVIDIA (version 91.31) work flawlessly in Windows Vista and Windows 7 without any modifications. Download the driver package here. The installation will fail if you try and run it, but you can extract the contents of the exe package to a directory using WinRAR. Open Device Manager (devmgmt.msc) and  expand the “Display Adapters” section, then update the driver for the “Standard VGA Adapter” (right click on it and select “Update Driver Software…”). Choose to manually select the device driver and then browse to the location where you extracted the NVIDIA driver files (you should see the ‘nv4_disp.inf’ file within the directory). Windows should find the correctly matching “NVIDIA GeForce2 MX/MX 400” driver and allow you to install it. Once you reboot the system the driver should work properly and support all of the adapter’s additional features. You can confirm that they are working correctly by running ‘dxdiag’ and checking under the ‘Display’ tab. All of the features listed under the “DirectX Features” section should be “Enabled”.


Windows Live Messenger Shows Contacts as Offline When They Are Really Online and You Cannot Send Offline Instant Messages to those Contacts

November 7, 2010

Recently I discovered a strange phenomenon under Windows Live Messenger 2011 (and it apparently also affects Windows Live Messenger 2010 as well). Some of your contacts will always be shown as being in “Offline” status when they are actually online (they show up as Online in other Messenger clients). You can receive instant messages from them, and messages sent to them from other clients also show up in the instant message windows of Windows Live Messenger 2011. When you attempt to send them an offline instant message, it reports: “The following message could not be delivered to all recipients”, and fails to send it it.

My wife is usually logged into a Windows Live Messenger instance through her cell phone carrier, and I often use Windows Live Messenger to send messages to her cell phone. For the past week or so my copy of Windows Live has shown her as Offline and failed to send her offline instant messages, which I initially thought to be a problem with her cell phone carrier’s system. When I started receiving messages from her which I could not reply to, I opened up Windows Live Web Messenger and verified that she was actually online the whole time. Web Messenger could also send her instant messages, which oddly enough would show up in the Windows Live Messenger 2011 instant message window.

I suspect that it is most likely a problem between the Windows Live servers and different versions of the Messenger protocol.

In the case of my wife’s account, I think her cell phone carrier’s software is using the old Messenger protocol, and it is somehow not being properly linked to the Windows Live servers (and ultimately clients) using the new protocol. Windows Live Web Messenger probably uses the old protocol.

The only solution seems to be to use a client which uses the older Messenger protocol.

You can use Windows Live Web Messenger which has no problems. The online version of Windows Live Messenger which is integrated into Windows Hotmail doesn’t work as it seems to (at least on my system). You can install Windows Messenger alongside MSN/Windows Live Messenger. It is lacking a lot of features and doesn’t always work well…but it is handy for situations where MSN/Windows Live Messenger is not working. You can download Windows Messenger 5.1.0701 here. To install it under Windows Vista or Windows 7 you will need to use a workaround or disable UAC to get the messenger.msi file to install correctly.


Install Windows Messenger 5.1 on Windows Vista or Windows 7

October 19, 2010

Windows Messenger was an instant messaging client from Microsoft which could connect to Microsoft .NET Passport (now Windows Live ID), SIP (session initiation protocol) communication services, and Microsoft Exchange Instant Messaging. Windows Messenger 5.1 was included with Windows XP but was not released for any newer versions of Windows (it has been replaced by newer products like Windows Live Messenger and Office Communicator). You can obtain more information about Windows Messenger from the Windows Messenger How-To Center on Microsoft’s web site.

Windows Messenger is fairly out-dated and does not have many of the features included in newer versions of MSN Messenger/Windows Live Messenger (see this Microsoft document for some details). It can still can be useful (or even necessary) for some things. It is especially handy because it works alongside MSN Messenger/Windows Live Messenger and is not affected by their installations. If Windows Live Messenger is broken or unable to connect you can use Windows Messenger as a backup. Windows Live Messenger also cannot connect to SIP communication services or Exchange instant messaging.

You can download the installer for Windows Messenger 5.1.0701 from here.

When you run the “Messenger.msi” installation file under Windows Vista or Windows 7 it fails partway through the installation process, reporting that the installation was interrupted. The problem is caused by a compatibility issue between the MSI package and UAC. You cannot simply adjust compatibility modes or elevated privileges for standalone MSI packages like you can for setup executables because they are handled by the Windows Installer service.

To get it to install properly, open an elevated command prompt (right click the “Command Prompt” shortcut under the start menu and select “Run as Administrator”). From the administrative command prompt enter the commands:

msiexec /a <path>
msiexec /i <path>

Where <path> is the location of the messenger.msi file. So if I saved it to my desktop, the commands would be:

msiexec /a C:\Users\Keith\Desktop\Messenger.msi
msiexec /i C:\Users\Keith\Desktop\Messenger.msi

The installation will run and should be able to complete successfully.


File Copy Between Local Drives Hangs in Vista

July 25, 2010

Recently I have run into a strange issue on my Windows Vista machine. When copying movie files between my local hard drives the file copy process gets stuck and never completes.  The dialogs will remain there forever at the same spot unless you end the explorer.exe process which hosts them or use the Cancel button and then the close box (described further below).

There was a popular Vista file copy problem that was patched a long time ago related to copying from mapped network drives. The problem on my system occurs when copying between hard drives.

I have been trying to troubleshoot the issue and have found a workaround but no solution for the problem so far.

Details

The file copy or move process starts and hangs at a random point within the process. Some files are successfully copied or moved but the rest of the operation will never be completed. The file copy dialog is responsive and doesn’t lock up. It just get’s stuck and reads the same file, speed and time remaining until the explorer process ends. If you hit the “Cancel” button on the file copy dialog, it will remain stuck on the “Cancelling…” operation.

If you check the destination there may be files copied or many not be, depending on how far it got before it gets stuck. If you try to perform another file copy after, it will also get stuck. Often a problem will reoccur with the same file if you just try to copy it again afterward. If you try to delete those files afterwards that may also get stuck.

Vista also usually has a thread I/O request timeout error that occurs when a file copy gets stuck, but for some reason it doesn’t appear when this issue occurs and the copy dialog will remain until the explorer.exe process ends or it is cancelled and then closed.

Troubleshooting

When you check the explorer.exe process under task manager, there is no significant change in I/O reads or writes after it gets stuck. It’s committed memory size and number of page faults do not significantly change either.

At first I thought it may be a problem with the hard drives. I ran a full chkdsk /r (locate bad sectors and attempt recovery) on all my drives and there were no problems found at all.

I had a similar problem when Vista first came out with Symantec Antivirus severely slowing my network file copies because it was scanning huge RAR and ISO files. I tried stopping the Microsoft Security Essentials service and turning off real time protection, but it didn’t affect the issue at all.

I also tried stopping the Windows Search service in case they may be attempting to index the file (and perhaps a bad iFilter) was causing the stall. But there also was no effect on the issue.

Since I often had the problem while copying video files, I thought it could possibly be Explorer’s thumbnail generator causing the stall (maybe in combination with a bad DirectShow Filter). Usually when there’s a problem with a DS filter it ends up crashing the app it is running in but I have seen other things happen, like a splitter causing Windows Live Photo Gallery to stall on the first frame of video. I unregistered (regsvr32 /u) most of the DirectShow components I had installed except for a basic few (DivX, ffdshow, XVid,  Ogg DS) which I also made sure were up to date. I tried disabling explorer’s thumbnail generator (by unchecking “Always Show Icons, Never Thumbnails” in the Advanced Folder options), but there was no effect on the problem.

I will have to do some further investigating with Process Explorer when I have some more time this week. For now I haven’t found the cause, just a way to work around the issue.

Workaround

I tried performing the copy operation from an Administrative command prompt and found that you could successfully copy the files without any problem using the “copy” command. Even while 3 or 4 hung explorer file copy windows are present and supposedly copying the same file.

Strangely, using the “move” command has the same problem as explorer and will just hang until you break out of it with CTRL-C. I don’t know why “move” has trouble because you can use manually use the “copy” command to copy the files and then “del” to delete them afterwards without any problems.

You can also cancel the hung file copy dialogs by pressing the “Cancel” button and then the close button on the dialog afterwards. Just hitting cancel will not work. Sometimes explorer will maintain a lock on the file it was stuck on (preventing you from moving or deleting the file) even after you have cancelled the copy dialog. You have to kill the explorer.exe process from Task Manager and restart it to remove the file lock.


Adding Custom Entries to the Windows Components Wizard in Windows XP

June 3, 2010

About the Windows Component Wizard

The Windows Component Wizard can be accessed from inside the “Add or Remove Programs” control panel (appwiz.cpl) in Windows XP. On the left hand side of the control panel (in the grey band) is a button to “Add/Remove Windows Components”, which will launch the Windows Components Wizard.

The wizard provides and manages a list Windows components and component groups which can be selected for installation or removal. Each item can be checked or uncheck to control it’s installation status. Once the user has selected the configuration they want, they can click the “Next” button and the wizard will perform all of the chosen installation or removal tasks.

About the Sysoc.inf File

All of the entries which are displayed in the Wizard are contained in the file “sysoc.inf” which is stored under the %WinDir%\INF directory (The INF directory may be hidden on some systems, but you can quickly open it by typing “INF” in the Run box).

Many people who tweak XP will recognize this file, as it has hidden components which are not listed in the Wizard (like Windows Messenger) which can be made visible by editing the entries in this file (and then removed using the wizard).

The file can also be used by the System Stand-Alone Component Manager (SYSOCMGR.EXE) tool which is included with Windows 2000 or higher for the unattended addition or removal of Windows components.

The Sysoc.inf Entries

If you open up the file you will see a bunch of INF code. INF is an installation scripting language which looks much more complicated than it actually is. If you’d like to learn about INF files, MSDN has some good documentation here.

Inside the file will be a [Version] section which we don’t have to worry about. The section we want to look at is [Components]. Those are the entries which form the root listing of the Components Wizard.

Each entry will have the following format:

[Component]=[DLL Name],[DLL Entry Point],[INF File],[hide],[Number]

Component is the internal name which is used to reference the component in the INF files. I’m not 100% sure what the  DLL name and entry point are for (probably setup procedures). The INF file is a separate INF which contains the component details and installation script. The hide entry is used to hide the item in the Wizard, or is left empty when the item is visible. I don’t know what the last number is for either, it usually is 7. All of the values are required except ‘hide’.

For example, in the line for Windows Messenger:

msmsgs=msgrocm.dll,OcEntry,msmsgs.inf,hide,7

‘msmsgs’ is the internal name which is used to refer to the component within the INF files. msgrocm.dll and OcEntry are the DLL file and entry point. The next item is the INF file (msmsgs.inf) which contains the component’s information and installation code. The hide entry means it will not show up in the Component Wizard. Finally, there is the number 7.

The Component INF Entries

If you open up one of the component INF files which is referenced in sysoc.inf, you will see INF code which describes the component or group, and the code which is used to install or remove the component.

The first section that is unique is [OptionalComponents]. This section contains all of the internal component names, with the first being the top level option, and all of it’s child components after. I believe this defines the items in a group, but have not confirmed it yet.

The component name used in the sysoc.inf line will be the name of the section which contains the component information. For example, the Windows Messenger line listed above specifies the component name as ‘msmsgs’, That means the messenger component’s information will be found under the [msmsgs] section in the msmsgs.inf file.

Under the component’s section will be several directives. The following directives control what is displayed under the Component Wizard:

OptionDesc Display name of the component.
Tip Description of the component.
Uninstall The INF section used to uninstall component.
InstallType Number (Don’t know what it means)
IconIndex Index of icon within a Windows DLL (shell32.dll?)
Modes Comma separated numbers (don’t know)
SizeApproximation Approximate size (in bytes) of installation.
Parent Name of parent group.

The remaining section lines are standard INF directives which are used for the component’s installation process.

After you look at a couple of the component INF’s you should get a decent idea of how they work. Now we move on to:

Adding Your Own Entries

In order to add your own components you will first need to add a new entry under the [Components] section of sysoc.inf.

WARNING: If you edit the sysoc.inf file incorrectly, it will cause the Windows Components Wizard to crash or close unexpectedly. Make sure you backup the sysoc.inf file (or any others) before you modify them.

You can add your entry anywhere under the [Components] section. Make sure your component name is unique. For the DLL name and entry point you can use “ocgen.dll” and “OcEntry”. Some of the others can cause crashes, but I have used OcEntry many times and have had no problems. It may even be a dummy function call, many other items in sysoc.inf use it. Enter the name of your component’s INF file. You can include your component section within an existing INF file, or create a new one. You can leave the next value empty, or put in “hide” if you want it to be hidden. For the final value put 7.

Here’s an example of a custom component sysoc entry to install the Visual Basic 1.0 runtime library:

[Components]
vbrun10=ogen.dll,OcEntry,vbrun10.inf,,7

After that you will need to create your component’s section in the specified INF file and set it’s options. If you are creating a new INF file for your component you will need to also have the [Versions] section with the Signature=”$WINDOWS NT$” directive as a minimum. You should be able to test it in the wizard at this point to see how it looks. The final steps will be to write the installation code and make sure it all works.

For our example component, here’s the INF:

[Version]
Signature = $WINDOWS NT$

[DestinationDirs]
1=

[vbrun10]
OptionDesc = %CAPTION%
Tip = %INFO%
Uninstall = vbrun10_uninstall
IconIndex = 34
Modes = 0,1,2,3
SizeApproximation = 151552
CopyFiles = vbrun10_copyfiles

[vbrun10_copyfiles]
vbrun10.dll,,,

[vbrun10_uninstall]
DelFiles

[Strings]
CAPTION = "Visual Basic 1.0 Runtime"
INFO = "Allows you to run Visual Basic 1.0 applications."


Workaround for Missing Summary Tab in Vista File Properties: Virtual PC & Windows XP

March 19, 2010

Introduction:

In Windows 2000, XP and Server 2003 if you open the properties of any files stored on an NTFS volume, there is a summary tab which allows you to enter some basic information about the file.

The property page would provide the following fields: Title, Subject, Author, Category, Keywords, Comments, Source, and Revision Number. Each of the fields would accept a text value which could be used to describe and “tag” the file.

The columns can be added to the details view in Explorer, which allowed for easy viewing and sorting based on the information. The Windows Search service also indexes the information so it can be used in searches.

The Changes in Vista:

In Windows Vista and newer versions of Windows, the Summary tab has been removed from the file properties, and you cannot edit the properties with Explorer. The Details view columns also no longer work with the Summary information.

Vista supports tagging files as long as the tags are stored internally within the file itself. You can tag files like MP3, JPG, and DOC through the Details pane and properties dialog because the tags are written into the file itself. File formats which do not support internal tags cannot be tagged.

Previously, the summary content and many other pieces of metadata were stored in NTFS alternate data streams.

About Alternate Data Streams:

NTFS supports a feature called alternate data streams (ADS). Alternate data streams allow data to be attached to a file, but stored in a separate “fork” on the file system. This allows you to store data such as comments along with a file, without modifying the file itself.

For example, when you download an executable file, Windows creates a stream named “Zone.Identifier” with content like:

[ZoneTransfer]
ZoneId=3

When you open the executable file, Windows checks for the stream and pops up the downloaded program warning dialog when it is present.

The problem is that other file systems do not support ADS, and many applications are not ADS aware. If you set the summary information on a file and send it to someone over the internet, the alternate streams will not be copied. The same thing will happen when it’s copied to a flash drive, camera, or music player, which usually use the FAT file system.

In order to avoid the issue of the metadata being lost, Microsoft decided that they would drop support for tagging through ADS.

Use Windows XP as a Workaround:

If you have existing summary information it will still be present on the file system.

The workaround is to use Windows XP to set the information on the files. XP can access the properties of files on network shares and set the Summary information.

Using Virtual PC:

If you don’t have a spare system running XP, you can use Virtual PC. You can download and install Virtual PC 2007 from Microsoft for free. You will need a Windows XP installation disc or ISO image and a product key to install on Virtual PC.

Once you have Virtual PC installed, you need to setup a new virtual machine. Most of the default options VPC selects for Windows XP should be fine, but you’ll probably want to set the virtual hard disk file’s size to be lower (VPC selects a large size by default, but XP should easily fit in under 5GB). Start the virtual machine and insert the XP disc (or select CD->Capture ISO Image from the menu if you have an ISO), it should boot the CD and allow you to install XP.

Once XP is installed, it can share your network adapter and connect to your network. The VPC additions allow for shared folders between the host and virtual system, but you will not be able to set the summary information over them. You must connect over Windows file sharing.

Sharing The Files Between Systems:

Share the files on your Vista system. You may have to enable file sharing through the Network and Sharing center first. You will also need to make sure the XP user has sufficient privileges to write to the share. To simplify the login/permissions process, give your XP user the same user name and password as your Vista user account.

You can do this from an elevated command prompt using the net command:

net share <share name>=”<path>” /GRANT:”<user name>”,FULL

Then to map it from your XP machine, you could use:

net use <drive>: \\<computer name>\<share name>

net use <drive>: \\<IP address>\<share name>

For example, I could share my pictures with this command:

net share pix=”C:\Users\Me\Pictures” /GRANT:”XP User”,FULL

and then map it as x: in My Computer on the VPC using:

net use x: \\VISTAPC\pix

Additional Details:

Viewing the Summary Stream Names:

There are many third party tools for working with ADS. Windows Vista also has added support for ADS in some of it’s tools like ‘dir’.

If we set the Summary information for a file (test.txt) we can use “dir /r” on Vista to see all of it’s attached data streams:

Microsoft Windows [Version 6.0.6002]
Copyright (c) 2006 Microsoft Corporation. All rights reserved.

S:\Software>dir *.txt /r
Volume in drive S is Software
Volume Serial Number is 0000-0000

Directory of S:\Software

03/19/2010 03:16 AM 0 Test.txt
120 Test.txt:♣DocumentSummaryInformation:$DAT
A
220 Test.txt:♣SummaryInformation:$DATA
0 Test.txt:{4c8cc155-6c1e-11d1-8e41-00c04fb
9386d}:$DATA
1 File(s) 0 bytes
0 Dir(s) 483,427,966,976 bytes free

S:\Software>

We can try to view the contents of an ADS stream using MORE: (This doesn’t always work very well)

S:\>more < "Test.txt:{4c8cc155-6c1e-11d1-8e41-00c04fb9386d}"