Hi
I’m writing an app that runs in the background and would like to add an icon to the notification area to allow the user to interact with it occasionally. The app currently works fine on my desktop development machine, but I’m also developing on another latop
machine as well, and I’ve noticed the call the Shell_NotifyIcon with NIM_ADD
always fails, and GetLastError returns 1008: ERROR_NO_TOKEN. Both machines are running Windows 7 SP1
Problems with this function are well documented:
http://social.msdn.microsoft.com/Forums/zh/vcgeneral/thread/003ca6a1-e993-41a9-a3d5-d6219664889f
http://msdn.microsoft.com/en-us/library/bb762159%28v=vs.85%29.aspx
http://connect.microsoft.com/VisualStudio/feedback/details/296872/shell-notifyicon-fails-at-times-for-no-reason
However the problem seems to centre around a timeout during startup. My application is failing whilst debugging, the machine is otherwise completely idle.
What is the likely cause of this? I can’t find any information about the error code itself, at least nothing relevant to Shell_NotifyIcon. I’m following what I think are the best practices for each targeted OS regarding the lpdata parameter, these values
are set as follows:
// Initialize NOTIFYICONDATA ZeroMemory(&m_nid, sizeof(NOTIFYICONDATA)); // Get Shell32 version number and set the size of the structure. // http://msdn.microsoft.com/en-us/library/bb773352%28v=vs.85%29.aspx ULONGLONG version = GetDllVersion(_T("Shell32.dll")); if(version >= MAKEDLLVERULL(6,0,6,0)) { m_nid.cbSize = sizeof(NOTIFYICONDATA); m_nid.uVersion = NOTIFYICON_VERSION_4; } else if(version >= MAKEDLLVERULL(6,0,0,0)) { m_nid.cbSize = NOTIFYICONDATA_V3_SIZE; m_nid.uVersion = NOTIFYICON_VERSION_4; } else if(version >= MAKEDLLVERULL(5,0,0,0)) { m_nid.cbSize = NOTIFYICONDATA_V2_SIZE; m_nid.uVersion = NOTIFYICON_VERSION; } else { m_nid.cbSize = NOTIFYICONDATA_V1_SIZE; m_nid.uVersion = 0; } m_nid.uFlags = NIF_ICON | NIF_TIP | NIF_MESSAGE | NIF_SHOWTIP; // Only Windows 7 systems or later may use a GUID to identify the notification icon. if (IsWin7OrLater()) { m_nid.uFlags |= NIF_GUID; m_nid.guidItem = NOTIFICATION_ICON_GUID; } else m_nid.uID = NOTIFICATION_ICON_ID; // Set tray notification window: m_nid.hWnd = m_hWnd; m_nid.uCallbackMessage = UM_TRAYNOTIFY; // Set tray icon and tooltip: m_nid.hIcon = theApp.LoadIcon(IDR_MAINFRAME); // Tooltip to be shown when mouse is over the icon. The NIF_TIP flag must be set , but on vista CString strToolTip = _T("Scheduler"); _tcsncpy_s(m_nid.szTip, strToolTip, strToolTip.GetLength()); // If the application was not shut down properly the icon may still be present, // but attached to a now invalid hWnd. Remove it before re-adding. Shell_NotifyIcon(NIM_DELETE, &m_nid); //Add the icon. bResult = Shell_NotifyIcon(NIM_ADD, &m_nid); DWORD dw = GetLastError(); // Specify the behaviour of the icon. bResult = Shell_NotifyIcon(NIM_SETVERSION, &m_nid);
Regards, Andrew
-
Edited by
Tuesday, March 27, 2012 12:14 PM
Removed unnecessary code -
Moved by
Mike Dos Zhang
Wednesday, March 28, 2012 3:21 PM
Shell API question (From:General Windows Desktop Development Issues)
Содержание
- Shell notifyicon error 1008
- Answered by:
- Question
- Answers
- All replies
- Shell notifyicon error 1008
- Answered by:
- Question
- Answers
- Shell notifyicon error 1008
- Answered by:
- Question
- Answers
- All replies
- Thread: Question about Shell_NotifyIcon function — error 1008
- Question about Shell_NotifyIcon function — error 1008
- Posting Permissions
- Shell notifyicon error 1008
- Answered by:
- Question
- Answers
- All replies
Shell notifyicon error 1008
This forum has migrated to Microsoft Q&A. Visit Microsoft Q&A to post new questions.
Answered by:
Question
I’m writing an app that runs in the background and would like to add an icon to the notification area to allow the user to interact with it occasionally. The app currently works fine on my desktop development machine, but I’m also developing on another latop machine as well, and I’ve noticed the call the Shell_NotifyIcon with NIM_ADD always fails, and GetLastError returns 1008: ERROR_NO_TOKEN. Both machines are running Windows 7 SP1
Problems with this function are well documented:
However the problem seems to centre around a timeout during startup. My application is failing whilst debugging, the machine is otherwise completely idle.
What is the likely cause of this? I can’t find any information about the error code itself, at least nothing relevant to Shell_NotifyIcon. I’m following what I think are the best practices for each targeted OS regarding the lpdata parameter, these values are set as follows:
Answers
This UI dev forum will show you more expert helps on Shell APIs programming problem.
Mike Zhang[MSFT]
MSDN Community Support | Feedback to us
Shell_NotifyIcon is not documented to set last error, so you can’t rely on GetLastError() to return useful information. The ERROR_NO_TOKEN result may not be related to the Shell_NotifyIcon call and may not even refer to a real error. GetLastError() is only valid if called immediately after a function documented to set it returns failure. Calling it after a success or for a function (like Shell_NotifyIcon) which doesn’t explicitly set it may return a stale value or a value set in case of error which isn’t cleared.
As you mention, the common failures for Shell_NotifyIcon are when the communication with Explorer times out or occurs before Explorer is listening. As mentioned in the comments for Shell_NotifyIcon, in the timeout case GetLastError will usually return ERROR_TIMEOUT (a stale error code inherited from the internal SendMessageTimeout call). Since you aren’t getting that your error probably occurs earlier.
You mention that this occurs when debugging on your laptop: does it only occur when debugging or does it occur always? Is there anything different about the debugging environment on the two systems? Are you running the debugger elevated on one but not the other? If ERROR_NO_TOKEN is relevant it sounds like something related to security tokens: is your app doing any impersonation here?
Have you tried debugging into the call to Shell_NotifyIcon? It’s a fairly simple call, and if you can step through and find which internal function fails it may suggest a solution. You can get Windows symbols from the Microsoft Symbol Server. If you’re using VS 2010 then there is a checkbox to do this automatically on the Debugging Symbols property page. Otherwise see Using the Microsoft Symbol Server
Источник
Shell notifyicon error 1008
This forum has migrated to Microsoft Q&A. Visit Microsoft Q&A to post new questions.
Answered by:
Question
Hello again. I have a question regarding Shell_NotifyIcon work.
Here is my code:
When my app is running in debug mode, Shell_NotifyIcon returns TRUE, but when I run my app in release mode, Shell_NotifyIcon fails with with strange Error: 1008 («An attempt was made to reference a token that does not exist»). What I’m doing wrong?
Using VS2008 & Windows 7
Answers
On 3/24/2013 7:43 AM, Volodymyr Kukharskiy wrote:
When my app is running in debug mode, Shell_NotifyIcon returns TRUE, but when I run my app in release mode, Shell_NotifyIcon fails with with strange Error: 1008 («An attempt was made to reference a token that does not exist»). What I’m doing wrong?
Use different GUIDs for debug and release builds. Apparently, Windows 7 remembers where the icon came from (meaning, the path to the executable and resource ID), in order to show it later in Notification Area Icons control panel applet (the one where you choose which icons to show and which to hide). It then complains when a different executable uses the same GUID. Debug succeeds and Release fails for the simple reason that Debug ran first.
Источник
Shell notifyicon error 1008
This forum has migrated to Microsoft Q&A. Visit Microsoft Q&A to post new questions.
Answered by:
Question
I’m writing an app that runs in the background and would like to add an icon to the notification area to allow the user to interact with it occasionally. The app currently works fine on my desktop development machine, but I’m also developing on another latop machine as well, and I’ve noticed the call the Shell_NotifyIcon with NIM_ADD always fails, and GetLastError returns 1008: ERROR_NO_TOKEN. Both machines are running Windows 7 SP1
Problems with this function are well documented:
However the problem seems to centre around a timeout during startup. My application is failing whilst debugging, the machine is otherwise completely idle.
What is the likely cause of this? I can’t find any information about the error code itself, at least nothing relevant to Shell_NotifyIcon. I’m following what I think are the best practices for each targeted OS regarding the lpdata parameter, these values are set as follows:
Answers
This UI dev forum will show you more expert helps on Shell APIs programming problem.
Mike Zhang[MSFT]
MSDN Community Support | Feedback to us
Shell_NotifyIcon is not documented to set last error, so you can’t rely on GetLastError() to return useful information. The ERROR_NO_TOKEN result may not be related to the Shell_NotifyIcon call and may not even refer to a real error. GetLastError() is only valid if called immediately after a function documented to set it returns failure. Calling it after a success or for a function (like Shell_NotifyIcon) which doesn’t explicitly set it may return a stale value or a value set in case of error which isn’t cleared.
As you mention, the common failures for Shell_NotifyIcon are when the communication with Explorer times out or occurs before Explorer is listening. As mentioned in the comments for Shell_NotifyIcon, in the timeout case GetLastError will usually return ERROR_TIMEOUT (a stale error code inherited from the internal SendMessageTimeout call). Since you aren’t getting that your error probably occurs earlier.
You mention that this occurs when debugging on your laptop: does it only occur when debugging or does it occur always? Is there anything different about the debugging environment on the two systems? Are you running the debugger elevated on one but not the other? If ERROR_NO_TOKEN is relevant it sounds like something related to security tokens: is your app doing any impersonation here?
Have you tried debugging into the call to Shell_NotifyIcon? It’s a fairly simple call, and if you can step through and find which internal function fails it may suggest a solution. You can get Windows symbols from the Microsoft Symbol Server. If you’re using VS 2010 then there is a checkbox to do this automatically on the Debugging Symbols property page. Otherwise see Using the Microsoft Symbol Server
Источник
Thread: Question about Shell_NotifyIcon function — error 1008
Thread Tools
Display
Question about Shell_NotifyIcon function — error 1008
When calling the Shell_NotifyIcon function with the NIM_ADD message the function succeeds, but I still get error code 1008 (ERROR_NO_TOKEN).
I did a search on the internet and it appears to have something to do with uID member and icon, but otherwise can’t find anything useful.
Last edited by Peter Swinkels; Dec 9th, 2012 at 11:17 AM .
- VBForums
- Visual Basic
- API
- Question about Shell_NotifyIcon function — error 1008
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
- BB code is On
- Smilies are On
- [IMG] code is On
- [VIDEO] code is On
- HTML code is Off
Click Here to Expand Forum to Full Width
Advertiser Disclosure: Some of the products that appear on this site are from companies from which TechnologyAdvice receives compensation. This compensation may impact how and where products appear on this site including, for example, the order in which they appear. TechnologyAdvice does not include all companies or all types of products available in the marketplace.
Источник
Shell notifyicon error 1008
This forum has migrated to Microsoft Q&A. Visit Microsoft Q&A to post new questions.
Answered by:
Question
I’m writing an app that runs in the background and would like to add an icon to the notification area to allow the user to interact with it occasionally. The app currently works fine on my desktop development machine, but I’m also developing on another latop machine as well, and I’ve noticed the call the Shell_NotifyIcon with NIM_ADD always fails, and GetLastError returns 1008: ERROR_NO_TOKEN. Both machines are running Windows 7 SP1
Problems with this function are well documented:
However the problem seems to centre around a timeout during startup. My application is failing whilst debugging, the machine is otherwise completely idle.
What is the likely cause of this? I can’t find any information about the error code itself, at least nothing relevant to Shell_NotifyIcon. I’m following what I think are the best practices for each targeted OS regarding the lpdata parameter, these values are set as follows:
Answers
This UI dev forum will show you more expert helps on Shell APIs programming problem.
Mike Zhang[MSFT]
MSDN Community Support | Feedback to us
Shell_NotifyIcon is not documented to set last error, so you can’t rely on GetLastError() to return useful information. The ERROR_NO_TOKEN result may not be related to the Shell_NotifyIcon call and may not even refer to a real error. GetLastError() is only valid if called immediately after a function documented to set it returns failure. Calling it after a success or for a function (like Shell_NotifyIcon) which doesn’t explicitly set it may return a stale value or a value set in case of error which isn’t cleared.
As you mention, the common failures for Shell_NotifyIcon are when the communication with Explorer times out or occurs before Explorer is listening. As mentioned in the comments for Shell_NotifyIcon, in the timeout case GetLastError will usually return ERROR_TIMEOUT (a stale error code inherited from the internal SendMessageTimeout call). Since you aren’t getting that your error probably occurs earlier.
You mention that this occurs when debugging on your laptop: does it only occur when debugging or does it occur always? Is there anything different about the debugging environment on the two systems? Are you running the debugger elevated on one but not the other? If ERROR_NO_TOKEN is relevant it sounds like something related to security tokens: is your app doing any impersonation here?
Have you tried debugging into the call to Shell_NotifyIcon? It’s a fairly simple call, and if you can step through and find which internal function fails it may suggest a solution. You can get Windows symbols from the Microsoft Symbol Server. If you’re using VS 2010 then there is a checkbox to do this automatically on the Debugging Symbols property page. Otherwise see Using the Microsoft Symbol Server
Источник
Содержание
- Shell notifyicon failed focusrite
- Shell notifyicon failed focusrite
- Answered by:
- Question
- Answers
- All replies
- Shell notifyicon failed focusrite
- Answered by:
- Question
- Answers
- All replies
- Thread: Question about Shell_NotifyIcon function — error 1008
- Question about Shell_NotifyIcon function — error 1008
- Posting Permissions
- Shell notifyicon failed focusrite
Shell notifyicon failed focusrite
Пожалуйста, выделяйте текст программы тегом [сode=pas] . [/сode] . Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.
Соблюдайте общие правила форума
Следующие вопросы задаются очень часто, подробно разобраны в FAQ и, поэтому, будут безжалостно удаляться:
1. Преобразовать переменную типа String в тип PChar (PAnsiChar)
2. Как «свернуть» программу в трей.
3. Как «скрыться» от Ctrl + Alt + Del (заблокировать их и т.п.)
4. Как запустить программу/файл? (и дождаться ее завершения)
5. Как перехватить API-функции, поставить hook? (перехват сообщений от мыши, клавиатуры — внедрение в удаленное адресное прстранство)
. (продолжение следует) .
Внимание:
Попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
Повторная попытка — 60 дней. Последующие попытки — бан.
Мат в разделе — бан на три месяца.
Полезные ссылки:
MSDN Library FAQ раздела Поиск по разделу Как правильно задавать вопросы
Выразить свое отношение к модераторам раздела можно здесь: Rouse_, Krid
Поставил на виртуалку XP все работает выводит Балун на 7’ке ноль эмоций! кто нить сталкивался с подобным?
Handling Shell_NotifyIcon failure
Shell_NotifyIcon will often fail when called during Windows startup (for instance, if your application is listed in HKLMSoftwareMicrosoftWindowsCurrentVersionRun. This appears to be because the system is busy starting applications. The failure is more common on low-spec computers or computers with some brands of antivirus software installed, which seem to be very intensive at startup.
Unfortunately, you cannot rely on the error code returned by GetLastError. When Shell_NotifyIcon returns false, some of the common errors returned by GetLastError are:
ERROR_FILE_NOT_FOUND (2)
ERROR_TIMEOUT (1460)
ERROR_SUCCESS (0)
The most appropriate response to any error returned by Shell_NotifyIcon is to sleep for a period of time and retry.
An explanation of why the error code may differ has been made by Paul Baker, paraphrased from http://groups.google.com/group/microsoft.public.platformsdk.shell/msg/59235b293cbf5dfa and http://groups.google.com/group/microsoft.public.platformsdk.shell/msg/73973287f15c03fc:
Shell_NotifyIcon actually calls SetLastError(0) initially. After that, basically it uses FindWindow to find the tray notification window. If this fails, it will typically return ERROR_FILE_NOT_FOUND. Otherwise it sends a WM_COPYDATA message to the tray notification window, using SendMessageTimeout with a timeout of only 4 seconds. If that message returns zero, then Shell_NotifyIcon will fail with GetLastError returning zero.
Источник
Shell notifyicon failed focusrite
This forum has migrated to Microsoft Q&A. Visit Microsoft Q&A to post new questions.
Answered by:
Question
I’m writing an app that runs in the background and would like to add an icon to the notification area to allow the user to interact with it occasionally. The app currently works fine on my desktop development machine, but I’m also developing on another latop machine as well, and I’ve noticed the call the Shell_NotifyIcon with NIM_ADD always fails, and GetLastError returns 1008: ERROR_NO_TOKEN. Both machines are running Windows 7 SP1
Problems with this function are well documented:
However the problem seems to centre around a timeout during startup. My application is failing whilst debugging, the machine is otherwise completely idle.
What is the likely cause of this? I can’t find any information about the error code itself, at least nothing relevant to Shell_NotifyIcon. I’m following what I think are the best practices for each targeted OS regarding the lpdata parameter, these values are set as follows:
Answers
This UI dev forum will show you more expert helps on Shell APIs programming problem.
Mike Zhang[MSFT]
MSDN Community Support | Feedback to us
Shell_NotifyIcon is not documented to set last error, so you can’t rely on GetLastError() to return useful information. The ERROR_NO_TOKEN result may not be related to the Shell_NotifyIcon call and may not even refer to a real error. GetLastError() is only valid if called immediately after a function documented to set it returns failure. Calling it after a success or for a function (like Shell_NotifyIcon) which doesn’t explicitly set it may return a stale value or a value set in case of error which isn’t cleared.
As you mention, the common failures for Shell_NotifyIcon are when the communication with Explorer times out or occurs before Explorer is listening. As mentioned in the comments for Shell_NotifyIcon, in the timeout case GetLastError will usually return ERROR_TIMEOUT (a stale error code inherited from the internal SendMessageTimeout call). Since you aren’t getting that your error probably occurs earlier.
You mention that this occurs when debugging on your laptop: does it only occur when debugging or does it occur always? Is there anything different about the debugging environment on the two systems? Are you running the debugger elevated on one but not the other? If ERROR_NO_TOKEN is relevant it sounds like something related to security tokens: is your app doing any impersonation here?
Have you tried debugging into the call to Shell_NotifyIcon? It’s a fairly simple call, and if you can step through and find which internal function fails it may suggest a solution. You can get Windows symbols from the Microsoft Symbol Server. If you’re using VS 2010 then there is a checkbox to do this automatically on the Debugging Symbols property page. Otherwise see Using the Microsoft Symbol Server
Источник
Shell notifyicon failed focusrite
This forum has migrated to Microsoft Q&A. Visit Microsoft Q&A to post new questions.
Answered by:
Question
I’m writing an app that runs in the background and would like to add an icon to the notification area to allow the user to interact with it occasionally. The app currently works fine on my desktop development machine, but I’m also developing on another latop machine as well, and I’ve noticed the call the Shell_NotifyIcon with NIM_ADD always fails, and GetLastError returns 1008: ERROR_NO_TOKEN. Both machines are running Windows 7 SP1
Problems with this function are well documented:
However the problem seems to centre around a timeout during startup. My application is failing whilst debugging, the machine is otherwise completely idle.
What is the likely cause of this? I can’t find any information about the error code itself, at least nothing relevant to Shell_NotifyIcon. I’m following what I think are the best practices for each targeted OS regarding the lpdata parameter, these values are set as follows:
Answers
This UI dev forum will show you more expert helps on Shell APIs programming problem.
Mike Zhang[MSFT]
MSDN Community Support | Feedback to us
Shell_NotifyIcon is not documented to set last error, so you can’t rely on GetLastError() to return useful information. The ERROR_NO_TOKEN result may not be related to the Shell_NotifyIcon call and may not even refer to a real error. GetLastError() is only valid if called immediately after a function documented to set it returns failure. Calling it after a success or for a function (like Shell_NotifyIcon) which doesn’t explicitly set it may return a stale value or a value set in case of error which isn’t cleared.
As you mention, the common failures for Shell_NotifyIcon are when the communication with Explorer times out or occurs before Explorer is listening. As mentioned in the comments for Shell_NotifyIcon, in the timeout case GetLastError will usually return ERROR_TIMEOUT (a stale error code inherited from the internal SendMessageTimeout call). Since you aren’t getting that your error probably occurs earlier.
You mention that this occurs when debugging on your laptop: does it only occur when debugging or does it occur always? Is there anything different about the debugging environment on the two systems? Are you running the debugger elevated on one but not the other? If ERROR_NO_TOKEN is relevant it sounds like something related to security tokens: is your app doing any impersonation here?
Have you tried debugging into the call to Shell_NotifyIcon? It’s a fairly simple call, and if you can step through and find which internal function fails it may suggest a solution. You can get Windows symbols from the Microsoft Symbol Server. If you’re using VS 2010 then there is a checkbox to do this automatically on the Debugging Symbols property page. Otherwise see Using the Microsoft Symbol Server
Источник
Thread: Question about Shell_NotifyIcon function — error 1008
Thread Tools
Display
Question about Shell_NotifyIcon function — error 1008
When calling the Shell_NotifyIcon function with the NIM_ADD message the function succeeds, but I still get error code 1008 (ERROR_NO_TOKEN).
I did a search on the internet and it appears to have something to do with uID member and icon, but otherwise can’t find anything useful.
Last edited by Peter Swinkels; Dec 9th, 2012 at 11:17 AM .
- VBForums
- Visual Basic
- API
- Question about Shell_NotifyIcon function — error 1008
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
- BB code is On
- Smilies are On
- [IMG] code is On
- [VIDEO] code is On
- HTML code is Off
Click Here to Expand Forum to Full Width
Advertiser Disclosure: Some of the products that appear on this site are from companies from which TechnologyAdvice receives compensation. This compensation may impact how and where products appear on this site including, for example, the order in which they appear. TechnologyAdvice does not include all companies or all types of products available in the marketplace.
Источник
Shell notifyicon failed focusrite
Пожалуйста, выделяйте текст программы тегом [сode=pas] . [/сode] . Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.
Соблюдайте общие правила форума
Следующие вопросы задаются очень часто, подробно разобраны в FAQ и, поэтому, будут безжалостно удаляться:
1. Преобразовать переменную типа String в тип PChar (PAnsiChar)
2. Как «свернуть» программу в трей.
3. Как «скрыться» от Ctrl + Alt + Del (заблокировать их и т.п.)
4. Как запустить программу/файл? (и дождаться ее завершения)
5. Как перехватить API-функции, поставить hook? (перехват сообщений от мыши, клавиатуры — внедрение в удаленное адресное прстранство)
. (продолжение следует) .
Внимание:
Попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
Повторная попытка — 60 дней. Последующие попытки — бан.
Мат в разделе — бан на три месяца.
Полезные ссылки:
MSDN Library FAQ раздела Поиск по разделу Как правильно задавать вопросы
Выразить свое отношение к модераторам раздела можно здесь: Rouse_, Krid
Поставил на виртуалку XP все работает выводит Балун на 7’ке ноль эмоций! кто нить сталкивался с подобным?
Handling Shell_NotifyIcon failure
Shell_NotifyIcon will often fail when called during Windows startup (for instance, if your application is listed in HKLMSoftwareMicrosoftWindowsCurrentVersionRun. This appears to be because the system is busy starting applications. The failure is more common on low-spec computers or computers with some brands of antivirus software installed, which seem to be very intensive at startup.
Unfortunately, you cannot rely on the error code returned by GetLastError. When Shell_NotifyIcon returns false, some of the common errors returned by GetLastError are:
ERROR_FILE_NOT_FOUND (2)
ERROR_TIMEOUT (1460)
ERROR_SUCCESS (0)
The most appropriate response to any error returned by Shell_NotifyIcon is to sleep for a period of time and retry.
An explanation of why the error code may differ has been made by Paul Baker, paraphrased from http://groups.google.com/group/microsoft.public.platformsdk.shell/msg/59235b293cbf5dfa and http://groups.google.com/group/microsoft.public.platformsdk.shell/msg/73973287f15c03fc:
Shell_NotifyIcon actually calls SetLastError(0) initially. After that, basically it uses FindWindow to find the tray notification window. If this fails, it will typically return ERROR_FILE_NOT_FOUND. Otherwise it sends a WM_COPYDATA message to the tray notification window, using SendMessageTimeout with a timeout of only 4 seconds. If that message returns zero, then Shell_NotifyIcon will fail with GetLastError returning zero.
Источник
Windows 10 предлагает множество замечательных функций, улучшающих работу с Windows. Система состоит из небольших систем, работающих вместе, чтобы предоставить вам интуитивно понятную платформу для всех потребностей вашего компьютера.
Однако несколько пользователей недавно сообщили о получении ошибки события 1020 & amp; Ошибка 1008 Microsoft-Windows-Perflib в Windows 10, не позволяющая запустить уязвимое приложение и влияющая на производительность их компьютера.
Согласно жалобам, ошибка появляется без видимой причины. Нет никаких признаков того, что что-то не так до появления ошибки, например, зависания компьютера или сбоя приложений. Ошибка просто появляется внезапно.
Что еще более важно, не так много онлайн-перезаписей, чтобы узнать, как исправить ошибку события 1020 & amp; Ошибка 1008 Microsoft-Windows-Perflib в Windows 10. Эта ошибка разочаровала и смутила многих затронутых пользователей Windows, не знающих, как с ней бороться.
Совет для профессионалов: просканируйте свой компьютер на наличие проблем с производительностью, нежелательных файлов, вредоносных приложений и угроз безопасности
, которые могут вызвать системные проблемы или снижение производительности.
Бесплатное сканирование для ПК: проблемы с загрузкой 3.145.873Совместимость с: Windows 10, Windows 7, Windows 8
Специальное предложение. Об Outbyte, инструкции по удалению, лицензионное соглашение, политика конфиденциальности.
Поэтому, если вы вдруг столкнетесь с этой ошибкой и не знаете, что делать, это руководство должно вам помочь.
Что такое ошибка события 1020 & amp; 1008 Microsoft-Windows-Perflib Error
Не путайте. Это две разные ошибки: ошибка события 1020 и ошибка события 1008. Но обычно они происходят одновременно, и обстоятельства, связанные с этими ошибками, в основном одинаковы.
Вот сообщение об ошибке, которое вы можете встретить для события ошибка 1008:
img: Perflib
Категория: Нет
Тип: Ошибка
Идентификатор события: 1008
Процедура открытия службы «.NETFramework» в DLL «C: WINDOWS system32 mscoree.dll» завершилась неудачно с кодом ошибки. Система не может найти указанный файл. Данные о производительности для этой службы недоступны.
Вот сообщение об ошибке, которое может возникнуть при ошибке события 1020:
img: Perflib
Категория: Нет
Тип: Ошибка
Идентификатор события: 1008
Требуемый размер буфера больше, чем размер буфера, переданный в функцию сбора расширяемого счетчика DLL «C: Windows System32 perfts.dll» для службы. «LSM». Сообщенный размер буфера составлял 34184, а требуемый размер — 43160.
Эти ошибки могут возникать с любым другим файлом, а не только с mscoree.dll. Это также может произойти при обнаружении ошибки при проверке производительности других файлов DLL.
В приведенном выше сообщении это означает, что система не может найти файл mscoree.dll. Когда пользователь пытался найти файл с помощью odctr / r в Powershell (от имени администратора), появляется сообщение о том, что mscoree.dll был заменен из резервной копии. При запуске команды lodctr / q для вывода списка исправлений даже был указан файл mscoree.dll. Однако ошибка по-прежнему появляется после выполнения вышеуказанного устранения неполадок.
Затронутые пользователи отметили, что кроме этих ошибок, появляющихся в средстве просмотра событий, они не заметили ничего странного с компьютером; Все работало так, как должно, поэтому пользователи понятия не имели, что это могло их вызвать, а что не работало должным образом.
Однако, когда вы получаете любую из этих ошибок, у вас нет беспокоиться, потому что сама эта ошибка не имеет большого значения. Это просто способ Windows сказать, что он не может собирать данные о производительности. Это легкая часть. Избавиться от ошибок — совсем другое дело.
Что вызывает ошибку события 1020 & amp; 1008 Microsoft-Windows-Perflib Error?
Как упоминалось ранее, эти ошибки событий могут возникать для различных приложений. Когда монитор производительности впервые считывает все счетчики, вызывается процедура открытия расширения.
Типичная задача процедуры открытия — прочитать из реестра, какой диапазон индексов объектов она поддерживает. Эти значения индекса хранятся в значениях реестра «Первый счетчик», «Первая справка», «Последний счетчик» и «Последняя справка» под ключом производительности приложения.
Если эта процедура Open не может прочитать данные (т. Е. Эти записи не существуют или были удалены процедурой удаления) событие 1008 или 1020 записывается в журнал событий.
Событие ошибки 1020 и 1008 обычно возникает из-за того, что список счетчиков поврежден и необходимая библиотека DLL отключена . Когда счетчику производительности не удается выгрузить строки для указанной службы, реестр может быть поврежден и отобразить эти ошибки perflib.
Как исправить ошибку события 1020 & amp; 1008 Ошибка Microsoft-Windows-Perflib
Хотя эта ошибка может быть не критичной для вашей системы Windows, получение уведомлений может раздражать, поэтому вы можете решить ее, используя приведенные ниже решения.
Исправление №1: Перезагрузите компьютер.
Первым шагом к исправлению любой ошибки является перезагрузка системы. Обычно это помогает устранить временные сбои на вашем компьютере. Нажмите кнопку питания, затем подождите несколько минут, прежде чем снова запустить его. Вы также можете попробовать загрузиться в безопасном режиме, чтобы узнать, связана ли ошибка со сторонним программным обеспечением.
Исправление №2: Удалите поврежденные файлы.
Другой базовый шаг по устранению неполадок включает запуск команды SFC в командной строке для проверки на наличие поврежденных файлов на вашем компьютере. Этот инструмент автоматически исправляет или заменяет поврежденные файлы, чтобы устранить любую ошибку, с которой вы можете столкнуться. Также рекомендуется очистить вашу систему с помощью Outbyte PC Repair, чтобы предотвратить появление новых ошибок.
Исправление №3: отредактируйте реестр.
Чтобы удалить такие потерянные записи, обычно необходимо выполнить следующие действия:
Исправление №4: перестроить счетчики производительности.
Чтобы устранить эту проблему, заново создайте список счетчиков производительности.
Обратите внимание, что для выполнения этой процедуры требуется членство в локальной группе администраторов. Чтобы восстановить список счетчиков в реестре, выполните следующие действия.
Исправление № 5: повторно включите DLL.
Аналогично, 1008 Microsoft -Windows-Perflib ошибка возникает, когда необходимая DLL отключена. Чтобы решить эту проблему, введите lodctr / e:
Чтобы отключить одну или несколько DLL расширяемых счетчиков:
HKEY_LOCAL_MACHINE System CurrentControlSet Services
Заключение
Получение сообщения об ошибке 1020 & amp; Ошибка 1008 Microsoft-Windows-Perflib в Windows 10 раздражает, но это не критическая ошибка. Если вам не нужны счетчики производительности для службы, упомянутой в событии, вы можете отключить их с помощью инструмента exctrlst.exe (расширяемый список счетчиков производительности). Однако это всего лишь обходной путь, чтобы вы не получали эти уведомления. Если вы действительно хотите исправить эти ошибки, обратитесь к нашему руководству по устранению неполадок выше.
YouTube видео: 5 способов исправить ошибку события 1020 1008 Ошибка Microsoft-Windows-Perflib в Windows 10
02, 2023
Иногда пользователи начинают видеть ошибку события 1020 & 1008 Microsoft-Windows-Perflib ошибка в Windows 10 без видимой причины. Что еще более важно, они понятия не имеют, что ремонтировать его. Сообщение об ошибке выглядит примерно так —
1]Событие: 1008
Не удалось выполнить процедуру открытия службы «.NETFramework» в DLL «C: WINDOWS system32 mscoree.dll» с кодом ошибки. Система не может найти указанный файл. Данные о производительности для этой службы будут недоступны.
2]Событие: 1020
Требуемый размер буфера превышает размер буфера, переданный в функцию Collect библиотеки DLL расширяемого счетчика C: Windows System32 perfts.dll для службы LSM. Заданный размер буфера составлял 34184, а требуемый размер — 43160.
Решение этой проблемы требует некоторой работы. Следуйте инструкциям, приведенным ниже, чтобы исправить это — после создания точки восстановления системы.
Сообщается о событиях ошибки 1020 и 1008, потому что список счетчиков поврежден и необходимая библиотека DLL отключена. Если счетчику производительности не удается выгрузить строки для указанной службы, реестр может быть поврежден и отобразить ошибку 1020. Чтобы устранить эту проблему, заново создайте список счетчиков производительности.
- Щелкните «Пуск».
- Введите CMD в строку поиска.
- Щелкните правой кнопкой мыши командную строку.
- Выберите Запуск от имени администратора.
- Введите следующую команду и нажмите клавишу Enter–
CD %SYSTEMROOT%System32
- В командной строке введите
lodctr /r
. - Нажмите Ввод.
- Аналогично для ошибки 1008 введите
lodctr /e:<DLL name
>, а затем нажмите ENTER.
Обратите внимание, что для выполнения этой процедуры требуется членство в локальной группе администраторов. Чтобы восстановить список счетчиков в реестре, выполните следующие действия.
Нажмите кнопку «Пуск» в Windows 10.
В появившемся поле поиска введите CMD или Командная строка.
Когда параметр отображается, щелкните его правой кнопкой мыши и выберите Запустить от имени администратора вариант.
Теперь в окне командной строки, которое появляется на вашем экране, введите следующую команду и нажмите клавишу Enter — cd %SYSTEMROOT%System32
.
Снова введите следующую команду и нажмите клавишу Enter — lodctr /r
.
Точно так же ошибка 1008 Microsoft-Windows-Perflib возникает, когда необходимая DLL отключена. Чтобы решить проблему, введите lodctr /e:</<DLL name
> и нажмите ENTER (замените на имя файла библиотеки).
Надеюсь, это помогло.