Install Steam
login
|
language
简体中文 (Simplified Chinese)
繁體中文 (Traditional Chinese)
日本語 (Japanese)
한국어 (Korean)
ไทย (Thai)
Български (Bulgarian)
Čeština (Czech)
Dansk (Danish)
Deutsch (German)
Español - España (Spanish - Spain)
Español - Latinoamérica (Spanish - Latin America)
Ελληνικά (Greek)
Français (French)
Italiano (Italian)
Bahasa Indonesia (Indonesian)
Magyar (Hungarian)
Nederlands (Dutch)
Norsk (Norwegian)
Polski (Polish)
Português (Portuguese - Portugal)
Português - Brasil (Portuguese - Brazil)
Română (Romanian)
Русский (Russian)
Suomi (Finnish)
Svenska (Swedish)
Türkçe (Turkish)
Tiếng Việt (Vietnamese)
Українська (Ukrainian)
Report a translation problem
I'll go ahead and explain what percentiles are when I release this thing onto the main branch. I think most people are at least somewhat familiar with the concept, but maybe not how it pertains to tuning your game to minimize unpleasant framerate variation that you'd never be able to get rid of if all you did was focus on average (median or mean).
i installed RTSS few days ago, it does not cause this issue, never did, issue appeared before. Its not issue of my OS as well, because it started with SpecialK 10.x, it temporary stopped once i stopped injection and killed rundlll proces with specialk dll and restarted all processed it tampered with. And this issue is permanently fixed once i pressed uninstall button in SKIM. So its clear as day that SK does something wrong and its started doing it wrong with 10.x release, because it did not happen with 9.x, so they only way to really fix it - is investigate code instead of suggesting me to reinstall os, which obviously would not help (especially after i mentioned that in recent 2 week my OS was reinstalled 3 time for new builds, you did not pay much of attention to this detail). I dont know why it happens, because i did not look into internals of SK code and dont really want too since i dont have time for tha, but im 100% confiden that cause of this MAJOR issue is there.
Maybe the way you do things was safer in older builds of Windows and older Nvidia drivers and maybe in recent drivers and insider previews Nvidia MS changed something in how Start Menu and other Windows got rendered and SpecialK did not expect this change and started destructive actions, but there is absolutely no doubt that SpecialK causing this SERIOUS (if it hangs up system up to BSODs and fully unresponsible windows that only can be fixed by RESET button, its a serious problem) problem and there is nothing else to blame, especially when uninstallation of SK fixes the problem! So please dont blame my installation of OS, investigate this bug.
P.S. I will do some little testing by installing 9.x version and will see it will behave the same to confirm if its general SK issue or 10.x specific.
P.S.2 - i just noticed something new in Special K folder - WinRing0 drivers, even despite SKIM is uninstalled WinRing0x64.sys is locked and used now... Since when and why you started to use zero ring drivers in SpecialK? And how does these driver files even appear in special k folder if those files not existing in in archive?
Are they silently downloaded without permission or warning when SK runs, or they are packed inside one of dlls or SKIM and got unpacked at some point, yet again silently? This behavior of SK starts to bother me... i heard rumors about SK doing nasty stuff in bg, and never believed them, but right now my suspectometr rised above average... i still trust you and belive that intentions are good, but i still want answers and want transparency, explaination and at least some warning and ask for permision for doing things like this, instead of installing zero ring drivers silently.
Also you claim that SK does not hook system process, but it is not true, zero ring driver basically can give you power to do anything, and i just used simple search in Procexp for processes that got hooked by special K and prevented dll from being deleted, and here are few results:
NvContainer got hooked, its part of Nvidia streaming drivers and its third party system file
this is cmd of process
"C:\Program Files\NVIDIA Corporation\NvContainer\nvcontainer.exe" -f "C:\ProgramData\NVIDIA\NvContainerUser%dSPUser.log" -d "C:\Program Files\NVIDIA Corporation\NvContainer\plugins\SPUser" -r -l 3 -p 30000 -st "C:\Program Files\NVIDIA Corporation\NvContainer\NvContainerTelemetryApi.dll" -c
this is where it starts
Task Scheduler\NvDriverUpdateCheckDaily_{B2FE1952-0186-46C3-BAEC-A80AA35AC5B8}
Another hooked system file this time right from windows that got hooked was one specific service host
svchost.exe (did not manage to save its data before freeze)
Surely there was
StatMenuExpirienceHost.exe
and few more
They are all got SpecialK dll loaded and this is what caused all the troubes i mentioned above - when no SK injection starts afer OS loading and when zero ring driver got removed - everything is fine, so special K hooking system processes is undenyable cause.
Im not sure about your new terminology, but in my simple old terminolgy when process has loaded dll which process did not call from dll imports and aint got unloaded imediately it if happened by mistake, its a hook dll that got this process "hooked".
So if SK does not hook system processes, why it loaded into those system processes that does not suppose to load it?
And ill ask again - whats zero ring driver (and few debug helpers) doing in SK installation and how it got silently there and why it was actively used by system and why there is nothing in readme or in this thread that mention that?
If you're not happy with it, you're more than welcome to stop using Special K. Those drivers are there for debug / reverse engineering / performance monitoring and I'm not removing them, sorry.
This did not answer to lot of my questions (including HOW DOES zero ring driver appear there post install? downloaded or unpacked? i asked for transparency but your answer doest not seem very transparent) and you did not answer to a main problem - special k causing system instability (not like RTSS, which i even uninstalled for clear expirement, please dont bring it in again, its not related to subject) and breaking windows UI, its a serious issue and you have to investigate and fix it instead of suggesting me to stop using special k.
It would not fix this issue, and few pages ago people mentined same issue (you are obviously not keeping attention to half or more things said here by me and others) so im not the only one for whom recent Special K brakes Start menu and basically every window with heavy CPU load up to the point of BSOD or RESET! And as more people got upgrade to recent builts of windows as more people would most likely have same issue.
WinRing0 replaced the WMI method of getting CPU statistics in SpecialK. You can install it or uninstall it thru the GUI panel btw if you didn't know.
Also remember what I said about Nvidia drivers a few posts back? For me its Nvidia Drivers installed that causes my start menu to lock up. And not work. I don't use Global INjection unless I start it manually for a specific game. And I always unload it after I am done.
Edit:
SOmething else you said. You mentioned how it starts once OS starts to boot up. Try making Skim64.exe not run on bootup. I never have it automatically boot up as a startup item. Try doing that instead and see if your problem persists. I do know on 1903 Nvidia drivers recently have been locking my Start menu after fresh install. And I wasn't even running Skim64.exe b/c I do most injections thru local not global. I only use global in games that I can't get to work locally with reshade. That's the only time I do that. I advise you to do the same. B/c yes Skim64.exe has gotten stuck in many programs and gets stuck as locked process. But you can minimize that and Kaldaien even fixed that certain behavior very recently in 0.10 I think.
Until you pay Kaldaien for a service or for him to work for you, maybe you should just not waste his time with ignorant comments lol. He does this for free. If he doesn't respond to people's comments, its cuz he has a life just like any of us. Weird right, another human having a life? Who would have thought.
Afaik it only installs when you run as admin though, and seeing as you are complaining about SK itself injecting into <everything>... are you just globally running the thing as admin?
You clicked this button right here that says "Install Driver": https://images.aemony.se/sharex/My_Friend_Pedro_-_Blood_Bullets_Bananas_2019-06-23_07-28-10.png
You clicked on "Install Driver" to obtain more accurate CPU metrics, which caused the driver to be extracted from the SpecialK DLL file and installed to the system.
I am not certain whether uninstalling the global injector actually removes that driver or not, as the logic to do so is located within the Special K DLL files, but if not then you can uninstall it manually by running "sc delete WinRing0_1_2_0" in an elevated command line prompt, followed by restarting your PC.
You're vastly overstating the abilities of that driver... As mentioned in the screenshot above, it's the DLL used by a bunch of different monitoring tools to obtain and show more details to the user about their CPU. The digital certificate of the driver is also fine, meaning the driver is untouched since Noriyuki Miyazaki of https://crystalmark.info (CrystalDiskMark fame) compiled it back in 2008.
https://images.aemony.se/sharex/explorer_2019-06-23_07-34-25.png
That process is neither elevated nor a process owned by another user: https://images.aemony.se/sharex/firefox_2019-06-23_07-36-58.png
It is, in fact, a regular user-level process owned by the user, which is what causes Special K and other tools using CBT hooks to hook it.
SKIM can only inject the Special K DLL files into processes that shares the same "process space" as itself or below. That means, unless you're running SKIM as an admin, that it can and will only inject itself into all non-elevated processes created by the user. Any other processes owned by another user (such as SYSTEM, NETWORK SERVICE, LOCAL SERVICE, or etc), or running with elevated permissions will not be hooked.
Technically it is possible for SKIM to also hook elevated and non-user owned processes, but it requires doing stuff like running SKIM as an administrator, or even forcefully running it as the SYSTEM account, or having disabled/blown a hole through UAC for some reason or another.
---------
1. The way CBT hooks[docs.microsoft.com] work is by hooking window related calls of all running processes in its shared process space (i.e. non-elevated, user-owned processes). This is what's causing Special K's DLL file to be injected into the Nvidia process, the StartMenuExperienceHost.exe process, as well as other processes that share the same user and process context.
2. When Special K gets injected and loaded into a process, it is basically in an "idle state" where no in-depth or convoluted functions are called. What it then tries to do next is figure out what process and context it got loaded in, by checking some basic stuff about it (e.g. tries to find a SpecialK.[graphicsAPI] in the same folder, or comparing the path of the process to the global whitelist.ini or built-in whitelist ("steam" in the path name to the process) or blacklist of processes, etc) and whether it was loaded by SKIM using CBT hooks or not.
3. If the injected Special K DLL file discovers that "Hey, I am in a process where I am supposed to do stuff!" then it "boots up" from that basic idle state and tries to find and hook compatible APIs of the process (graphics APIs, XInput, DirectInput, mostly). Finally, it attempts to realize what graphics API is being used to draw frames, and add its own overlay and tools to that pipeline.
4. If Special K doesn't detect that it is present in a process where it is supposed to do stuff, it will remain in that idle state in that process not doing anything until either the process is terminated or SKIM sends out an "eject" signal (when it closes down or hits "stop injection").
What you need to understand is that Special K's DLL file _needs_ to remain in other user-level processes when injected globally using CBT hooks as a consequence of how CBT hooks work. Those hooks applies to _all_ of the user-owned non-elevated processes, and so to prevent an insane amount of ejection/injection of the Special K DLL file, it needs to remain within the process in an idle state.
For a while a year or so ago when CBT hooks was first introduced Special K's DLL files attempted to eject themselves as soon as they discovered they were present in a process they didn't intend to fully boot up in, but the consequence of that was that the CBT hooks auto-injected Special K in the process again immediately after the DLL file had been unloaded, causing a ton of issues for some applications (e.g. WinSCP and possibly PuTTY stuttered down to a crawl as soon as global injection was enabled, as a result of the frequent unloading/loading of the DLL file).
If you do not want Special K loaded into other user-owned non-elevated processes then you shouldn't use the global injector at all, but instead manually inject the DLL file into appropriate processes using an alternative inject tool. I personally use nefarius' Injector[github.com].
---------
While it is technically possibly for SKIM to load Special K into processes without using CBT hooks, according to Kaldaien the alternative ways might not be fast enough for Special K to properly engage all of its various features at the launch of a game. CBT hooks basically ensures that immediately as the game spawns a window, Special K will get injected into it and apply its various tweaks and overrides if it is found to be a whitelisted process.
For a while now since I learned of nefarius's Injector I've been wanting to create a separate injector tool that manually loads Special K into only the specified processes. Such a tool would basically be a GUI wrapper around nefarius's Injector combined with automated processing of the SpecialK\Global\whitelist.ini file (global whitelist that dictates what other non-Steam processes are fine to boot up fully inside).
If and when I will have such a tool ready is sadly not something I can answer (I am barely a hobby developer at this point) as I don't have the environment for it, but such a tool would allow for more flexibility and alternate ways of injecting Special K, although at a loss of functionality.
A simple overview of the tool is basically:
1. Once per X number of seconds, poll all running non-elevated processes of the user.
2. Present the user with an easy-to-use tray icon with windows/processes listed for easy injection.
3. When the user clicks on a window in the list, the tool would do two things:
a) Update whitelist.ini to include the full path of the process executable.
b) Load the appropriate Special K DLL file by using either nefarius' Injector tool, or by using LoadLibrary calls directly.
---------
TL;DR: Shit's complicated, yo.
As for how 2) got there, my best guess is that you didn't read the ENORMOUS colorful tooltip explaining all of this when you clicked "Install Driver" on the CPU widget.
And where it came from: https://gitlab.com/Kaldaien/SpecialK/tree/0.10.xdr/resource/packages
I've answered most of your questions, if you want to be a little more polite I'll be happy to discuss things further, but otherwise I'm going to ignore you for a while to preserve my sanity.
Now thats and all the other answers above are the answers i was asking for. However i never seen any tooltip saying anything about driver installation, but i recently started SKIM as admin, so that could be a reason of installation i did not notice.
Ok, i have enought of explaination about driver, thanks. But what about start and windows locking?
I’d in general recommend using local DLL installs for the games you want to use Special K within, or the alternative injector tool I mentioned.
Otherwise the only options you have available is to basically play whack-a-mole with non-Microsoft DLL files listed in Special K’s modules and main logs, and basically shut down all sorts of third-party apps until the weird behavior goes away when Special K is active.
Part of Special K’s launch complexity comes from the fact that Kaldaien have stuffed /all of the functionality/ in it. Special K’s DLL files aren’t just the in-game components, but also the install procedure, the uninstall procedure, the auto-update checks and executions, all the essential components of the global injector itself, etc.
SKIM is basically a tiny front-end that just make relevant calls to functions within the DLL files.
This is for example why Special K is possible to update game-specific mods with auto-update support (e.g. NieR:Automata) on its own, or why a year or so ago local DLL installs in game folders were capable of (incorrectly) trigger auto-updates of itself from the main channel (so users would get SKIM and the other files stored in the main archives extracted to the game folder).
This all adds on complexity as the Special K DLL files needs to be able to detect and handle all the different relevant scenarios it finds itself in, when in reality it doesn’t really need to be able to do half the stuff it does if it had a separate tool that did it all for it instead.
This all stems, I believe, from Kaldaien’s inexperience at high-level programming languages, which is necessary to easily be able to create and maintain highly functional GUIs nowadays. Basically the project could really benefit from a dedicated UI developer who could create a better alternative of SKIM with more complex and advance features, allowing such code to be stripped out from Special K proper.
This was a weird capitalist answer, like people cant ask for improvement of anything without paying 1st.
https://youtu.be/5aBJgqgANHY
SK is free tool made by enthusiast (or whatever the right spelling is), it isnt a paid job and im not his employeer to pay him before asking for improvments, but any software free or not needs bugfixing and improvements if there are bugs and if there are flaws, and this software is not something released once and never updated, it gets regular updates, so i dont ask anything extraordinary, as user who suffered from bugs and flaws of this software i just ask for another update that fixes bugs and flaws.
Also speaking about life and time- everyone got life, everyone busy with somethings, but we - people who have time to play games, surely have some more spare time than other people, otherwise we all would not be here, and surely K has some spare time (maybe even more than some of us do, not sure about you, but i totally have no time to even finish like each 9 of 10 mods i started and few of my other projects, i dont have time to even finish 99 of 100 games i started playing) for development and discussion of what he develops, which you can obviously see by record of this thread, so again i dont demand anything extraordinary and dont ask man to spend extra time you probably think he doesnt have, i just ask to prioritize bugs and flaws fixing in time frame he already have for SpecialK.
Which, by the way, he does not always spend effectively on more important stuff, because sometimes, as we all can see here, he spends time on toying with new exprimental features, which indicates that he has enough of time for that, while some existing features remains a little underdeveloped state that require some improvement and fixing, so all i ask - just give more priority to improvement of existing things.
And yeah, despite i dont have much time, i invested my limited resource - THE TIME into writing big detailed message, so i expected and deserved to see equaly detailed answer. Yet again this is nothing extraordinary - any man who spends time and effort on communication with someone expects that someone to spend equal amount of time and effort on backward communication. Suggesting to pay for that, as you just did - is silly, because i already paid with my time and effort that i put in my big message.
The list of examples provides makes it sound like it would almost all fit into some .dll to SKIM though there's probably more to it, code wise itself separating and cleanup over what the project has turned into since 0.7 or thereabouts to this is probably no easy task either even if there's been some changes with 0.10 going by the Gitlab commits and the changelog for 0.10.2 modernizing and using C++ 2017 and on though that's probably just part of all that this code base is by now.
Probably not really much of a thing but there's a bunch of .dll files inside the .dll file via 7z compression plus the .sys drivers and also the functionality and features for the injector and changes to this if it's global compared to local.
Pretty big growth to the code base for just a year or two with all the added features and functionality and compatibility related code changes and additions really but it's probably not easy to go to the earlier idea about having Special K being more modular from what I remember something like a few years ago now that was discussed?
I am pretty inexperienced though and mostly just go with a per-game install so there's a lot I don't know well or at all about the project and that's become pretty clear with how much it now does and how it has changed. :)
EDIT: Quoted the post for clarity as to what I was replying to. :)
Speaking of black and white list, i remember in GeDoSaTo you could manually add processes to black and whilte list and they was not hardcoded, i think problem with start locking happens because its new process now and SPECIAL K hardcoded white and black list not aware of it yet, so special k needs to move its black and while list into simple text files or sone ini section where user may manually add or remove anything to white and black list, this may solve problems when unexpected process got hooked improper way.