آموزش برنامه نویسی بصورت تئوری و عملی

Qt_widget_sample_02

در این سمپل نمونه هایی از رسم چارت و پات در Qt و کتابخانه Qwt آورده شده.
همچنین سورس این کتاب خانه و آموزش کامپایل آن با کامپایلر mingw آورده شده .


ادامه مطلب...
۱۱ فروردين ۹۷ ، ۱۵:۲۸ ۰ نظر موافقین ۰ مخالفین ۰
سید عمید قائم مقامی

Qt_widget_sample_01

در این سمپل نمونه ای از کاربرد سیگنال و اسلات آورده شده همراه با روش درست کد نویسی کردن در فریمورک کیوت و ساخت و اضافه کردن اشیا  (QMenu و QGroupBox و QTextEdit و ....)میباشد .

ادامه مطلب...
۲۶ اسفند ۹۶ ، ۲۱:۰۰ ۰ نظر موافقین ۰ مخالفین ۰
سید عمید قائم مقامی

analyze_pe

pe نوعی فایل میباشد که استاندارد فایل های اجرایی ویندوز از جمله exe و dll و sys و .... میباشد . در این پست ما قصد داریم تا هدر  و دیتا های خام این فایل را تا حدودی بررسی نماییم.

در این عکس هدر فایل pe را مشاهده میکنیم .

pe

ادامه مطلب...
۰۱ بهمن ۹۶ ، ۱۹:۴۸ ۰ نظر موافقین ۰ مخالفین ۰
سید عمید قائم مقامی

QFile_QDir

در این قسمت ما به دو کلاس ذکر شده بطور مختصر و با ارائه مثال میپردازیم تا پایه ای گردد برای کلاس ها و آموزش های بالاتری از فریمورک Qt

ادامه مطلب...
۳۰ دی ۹۶ ، ۲۰:۲۵ ۰ نظر موافقین ۰ مخالفین ۰
سید عمید قائم مقامی

نوشتن درایور قسمت اول

از این به بعد بشتر تمرکز پستهام رو روی کرنل و درایور نویسی و ساختار درون اون میگذارم .
تصمیم داشتم بیشتر درمورد ساختار درون کرنل ویندوز توضیح بدم اما دیدم بیشتر موجب سردرگمی میشه برای همین تصمیم گرفتم با ارائه مثال ، در وقت مناسب ساختار هارو بیشتر توضیح بدم .

اولین پست ررو با یک مثال خیلی خیلی ساده توضیح میدم که خواننده ها بیشتر با روش کامپایل و اجرا و دیدن خروجی درایور آشنا بشن .

typedef struct _DRIVER_OBJECT {
  PDEVICE_OBJECT     DeviceObject;
  PDRIVER_EXTENSION  DriverExtension;
  PUNICODE_STRING    HardwareDatabase;
  PFAST_IO_DISPATCH  FastIoDispatch;
  PDRIVER_INITIALIZE DriverInit;
  PDRIVER_STARTIO    DriverStartIo;
  PDRIVER_UNLOAD     DriverUnload;
  PDRIVER_DISPATCH   MajorFunction[IRP_MJ_MAXIMUM_FUNCTION+1];
} DRIVER_OBJECT, *PDRIVER_OBJECT;

ادامه مطلب...
۳۱ شهریور ۹۶ ، ۱۲:۱۹ ۰ نظر موافقین ۰ مخالفین ۰
سید عمید قائم مقامی

ntquerysysteminformation

این تابع وضعیت سیستم را ارزیابی میکند .

NTSTATUS WINAPI NtQuerySystemInformation(
  _In_      SYSTEM_INFORMATION_CLASS SystemInformationClass,
  _Inout_   PVOID                    SystemInformation,
  _In_      ULONG                    SystemInformationLength,
  _Out_opt_ PULONG                   ReturnLength
);
ادامه مطلب...
۲۳ شهریور ۹۶ ، ۲۰:۳۰ ۰ نظر موافقین ۰ مخالفین ۰
سید عمید قائم مقامی

how to create service windows

سرویس برنامه ای است که که فاقد گرافیک و واسط کاربری میباشد و برنامه ای است که میتواند بصورت لحظه ای یا دائمی ، از قبل از ورود کابر به ویندوز یا در هر لحظه ای فعال و اجرا گردد.

برای شروع چند ساختمان مورد استفاده در آن را بر رسی میکنیم .

ساختمان SERVICE_TABLE_ENTRY:

برای راه اندازی سرویس ، مایکروسافت یک ساختمان دادی ای تشکیل داده که باید آن را پر کنیم الگوی آن به صورت زیر است

