Jump to content

NVidia Video Driver Shutdown Fix


rloew

Recommended Posts

There's no need to get defensive. :huh:

I know that the root cause is unknown, I was just making a point that I believe the root cause to be the same regardless of 9x version. To my knowledge this has not been disproved, so it is still a valid conjecture.

I also know that rloew considers the code safe or he would not have posted it here to begin with.

I disagree though that the missing screen is a "minor inconvenience" - yes, it is a minor inconvenience in the fact that it is not important or necessary that it be displayed, but the point is that I believe the absence of it is a clue that the problem lies deeper.

Link to comment
Share on other sites


Sorry if I sounded that way, was just trying to explain how things are at the moment. :blushing:

Of course, anything's possible, including a common root cause. Finding it would be great.

Please check your PMs. ;)

Link to comment
Share on other sites

I have found a second System Message that needs to be bypassed in order to shutdown Windows ME.

I have updated Post #1 to include both System Messages and the alternate Message found by Miki.

Link to comment
Share on other sites

I have found a second System Message that needs to be bypassed in order to shutdown Windows ME.

I have updated Post #1 to include both System Messages and the alternate Message found by Miki.

Yes the power supply shuts down on both machines, 7800GT with driver 82.16 and 7900GS with driver 82.69. :thumbup

Apparently it works as desired.

Link to comment
Share on other sites

Guess it's time to let it out in the open. :yes:

 

After close consultations with Mr. Loew we managed to build a patcher that would automatically do the job without the need to hex edit the driver file.

The patcher is flexible enough to allow a few variants of the code as it has been found through various tests and reports and it also allows private versions of the code for users with specific driver/hardware/OS combinations where none of the standard code versions apply. Such private code versions, however, would have to be manually written to the ini file of the patcher.

 

The application will automatically create a backup copy of the original driver file in the same folder where the driver resides. Typically that would be the System folder for in-place patching.

The user can also gather a few different driver versions in a single folder (renamed in a distinguishable manner) and patch the whole batch in one single operation.

The application can also patch driver files even when it's launched under a different, NT-based system. However it has only been tested under XP-SP3 so far.

 

In the unfortunate situation that a patch has gone bad - improper private code, corrupt ini file etc. - and the system would become unusable, the original file can be restored in DOS mode by renaming the backup file (typically nvcorebk.vxd) to nvcore.vxd. The patcher is a Win32 GUI application and cannot run in DOS mode - sorry for this limitation. :blushing:

Alternatively, multiboot systems can be rebooted to a different OS where the patcher could be launched, select the defective file's folder, mark the file in the list and choose 'Unpatch'.

 

Driver files patched by this patcher can also be unpatched/restored even when the backup file is missing. In the most unfortunate situation when backup is missing and the file was patched manually or the file is somehow unpatchable, the application will ask you for the location of a manually saved backup to restore from. The log file created in application's folder will reflect the method used when unpatching.

 

IMPORTANT : If you are going to use this application under a very secure system, please place it in a folder that has full read/write permissions, since it has to write to the ini file and create/append to the log file.

 

The application has not been tested at all under Windows 95, 98 Gold (First Edition) or Millenium Edition. It is possible that certain API used by the application may not be implemented in Win95 or 98Gold. If you encounter any error messages or misfunction, please do report them as detailed as possible.

 

The application is open-source, written in AutoHotkey and by default is compressed with UPX (my connection is most of the time capped at 15kB/s so I try to keep filesizes as low as possible). The sources are available in the same folder at the cloud repository. In the event the file is being flagged by your antivirus, please submit it to the VirusTotal site for analysis.

 

Thank you very much Mr. Loew for the patch code itself, for testing, advices, reports and support! :thumbup

 

 

 

