الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

Native Application , How to build ؟

مغلق
بدأه tmaaa في 7 نوفمبر 2002 · 10 رد · 1,237 مشاهدة · في ارشيف قسم C/C++
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

السؤال كما هو في العنوان . اريد معرفه طريقه build لبرنامج من النوع Native Application باستخدام DDK .

هذا مقال رائع لـ Mark Russinovich عن Native Application وهو المقال الوحيد الذي وجدته بعد البحث

http://www.sysinternals.com/ntw2k/info/native.shtml

قرأت الجزء الخاص بعمليه الـ Build لكن لم انجح . اتمنى المساعدة . ( بالنسبه للكود فليس هناك اي مشكله ) .

اتمنى ألا يهمل سؤالي كما صار من قبل في أسئله سابقه لي .

(f)

CIONO1

هناك حتى الأحلام أصبحت ممنوعة ...

إنه لعار أن ننتمي لهكذا أوطان ... لكن ... ربما العار أن نكون نحن أبناء لتلكم أوطان .. من يدري ؟!!

ليعلم أولئك ... إنّ الشعوب إنْ هي استيقظت تسحق ظُلامََهَا ...

There, even in dreams u r wanted

To be a programmer, how a nice dream it was

Leaving ...

أعيدوا لإسمي لونه المفضل

#2

السلام عليكم

غريب ؟!!

يعني لا يوجد اي عربي مر عليه سؤال كهذا ؟!

ليست هذه المرة الاولى التي لم يعطى اي اهتمام لما اضعه من اسئله !!!

على العموم شكرا لمن قرأ السؤال , سأضع السؤال في منتديات اجنبيه و باذن الله ستتم الاجابه عليه .

(f)

CIONO1

هناك حتى الأحلام أصبحت ممنوعة ...

إنه لعار أن ننتمي لهكذا أوطان ... لكن ... ربما العار أن نكون نحن أبناء لتلكم أوطان .. من يدري ؟!!

ليعلم أولئك ... إنّ الشعوب إنْ هي استيقظت تسحق ظُلامََهَا ...

There, even in dreams u r wanted

To be a programmer, how a nice dream it was

Leaving ...

أعيدوا لإسمي لونه المفضل

#3

المسئلة هل هناك وقت للاجابة على كل السئلة من من يقوم بالاجابة و لماذا الاخرين الذين لديهم وقت لا يقومون بذلك.

(مفهوم مايكروسوفت عندما يعمل البرنامج فوق النواة)

Native Application بنائه بسيط جدا، كلها ال WinMain و اجرائين احدهما لاستقبال الرسائل و الاخر لتسجيل ال class في الذاكرة ولاحقا كل شيئ هو API و كل ال API متضمنه في الملف windows.h

(مفهوم مايكروسوفت عندما يعمل البرنامج بداخل النواة)

يختلف من مكان الى اخر ولكنك بحاجة الى ال DDK و هو كان سابقا مجاني من http://www.microsoft.com/ddk و اذا لاحظت في الكود السابق فلديك الملف التالي الموجود في ال DDK حسب علمي #include "ntddk.h"

ال DDK مخصص لبناء اضافات الى النواة، حيث ان برامجك قد تقدم مميزات جديدة، اوامر API جديدة، او قد تقرر بناء Driver مثلا لجهاز الكومبيوتر.

برامج ال DDK سوف تعمل مع النواة و انهيار واحد بها سوف يؤدي الى انهيار الجهاز. (فهي في الحلقة صفر)

اعتقادي الشابق من الكود الخاص بك انك بحاجة الى ال DDK، ولكن لا وقت لي لعمل Compile ، اليوم انا اجازة و يجب ان اضيف على الاقل 10 مقالات و شرح مفصل ل ClearVision.NET الذي سوف نبنيه في الفريق العربي للبرمجة، و اتمنى ان يجيب الاخرين عليه.

شيئ اخر عن مميزات ال DDK في مكافي نحن نقوم ببناء الجدار الناري بواسطة ال DDK على الاقل 30% من الجدار الناري، و اعتقد بان في الاقسام الاخرى احدى نسخ مضاض الفيروسات مبنية نصفها بال DDK

بالتوفيق.

#4

بالنسبة ايضا للاجابة على الاسئلة، انا باشارك في انترنت على الاجابة على الاسئلة منذ عام 1998-1999 في مواقع مختلفة على انترنت و اخيرا استقريت في الفريق العربي للبرمجة، و من الصعب طوال الفترة السابقة كلها ان اكون موجود على انترنت طوال اليوم :D فهناك اسابيع لا ارغب بها حتى الفتح على المنتديات، المسئلة مزاج الانسان في النهاية، فهو يحب التغير قليلا من وقت لاخر.