typedef struct _SERVICE_TABLE_ENTRY {
  LPTSTR                  lpServiceName;
  LPSERVICE_MAIN_FUNCTION lpServiceProc;
} SERVICE_TABLE_ENTRY, *LPSERVICE_TABLE_ENTRY;

داده اول یک استرینگ است که شامل نام سرویس میباشد ، داده دوم نیز باید با تابعی مقدار دهی شود که تابع اصلی سرویس میباشد(در مثال ارائه شده با آن بیشتر آشنا میشویم.

ادامه مطلب...
۲۳ شهریور ۹۶ ، ۱۴:۳۴ ۰ نظر موافقین ۰ مخالفین ۰
سید عمید قائم مقامی

Shared_memory

در قسمت های قبل در مورد پایپ و به اشتراک گذاری حافظه در پراسس ها به اندازه کافی صحبت شد . اما در اون روش ما یک کپی از دیتا رو در اختیار پراسس های دیگر قرار میدادیم .

در این قسمت تصمیم داریم تا از روش دیگری استفاده کنیم ، در این روش ما یک آدرس از دیتای مورد نظر خودمون رو بین دو یا چند پراسس به اشتراک میگذاریم(بدون کپی کردن). بدلیل این که کپیی از آنها تهیه نمیکنیم سرعت انتقال بسیار بیشتر از استفاده از پایپ میبشد . اما باید این نکته را نیز در نظر داشت در انتقال حجم های کم این روش میتواند باعث افزایش بی دلیل داده گردد ، دلیل آن هم این است که چون مثلا پیج های حافظه ( اغلب ) به اندازه 4 کیلوبایت میباشد ،اگر ما داده ای را که به اندازه 3 کیلو بایت است را بین پروسس ها شیر کنیم ، مقدار 4 کیلوبایت شیر میگردد (چون هر پیج دارای 4 کیلوبایت است ) ، و بنابر این یک کیلوبایت اضافه شیر میگردد .


HANDLE WINAPI CreateFileMapping(
  _In_     HANDLE                hFile,
  _In_opt_ LPSECURITY_ATTRIBUTES lpAttributes,
  _In_     DWORD                 flProtect,
  _In_     DWORD                 dwMaximumSizeHigh,
  _In_     DWORD                 dwMaximumSizeLow,
  _In_opt_ LPCTSTR               lpName
);
LPVOID WINAPI MapViewOfFile(
  _In_ HANDLE hFileMappingObject,
  _In_ DWORD  dwDesiredAccess,
  _In_ DWORD  dwFileOffsetHigh,
  _In_ DWORD  dwFileOffsetLow,
  _In_ SIZE_T dwNumberOfBytesToMap
);
void CopyMemory(
  _In_       PVOID  Destination,
  _In_ const VOID   *Source,
  _In_       SIZE_T Length
);


Shared Memory


ادامه مطلب...
۲۱ شهریور ۹۶ ، ۲۲:۱۵ ۰ نظر موافقین ۰ مخالفین ۰
سید عمید قائم مقامی

List_Process_app

این برنامه در حالت کلی به دو بخش تقسیم میشه که قسمت اول در پشت صحنه بصورت یک سرویس همیشه در حال اجراست و به عنوان یه ناظر بصورت دائم پراسس های اجرا شده در سیستم را ذخیره میکند و زمانی که برنامه کاربر اجرا میگردد این اطلاعات را در اختیار برنامه کاربر قرار میدهد تا قابل مشاهده باشد .

نکته مهم اینکه این برنامه تنها در ویندوز  7 . 8 . 10 64 bit قابل اجرا میباشد .

(خوشحال میشم نظراتتون رو درمورد برنامه اعلام کنید چه نقاط قوت و چه ضعف )


ادامه مطلب...
۱۴ شهریور ۹۶ ، ۰۰:۰۳ ۰ نظر موافقین ۰ مخالفین ۰
سید عمید قائم مقامی

Virtual address spaces

زمانی که یک پردازنده اقدام به خواندن و نوشنتن به یک مکان حافظه میکند ، از یک آدرس مجازی استفاده میکند .

به عنوان بخشی از عملیات  خواندن یا نوشتن ، پردازنده آدرس مجازی را به آدرس فیزیکی ترجمه میکند . دسترسی به حافظه از طریق یک آدرس مجازی مزایای زیر را دارد :
ادامه مطلب...
۱۹ مرداد ۹۶ ، ۲۰:۱۸ ۰ نظر موافقین ۰ مخالفین ۰
سید عمید قائم مقامی