Функция LockResource()

Q8

Кто-нить знает в чём прикол этой функции? Везде её рекомендуют использовать для блокировки участка памяти. Мне кажется это пережиток старых версий Windows. Ведь можно обойтись и без неё. Может кто-то исследовал ядро API?
2 ответа

Q8

Везде её рекомендуют использовать для блокировки участка памяти.
Где если не секрет? Она используется для загрузки ресурса в память, но никак не для блокировки участка памяти: LockResource.Вот даже цитата из MSDN:
Note LockResource does not actually lock memory; it is just used to obtain a pointer to the memory containing the resource data. The name of the function comes from versions prior to Windows XP, when it was used to lock a global memory block allocated by LoadResource.
Даже если быть более точным, то функция возвращает указатель на участок память где расположен ресурс, после этого ресурс не может быть перемещен или уничтожен.


Q8

Где если не секрет? Она используется для загрузки ресурса в память, но никак не для блокировки участка памяти: LockResource.Вот даже цитата из MSDN:
Чё за бред? Ну приведи мне кусок кода, где эта функция загружает ресурс в память? Поменьше читай всякую чушь. Я те тоже могу щас кучу хэлпа накопипастить. Даже название говорит само за себя. БЛОКИРОВКА участка памяти, в которую загружен ресурс. Вопрос для не понятливых - Нахрена нужна эта функция? Кто-нить изучал её код изнутри? Ладно, чтобы здесь мне не писали отрывки со всяких хэлпов (тем более на буржуйском языке) объясню конкретнее. После того как мы загрузили ресурс с помощью функции LoadResource (......) и получили дескриптор блока памяти, везде рекомендуют использовать дальше функцию LockResource для блокировки ресурса и получения указателя на адрес в памяти. Я включил дизассемблер и начал смотреть. функция LoadResource(...) после загрузки мне возвращает указатель на участок памяти куда и загрузила ресурс (всё отлично), вызываем дальше LockResource() и она возвращает мне то же самое. вот код, который работает в двух вариациях.
      
LPBITMAPINFO Duck; 
HANDLE hDuck
 
           hDuck = LoadResource(hInst,FindResource(hInst, "DUCK", RT_BITMAP ) );
           Duck = (LPBITMAPINFO)LockResource( hDuck );
      
LPBITMAPINFO Duck; 
HANDLE hDuck
 
           hDuck = LoadResource(hInst,FindResource(hInst, "DUCK", RT_BITMAP ) );
       Duck = (LPBITMAPINFO) hDuck;
Так вот суть вопроса - для чего нужна эта функция? Может она всё-таки несёт какой-то скрытый смысл?
Где если не секрет? Она используется для загрузки ресурса в память, но никак не для блокировки участка памяти: LockResource.Вот даже цитата из MSDN:Даже если быть более точным, то функция возвращает указатель на участок память где расположен ресурс, после этого ресурс не может быть перемещен или уничтожен.
ну ЭТО понятно ёпти. чё ты мне тут скидываешь хэлпы? у меня литературы до одного места и дома. Читать я умею, поверь!ну вобщем я разобрался. Всем спасибо