ولكن مع ذلك يجب على الاخرين ايضا ان يشدوا نفسهم قليلا، فهناك الكثيرين ممن يزورون المنتديات و لديهم خبرات كبيرة جدا، وبعضهم لا وقت لديه ولكن البعض الاخر لا يحب الاجابة ببساطة :(

#5

لي ملاحظة بسيطه Native Application لا تستخدم WIN32 API هذا كما أشار اليه Russinovich في مقاله الذي اشرت اليه .

These programs speak the native NT API and can't use operating environment APIs like Win32. Why would such programs be needed? Any program that must run before the Win32 subsystem is started (around the time the logon box appears) must be a native application.

المشكله كماقلت ليست في الكود فلدي مرجع عن دوال الـ Native API و أستطيع استعمال عدد منها . مشكلتي اني لم أستطع عمل Build للكود بواسطه DDK حيث تكون هناك اخطاء اثناء عمليه الـ Build .

على العموم انا مازلت في طور البحث عن اجابه للسؤال .

شاكر لك الاهتمام .

بالنسبه لمسأله الرد على الاجابات و تقديم المعلومات للاخرين فالعرب بخلاء في هذا الجانب بشكل كبير فكل معلومة لا بد ان يكون لها مقابل $ , والدليل انهم يتسارعون الى المسابقات التي لها جوائز عينيه :P ( هذه وجهه نظري الشخصية فقط ) .

(f)

CIONO1

هناك حتى الأحلام أصبحت ممنوعة ...

إنه لعار أن ننتمي لهكذا أوطان ... لكن ... ربما العار أن نكون نحن أبناء لتلكم أوطان .. من يدري ؟!!

ليعلم أولئك ... إنّ الشعوب إنْ هي استيقظت تسحق ظُلامََهَا ...

There, even in dreams u r wanted

To be a programmer, how a nice dream it was

Leaving ...

أعيدوا لإسمي لونه المفضل

#6

السلام عليكم ....

اولا يا أخي tmaa اغلب الشباب هنا مبتدئين، و هذا النوع من الأسئلة يتكلم عن شيء في عمق نظام ويندوز ان تي، فلا تتوقع انه راح يجاوبك ثلاثة او اربعة و يناقشونك فيه .

ثانيا إذا لم يجاوبك احد فلا تنتقد الجميع و تقذفنا بأننا لا نساعد إلا بالمال، كلنا سألنا اسئلة لم تجاوب، و لكننا لانقذف زملائنا بأنهم لا يساعدون إلا بالمال، بل نلومهم على تقصيرهم بطريقة حسنة إذا كان هناك تقصير و نعذرهم إذا كان عندهم ظروف خاصة و ندعوا لهم بالتوفيق .

و بالنسبة لي فأعتذر عن تقصيري في المنتدى، و لكنني مشغول جدا جدا في الدراسة .

و بالنسبه لسؤالك فسوف أجاوبك عليه في اكثر من الرد، كل ما سنحت لي الفرصة و توفر لدي الوقت الكافي للكتابة .

بالنسبة لل Native API فهي الدوال الخاصة بنظام التشغيل، و تقع في جزء ال Kernel-Mode في الذاكرة في ملف ال ntoskrnl.exe ( هذا الملف هو نواة ويندوز ان تي)، و بما انها في ال Kernel-Mode فإن برامج التطبيقات العادية التي تعمل في ال User-Mode لا تستطيع الوصول إليها بشكل مباشر لعدة اسباب ... اهمها انه يجب اختراق العازل ما بين ال Kernel-Mode و ال User-Mode، كذلك يجب ان تتوفر إلية لإرسال بيانات لمناداة هذا الدوال، و استقبال بيانات من هذه الدوال عند رجوعها، بكلام اخرى .... يجب ان يتم توفير بوابة دخول في ال User-Mode لمناداة هذه الدوال، هذه البوابة هي الملف nt.dll، حيث توفر هذه المكتبة الألية لمناداة هذه دوال Native، و يجدر بالأشارة ان مكتبة ال nt.dll لاتوفر بوابة إلى جميع Native API و لكن إلى جزء منها، و إذا اردت مناداة ال Native API الأخرى ( الغير مدعومة في ال nt.dll ) يجب عليك بناء بوابة بنفسك ( يوجد بالمناسبة مقالات كثيرة عن كيفية بناء هذه البوابة )، وبالمناسبة فإن المكتبات الخاصة بال Win32 تستخدم هذه المكتبة للوصول إلى ال Native API .

الكلام السابق كله عبارة عن تعريف بال Native API، و انا متأكد انك تعرفها جيد ولكن و ضعتها لزيادة التوضيح و إزالة ال misunderstading إن وجد،و لانه مقال Mark لم يوضح الفكرة بشكل جيد و طريقة ال build التي استخدامها صعبة نوعا و تأخذ جهد .

السؤال الان كيف اقوم ببناء برنامج ينادي ال Native API، السؤال بسيط !!! و حله ابسط !!!

قم بمناداة الدوال التي في ال nt.dll، و هذا ستقوم بعملية ال routing إلى ال Kernel-Mode و من ثم الرجوع إلي ال User-Mode، ولكن هناك مشكلة لم تحل بعد !!! و هي اين اجد تعريف دوال ال Native API و الانواع البيانات التي تستخدمها data type ؟

هناك حلين لهذه المشكلة :

1 - استخدام ال DDK .

2 - القيام بتعريفها بأنفسنا .

الحل الأول هو الذي استخدمه Mark في مقاله، ولكن فيه عيوب، اهمها ان لا يستطيع استخدام ال SDK، و ايضا برمجته صعبه نوعا ما.

الطريقة الثانية ممتازة و بسيطة و توفي بالغرض، ولكنها ستأخذ جهد بكتابة التعريفات بنفسك، و لكن لحسن الحظ فقد كتبها غيرنا، و الاينك الذي بالاسفل يوفر الملفات التي عرفت فيها دوال ال nt.dll .

بقى فقط علينا فقط ملف nt.lib و الذي يستخدمه ال linker للربط ، و هو يأتي مع ال SDK .

المقال التي سيوضح لك الموضوع اكثر :

http://www.codeproject.com/books/1578701996.asp

ايضا السورس كود التالي، يوجد فيه برامج تنادي ال Native API :

www.ddj.com/ftp/1999/1999_11/ntinfo.zip

الذي اريدك ان تنتبه إليه الان هو ان كلامي السابق كان يتحدث عن كيفية مناداة ال Native API، و لكن لم يتكلم عن ال Native Application .

هذا لانه اذكر انك سألت عن كيفية مناداة ال Native API و لم يجاوبك احد، فهذا جاوبه، و بالنسبه لل Native Application فإن شاء الله فسيكون في الرد الجاي .

اتمنى ان اكون جاوبت على جزء كبير من سؤالك، وانا انتظر ردك حتى اكمل الموضوع .

تقبل تحياتي ..

#7

السلام عليكم

اولا اود ان أوضح نقطه هامه , لم أقصد بكلامي السابق اعضاء الفريق العربي لاني أعلم انهم يبادرون الى الاجابه بكل ما يستطيعون . كنت أقصد تلك الطبقه التي تقرأ او ربما قد تتنازل للدخول الى منتدياتنا العربيه ذات يوم , تلك الطبقه ( ركز معي , ليسوا من اعضاء المنتدى ) التي تعمل في شركات كبيرة عربية او اجنبيه لكنها لا تتنازل في ابداء ولو جزء بسيط مما لديها .

نرى في الـ Forums للدول الاخرى العديد من المبرمجين الذين لا يبخلون بالاجابة ولو كان السؤال من مبتدئ أما نحن العرب الذي نبدي كرهنا للاحتكار فقط عندما نكون في الجامعه او في شركه صغيره , ثم ننسى ذلك حين تتوافر الفرصه لنا ...

شئ أخر دفعني للكلام الذي ذكرته في ردي السابق هو ان العرب محصورون في جزء من عالم الكمبيوتر و يهملون اجزاء كثيرة ...( هناك مواضيع كثيرة تتم مناقشتها في منتديات اجنبيه ونادرا ما تناقش بالعربيه بل ربما ستناقش بعد أن يستغنى عنها ).

ما علينا من هذا الكلام فلا حياة لمن تنادي.

أعود للسؤال :

بالنسبه لاستدعاء Native API فكما ذكرت ليس هناك مشكله ( فقط كانت لدي مشكله في احدى الدوال وهي التي تناقشت معك من قبل عنها ).

ما أريده هو Native Application اي برنامج شبيه بالذي شرح عنه Mark .

اثناء بحثي في google Groups وجدت شخصا واجتهه نفس المشكله .

هنا : http://groups.google.com/groups?q=native+g...ogle.com&rnum=1

هذه هي نفس المشكله التي واجهتها . المشكله فقط في عمليه الـ Build وليست في الكود .

(f)

CIONO1

هناك حتى الأحلام أصبحت ممنوعة ...

إنه لعار أن ننتمي لهكذا أوطان ... لكن ... ربما العار أن نكون نحن أبناء لتلكم أوطان .. من يدري ؟!!

ليعلم أولئك ... إنّ الشعوب إنْ هي استيقظت تسحق ظُلامََهَا ...

There, even in dreams u r wanted

To be a programmer, how a nice dream it was

Leaving ...

أعيدوا لإسمي لونه المفضل

#8

كلامك صحيح بالنسبة للمنتديات الاجنبية، فهناك الكثير من الامور التي تناقش هناك ولكن المشكلة هي ان الكثير من العربي ايضا يناقشونها هناك :)

