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

۷ مطلب با موضوع «Windows :: Windows API» ثبت شده است

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


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

ProcessAffinityMask , ThreadAffinityMask , SystemInfo

در این پست توضیحات مختصری درمورد سه API ویندوز میدهیم و برای هر یک مثالی میزنیم .

BOOL WINAPI SetProcessAffinityMask(
  HANDLE    hProcess,
  DWORD_PTR dwProcessAffinityMask
);
DWORD_PTR WINAPI SetThreadAffinityMask(
  HANDLE    hThread,
  DWORD_PTR dwThreadAffinityMask
);
void WINAPI GetSystemInfo(
  LPSYSTEM_INFO lpSystemInfo
);

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

CreateNamedPipe , ConnectNamedPipe

CreateNamedPipe : این تابع پس از ساخته شدن یک هندل برای کنترل برمیگرداند و سپس شروع به کار میکند.

سینتکس این تابع به صورت زیر میباشد .

HANDLE WINAPI CreateNamedPipe(
  LPCTSTR               lpName,
  DWORD                 dwOpenMode,
  DWORD                 dwPipeMode,
  DWORD                 nMaxInstances,
  DWORD                 nOutBufferSize,
  DWORD                 nInBufferSize,
  DWORD                 nDefaultTimeOut,
  LPSECURITY_ATTRIBUTES lpSecurityAttributes
);

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

CreateFile

این تابع یک API ویندوز میباشد و برای ساخت یا باز کردن یک فایل یا یک جریان ورودی خروجی برای یک وسیله میباشد .
این تابع در ویندز XP و Server 2003 بعد از آنها قابل استفاده میباشد و در Kernel32.dll موجود است .

در حالت یونی کد از CreateFileW و در حالت اسکی از CreateFileA نیز استفاده میشود

HANDLE WINAPI CreateFile(
  LPCTSTR               lpFileName,
  DWORD                 dwDesiredAccess,
  DWORD                 dwShareMode,
  LPSECURITY_ATTRIBUTES lpSecurityAttributes,
  DWORD                 dwCreationDisposition,
  DWORD                 dwFlagsAndAttributes,
  HANDLE                hTemplateFile
);

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

CreateProcess

این تابع یک API ویندوز میباشد و برای اجرا کردن فایل اجرایی از Hard میباشد .
این تابع در ویندز XP و Server 2003 بعد از آنها قابل استفاده میباشد و در Kernel32.dll موجود است .

BOOL WINAPI CreateProcess(
  LPCTSTR               lpApplicationName,
  LPTSTR                lpCommandLine,
  LPSECURITY_ATTRIBUTES lpProcessAttributes,
  LPSECURITY_ATTRIBUTES lpThreadAttributes,
  BOOL                  bInheritHandles,
  DWORD                 dwCreationFlags,
  LPVOID                lpEnvironment,
  LPCTSTR               lpCurrentDirectory,
  LPSTARTUPINFO         lpStartupInfo,
  LPPROCESS_INFORMATION lpProcessInformation
);
ادامه مطلب...
۳۰ خرداد ۹۶ ، ۱۲:۵۶ ۰ نظر موافقین ۱ مخالفین ۰
سید عمید قائم مقامی