DOWNLOAD:  v1.4.5.0 (direct linking to files is not allowed by CloudMe; also please have googleapis scripts allowed in your browser otherwise the page won't be available)

 

Please note older versions are present in the download folder for historical purposes only. Do not use them - some will definitely corrupt the driver files and most use an older, incompatible version of the ini file and the patch code.

Link to comment
Share on other sites

i found two files that you uploaded drugwash, from what i downloaded, the only thing that you would need to do is run the autopatcher from "shutdownpatcher1450" to fix the shutdown issues, so what is the other download for with the file "ShutdownPatcher1450_src"? and this is for the forceware 82.69 under windows 98SE right? 

Edited by cov3rt
Link to comment
Share on other sites

The other package contains the source code. Only useful to developers or people who do not trust the precompiled executable. Also required by the license.

 

The application can patch any driver version provided there's enough space for the code so yes, it should work for 82.69 too. Currently only 98SE and ME have been tested and found working but if positive reports surface for other OS versions they will be mentioned in the documentation. Testers are welcome.

 

Please do read all the available documentation, just to be on the safe side should anything unwanted occur.

Link to comment
Share on other sites

ShutdownPatcher Version 1.4.5.0:

I tested it on the machine with the NV7800GT and driver 82.16 - OS Win ME. It patches with the not working and not revised code on ME. 

 

log:

2015.08.04 11:39:34 Microsoft Windows ME 4.90.3000
=================================================================
• PATCHING
File path: C:\WINDOWS\SYSTEM\nvcore.vxd
Processing nvcore.vxd version: 82.16 [size: 3276893 bytes]

Segment length at 0x144:
- old: 0x2D6EAC
- new: 0x2D6EC0

Call at 0x31F6E6:
- old: 0xFFE554E6
- new: 0x5C2

Additional code at 0x31FCAC:
- old: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- new: 3C 04 74 08 3C 32 75 02 B0 52 89 44 24 04 E9 11 4F E5 FF 14
Result: DONE.
Details: Backup file saved as C:\WINDOWS\SYSTEM\nvcorebk.vxd

Link to comment
Share on other sites

Thank you for testing and feedback.

I assume you used the 'Safe' code type option which is the default. That one may not work on every system.

Please unpatch the file and then repatch selecting 'Wide' or 'Full' (which are both the same, currently, for WinME).

There is no need to reboot or reload the program between operations.

 

Just now I realised a repatch operation was never considered. When I get to build a newer version I'll make it repatch without the need to unpatch first, but it will only work for files patched with the patcher, not those manually patched.

Link to comment
Share on other sites

OK, "wide" and "full" works. ME users should see, that they must select these options. Obviously the "safe mode" is the default one, if you don't select "code type" (empty box). 

 

 

And another thing, I see two differences between code of rloew in the first post and your ShutdownPatcher:

 

144: AC -> C3
31F6E6: E6 54 E5 FF -> C2 05 00 00
31FCAC: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -> 3C 04 74 08 3C 25 74 04 3C 32 75 02 B0 52 89 44 24 04 E9 0D 4F E5 FF

 

Segment length at 0x144:

-  0x2D6EC4

Call at 0x31F6E6:
- new: 0x5C2

Additional code at 0x31FCAC:
- new: 3C 04 74 08 3C 25 74 04 3C 32 75 02 B0 52 89 44 24 04 E9 0D 4F E5 FF 18

Edited by schwups
Link to comment
Share on other sites

Hm, did you get an empty selection for 'code type'? It should be preselected to 'Safe' on first run and then saved/restored through the ini file.

 

I've set the default to 'Safe' because there are systems that work with only one message bypassed, as found by Mr. Loew and reported through the topic. Logic is not to overdo when simple version works.

For systems that don't work with the single message approach there are the other options in 'code type'. The user would have to test each option one at a time and stick with the one that works for that particular system. That is precisely why there is a 'Private' option, where the user can try their own particular code version which doesn't fit any of the standard ones.

 

As for the byte changes you noticed, they are necessary for a failsafe unpatch/restore in case the backup file is damaged or missing.

The first difference at 0x144 is segment length, increased by one.

The second difference is additional code length, appended to the actual running code (and reason why segment length was increased). That value is essential for a succesful restore in the above-mentioned situation and also for an upcoming overpatch ability (repatch without having to unpatch first).

 

I'm glad it all works for you without problems. Thanks again. :)

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...