ABA


"הפונקציות isBadXxxPtr (שאלות)"
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #15981 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 15981
ג'וני הקטן
חבר מתאריך 24.6.10
1166 הודעות
   16:39   15.07.10   
אל הפורום  
  הפונקציות isBadXxxPtr (שאלות)  
 
   נתקלתי בפונקציות הנ"ל:
http://msdn.microsoft.com/en-us/library/aa366713%28VS.85%29.aspx
(ובכל משפחתם... isbadStringPtr, isbadWritePtr and isBadCodePtr)

יש הערה גם בדף MSDN שלהם ש:
Important This function is obsolete and should not be used. Despite its name, it does not guarantee that the pointer is valid or that the memory pointed to is safe to use. For more information, see Remarks on this page.

באחת התגובות יש לינק לפה:
http://blogs.msdn.com/b/oldnewthing/archive/2006/09/27/773741.aspx

אני לא הצלחתי להבין את הסיבה (אולי כי אנלא יודע איך בדיוק עובדת מערכת WINDOWS ככה מאחורה...)
מישהו יכול להסביר בגדול מה כתוב שם? ולמה זה לא בטוח?

תודה


                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  כשסבתא שלי תיכנתי בC++ היא אמרה לי משפט akoka2 15.07.10 19:59 1
     חחחח ronen333  15.07.10 20:11 2
     כן זה הבנתי גם ממה שכתוב שם אבל רציתי לדעת יותר לעומק.. ג'וני הקטן 15.07.10 21:09 3
  מכיוון שמערכת ההפעלה היא לא Open Source ldan192  15.07.10 21:35 4
     הבנתי אותך, תודה :) ג'וני הקטן 15.07.10 21:48 5
         תאימות לאחור אני משער... יש כזה ''חוק'' ldan192  15.07.10 21:51 6
             אחרי קצת גוגלינג ג'וני הקטן 15.07.10 21:55 7
                 בעיניי יותר נכון יהיה לממש את הפונקציה בעצמך ldan192  16.07.10 18:03 8
                     הבעיה היא שבחיים לא תיכנתתי לווינדוס... רק ללינוקס חח ג'וני הקטן 16.07.10 21:20 9

       
akoka2

   19:59   15.07.10   
אל הפורום  
  1. כשסבתא שלי תיכנתי בC++ היא אמרה לי משפט  
בתגובה להודעה מספר 0
 
   מאוד מאוד נכון "על תשמעש באיז בעד ריעד פיטער זע לע טרעיד סעייף"

אני חושב שזה מסביר הכול!


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ronen333 
חבר מתאריך 20.2.03
6069 הודעות
   20:11   15.07.10   
אל הפורום  
  2. חחחח  
בתגובה להודעה מספר 1
 
   כבר אמרתי לך שאתה חסר תקנה?


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ג'וני הקטן
חבר מתאריך 24.6.10
1166 הודעות
   21:09   15.07.10   
אל הפורום  
  3. כן זה הבנתי גם ממה שכתוב שם אבל רציתי לדעת יותר לעומק..  
בתגובה להודעה מספר 1
 
   ערכתי לאחרונה בתאריך 15.07.10 בשעה 21:12 בברכה, ג'וני הקטן
 
כתוב שם:

The documentation for the IsBadXxxPtr functions presents the technical
reasons why, but I'm going to dig a little deeper. For one thing, if
the "bad pointer" points into a guard page, then probing the memory
will raise a guard page exception. The IsBadXxxPtr function will catch
the exception and return "not a valid pointer". But guard page
exceptions are raised only once. You just blew your one chance. When
the code that is managing the guard page accesses the memory for what
it thinks is the first time (but is really the second), it won't get
the guard page exception but will instead get a normal access
violation.

לא ברור...


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ldan192 
חבר מתאריך 14.9.08
95119 הודעות
   21:35   15.07.10   
אל הפורום  
  4. מכיוון שמערכת ההפעלה היא לא Open Source  
בתגובה להודעה מספר 0
 
מעטים האנשים שיוכלו לומר לך בוודאות איך זה ממומש כיום (בהתחשב בעבודה שהכתבה מלפני 5? שנים)

אבל איך שאני מבין את זה, יש לך את טבלת הדפים,
ברגע שאתה מנסה לגשת לכתובת שאינה נמצאת במסגרת בזכרון / מגירה בדיסק אז הוא מפנה אותך ל-Page Guard הזה שמעלה אקספשן (שולח סיגנל לפרוסס) ומחליף את הפויינטר לדף ב-NULL או משהו בסגנון שבפניות הבאות יוחזר "errno".

כנראה ההגנה מיועדת במיוחד בריבוי חוטים (או אפילו תהליכים) שניגשים לזכרון משותף ואתה לא רוצה לגרום להצפה של סיגנלים.

פרוסס רגיל ברגע שמקבל את הסיגנל סביר שיתרסק,
אבל ה-isBad האלה תופסים את הסיגנל הזה וממירים אותו לערך חזרה.
יוצא שבפעמים הבאות שאתה ניגש לאותה הכתובת ה-isBad יצפה לקבל את הסיגנל במקום שיוחזר errno וזה יכול לגרום להתרסקות התוכנית.


לפחות זה מה שאני מבין מהתגובה שלו.


בברכה,
עידן


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ג'וני הקטן
חבר מתאריך 24.6.10
1166 הודעות
   21:48   15.07.10   
אל הפורום  
  5. הבנתי אותך, תודה :)  
בתגובה להודעה מספר 4
 
   בקיצור הם ממש מפגרים... איך הם השאירו את הפונקציה הזאת בVS אם כתוב בגדול בMSDN "אל תשתמשו בזה!!"


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ldan192 
חבר מתאריך 14.9.08
95119 הודעות
   21:51   15.07.10   
אל הפורום  
  6. תאימות לאחור אני משער... יש כזה ''חוק''  
בתגובה להודעה מספר 5
 
שצריך לתמוך אחורה לפחות 3 דורות והדור הנוכחי לפחות יתמוך בדור הבא.

אבל שוב, לך תדע מה ההתנהגות כיום של מערכת ההפעלה.


בברכה,
עידן


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ג'וני הקטן
חבר מתאריך 24.6.10
1166 הודעות
   21:55   15.07.10   
אל הפורום  
  7. אחרי קצת גוגלינג  
בתגובה להודעה מספר 6
 
   מצאתי הרבה אנשים שאומרים שבויסטה היא פשוט לא עובדת חחח
אז יש סיכוי שגם בWIN 7...
זה גם מסביר למה הם משאירים שנים את SCANF וכל הזמן מציקים שזה DEPRICATED במקום להשאיר כבר רק את SCANF_S


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ldan192 
חבר מתאריך 14.9.08
95119 הודעות
   18:03   16.07.10   
אל הפורום  
  8. בעיניי יותר נכון יהיה לממש את הפונקציה בעצמך  
בתגובה להודעה מספר 7
 
ללמוד מה קורה (איזה סיגנל עולה) כשאתה ניגש לכתובת לא חוקית ולעטוף אותה.


בברכה,
עידן


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ג'וני הקטן
חבר מתאריך 24.6.10
1166 הודעות
   21:20   16.07.10   
אל הפורום  
  9. הבעיה היא שבחיים לא תיכנתתי לווינדוס... רק ללינוקס חח  
בתגובה להודעה מספר 8
 
   אני מניח שזה דומה לשם אבל צריך ללמוד :P


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net