انا وجد مثلا ان هناك اسماء عربية في موقع كندي لوضع المواصفات القياسية لامور الكومبيوتر (لا اتذكر اسم الموقع بالضبط) و لاحظت وجود اسماء عربية كثيرة في الكثير من المواقع التي صدف مريت عليها.

بالنسبة لل Build انا لدي في العمل DDK مع VS.NET و مرتبط ب Setting خاصة، لو تمكنت سوف احاول ان عمل Build له، هذا لو تمكنت و ليس اكيد :D

انا باتذكر اول مرة عملت Build لبرنامج ما حدثت معي مشاكل كثيرة، اهمها هي اماكن ملفات ال h و ال Path الخاص بها و ال Path الخاص بالمكتبات الاخرى و بعض هذه الامور. و في النهاية اضطررت الى عمل copy و past لبعض سطور set الخاصة ب visual studio الى محرر ال dos الخاص بال ddk و كانت هناك wornings ايضا.

سوف ارى اذا يمكنني ان اعمل شيئ، ولكن هذا بعد 3 ايام على الاقل

#9

شاكر لكم الاهتمام .

بالنسبه لموضوع مشاركات العرب في المنتديات الاجنبيه فهذا كثير ( حتى ان هناك من اعضاء الفريق من يشارك في منتديات اجنبيه , احيانا بمواضيع لا أعلم لماذا لا تطرح في منتديات عربيه :D ) . الاكثار من الكلام في هذا الموضوع لن يعود بفائده لذا لن اغوض فيه اكثر .

