cast סורר ?
הקדמה: השואל הוא איש סיסטם ופעם אחרונה נגע בC/C++ לפני כשלוש שנים וגם אז רק בANSI. נתקלתי במצב בו אני נאלץ להשתמש בC++. שום VBS או Perl לא מסוגלים להתמודד בצורה נורמלית עם SecurityDescriptors... בקיצור: יש לי קטע קוד (ראו קובץ מצורף). החלק הבעייתי הוא למרבה הפלא copy&paste מMSDN. השארתי רק את קטע הקוד הרלוונטי. szTrusteeDomainName,szTrusteeName פשוט לא מודפסים אם אני משתמש בקוד מMSDN שמדפיס עם wprintf. printf מצד שני עובד נהדר. ישבתי על זה בערך שעה עם דבגר. אני רואה את הערכים הנכונים במשתנים אם אני מוסיף אותם לwatch עם cast ל char*, אבל להופיע במסך ? נאדה... ניסיתי explicit casting לLPTSTR, עם תוצאה זהה עד שנמאס לי והשתמשתי בprintf הטוב והמוכר לי וראו איזה פלא... הדברים התחילו לעבוד. אם מישהו ישווה עם הקוד בדוגמא, הוא יכול לשים לב בפונקציה LookupAccountSid עשיתי casting לפרמטר שלישי וחמישי ל LPTSTR (וזה בגלל שהVS.NET המניאק לא הסכים לקמפל בלי זה (מעניין איך אצל מייקרוסופט זה התקמפל ?). מישהו יכול אולי להסביר (עם הנחה לחלודה בכל הקשור לC++), מה הבעיה כאן ? האם יש סיכוי שאני עושה משהו לא נכון ? מדובר באפליקציה קטנה שאמורה לעשות parsing ל SDDL והשגיאות כלל לא מבורכות כיוון שמדובר על ACL של Schema של Active Directory (מי שלא מכיר, מדובר באוסף buzz words של אנשי סיסטם).
הקדמה: השואל הוא איש סיסטם ופעם אחרונה נגע בC/C++ לפני כשלוש שנים וגם אז רק בANSI. נתקלתי במצב בו אני נאלץ להשתמש בC++. שום VBS או Perl לא מסוגלים להתמודד בצורה נורמלית עם SecurityDescriptors... בקיצור: יש לי קטע קוד (ראו קובץ מצורף). החלק הבעייתי הוא למרבה הפלא copy&paste מMSDN. השארתי רק את קטע הקוד הרלוונטי. szTrusteeDomainName,szTrusteeName פשוט לא מודפסים אם אני משתמש בקוד מMSDN שמדפיס עם wprintf. printf מצד שני עובד נהדר. ישבתי על זה בערך שעה עם דבגר. אני רואה את הערכים הנכונים במשתנים אם אני מוסיף אותם לwatch עם cast ל char*, אבל להופיע במסך ? נאדה... ניסיתי explicit casting לLPTSTR, עם תוצאה זהה עד שנמאס לי והשתמשתי בprintf הטוב והמוכר לי וראו איזה פלא... הדברים התחילו לעבוד. אם מישהו ישווה עם הקוד בדוגמא, הוא יכול לשים לב בפונקציה LookupAccountSid עשיתי casting לפרמטר שלישי וחמישי ל LPTSTR (וזה בגלל שהVS.NET המניאק לא הסכים לקמפל בלי זה (מעניין איך אצל מייקרוסופט זה התקמפל ?). מישהו יכול אולי להסביר (עם הנחה לחלודה בכל הקשור לC++), מה הבעיה כאן ? האם יש סיכוי שאני עושה משהו לא נכון ? מדובר באפליקציה קטנה שאמורה לעשות parsing ל SDDL והשגיאות כלל לא מבורכות כיוון שמדובר על ACL של Schema של Active Directory (מי שלא מכיר, מדובר באוסף buzz words של אנשי סיסטם).