1) user32_module != 0 2) thx for tip about GetLastError() It gives me 87 which is ERROR_INVALID_PARAMETER according to msdn. Following down to SetLastError: Code: /* implementation of FindResourceExW */ static HRSRC find_resourceW( HMODULE hModule, LPCWSTR type, LPCWSTR name, WORD lang ) { NTSTATUS status; UNICODE_STRING nameW, typeW; LDR_RESOURCE_INFO info; const IMAGE_RESOURCE_DATA_ENTRY *entry = NULL; nameW.Buffer = typeW.Buffer = NULL; __TRY { if ((status = get_res_nameW( name, &nameW )) != STATUS_SUCCESS) goto done; if ((status = get_res_nameW( type, &typeW )) != STATUS_SUCCESS) goto done; info.Type = (ULONG_PTR)typeW.Buffer; info.Name = (ULONG_PTR)nameW.Buffer; info.Language = lang; status = LdrFindResource_U( hModule, &info, 3, &entry ); done: if (status != STATUS_SUCCESS) SetLastError( RtlNtStatusToDosError(status) ); } __EXCEPT_PAGE_FAULT { SetLastError( ERROR_INVALID_PARAMETER ); } __ENDTRY Little ?useless? trace - http://pastebin.com/kVJPXLxv# Is it possible that application shits somehow in resource table of user32? Thank you for help :)