الامثلة الموجودة مع DDK تتم عمليه Build لها دون اي مشاكل . مثال Mark فيه مشاكل :mad:

سأظل انتظر حل للمشكله .(لا يهم المدة حتى ان طالت فترة الانتظار ).

مشكورين (f) (f) (f)

CIONO1

هناك حتى الأحلام أصبحت ممنوعة ...

إنه لعار أن ننتمي لهكذا أوطان ... لكن ... ربما العار أن نكون نحن أبناء لتلكم أوطان .. من يدري ؟!!

ليعلم أولئك ... إنّ الشعوب إنْ هي استيقظت تسحق ظُلامََهَا ...

There, even in dreams u r wanted

To be a programmer, how a nice dream it was

Leaving ...

أعيدوا لإسمي لونه المفضل

#10

السلام عليكم

الحمد لله تمكنت من عمل Build للكود بعد تعديل في ملف sources وتعديل في ملف MAKEFILE.DEF الموجود في bin.

في ملف sources نقوم بهذا التعديل :

TARGETPATH=obj

بالنسبه لـ MAKEFILE.DEF فنقوم بطباعة الملف المرفق مع الكود الذي كتبه Mark الى المجلد bin (اي overwrite) .

Mark قام بتعديل سطر في الملف وهو السطر الخاص بـ nt.lib يمكن مقارنة الملفين لمعرفه التعديل .

هذا هو :

#NT_CRT=$(LIBRARY_PATH)nt.lib

NT_CRT=$(MSVCDIR)libmsvcrt.lib

حيث تم الاستغناء عن السطر الاول الذي يشير الى nt.lib والذي لم تقم MS بارفاقه مع DDK .

ان شاء الله اضع مثال بسيط عن Native Application لاحقا .

شاكر لكل الذين اهتموا بالموضوع (f) (f) (f)

CIONO1

هناك حتى الأحلام أصبحت ممنوعة ...

إنه لعار أن ننتمي لهكذا أوطان ... لكن ... ربما العار أن نكون نحن أبناء لتلكم أوطان .. من يدري ؟!!

ليعلم أولئك ... إنّ الشعوب إنْ هي استيقظت تسحق ظُلامََهَا ...

There, even in dreams u r wanted

To be a programmer, how a nice dream it was

Leaving ...

أعيدوا لإسمي لونه المفضل

#11

السلام عليكم ...

اسف على الرد المتأخر ...

على البركة نجاح العملية و من نجاح إلى نجاح حتى تحقق هدفك إن شاء الله ..

تقبل تحياتي ...

هذا الموضوع مغلق.

مواضيع مشابهة