




السمعة:
السلام عليكم ورحمه الله وبركاته
لا يعرف قيمة هذي الدوال الا من يريد ان يفهم ما يدور في الخفاء وهنا تظهر جليآ قوة لغة سي في برمجة الأنظمة
اولآ اريد حفظ هذي الدوال الأساسية هنا حتى يكون مرجع لي ..
ثانيآ يجب ان تفهم انواع البيانات في الدوال الأساسية في نظام ويندوز بلغة سي
هنا
السلام عليكم ورحمه الله وبركاته
هذا موضوع مهم جداً
# أنواع البيانات الأساسية في دوال نظام ويندوز بلغة C
عند برمجة تطبيقات ويندوز باستخدام لغة C وواجهة WinAPI، ستواجه مجموعة من أنواع البيانات المحددة التي طورتها مايكروسوفت لضمان التوافق بين إصدارات ويندوز المختلفة (32-bit و64-bit). إليك أهم هذه الأنواع:
## 1. الأنواع الأساسية (Basic Types)
| النوع في WinAPI | النوع في C | الوصف | الحجم (بايت) |
|----------------|----------|-------|-------------|
| `BOOL` | `int` | قيمة منطقية (TRUE/FALSE) | 4 |
| `BOOLEAN` | `unsigned char` | قيمة منطقية (مختلفة عن BOOL) | 1 |
| `BYTE` | `unsigned...
هذا موضوع مهم جداً
# أنواع البيانات الأساسية في دوال نظام ويندوز بلغة C
عند برمجة تطبيقات ويندوز باستخدام لغة C وواجهة WinAPI، ستواجه مجموعة من أنواع البيانات المحددة التي طورتها مايكروسوفت لضمان التوافق بين إصدارات ويندوز المختلفة (32-bit و64-bit). إليك أهم هذه الأنواع:
## 1. الأنواع الأساسية (Basic Types)
| النوع في WinAPI | النوع في C | الوصف | الحجم (بايت) |
|----------------|----------|-------|-------------|
| `BOOL` | `int` | قيمة منطقية (TRUE/FALSE) | 4 |
| `BOOLEAN` | `unsigned char` | قيمة منطقية (مختلفة عن BOOL) | 1 |
| `BYTE` | `unsigned...
- αв∂υℓℓαн
- الردود: 0
- المنتدى: قسم لغات البرمجة Programming Languages
الان سأضع كل الدوال وكل داله تجد بجوارها الشرح
# شرح الدوال الأساسية في نظام ويندوز بلغة C
C:
/*
* شرح الدوال الأساسية لويندوز API في لغة C
* هذا الملف يحتوي على أهم الدوال المستخدمة في برمجة ويندوز
*/
#include <windows.h>
/* ==================== دوال التعامل مع الملفات ==================== */
// CreateFile - إنشاء أو فتح ملف
HANDLE CreateFile(
LPCTSTR lpFileName, // اسم الملف
DWORD dwDesiredAccess, // صلاحية الوصول (قراءة/كتابة)
DWORD dwShareMode, // مشاركة الملف
LPSECURITY_ATTRIBUTES lpSecurityAttributes, // أمان الملف
DWORD dwCreationDisposition, // إجراء عند وجود الملف (إنشاء/فتح)
DWORD dwFlagsAndAttributes, // سمات الملف
HANDLE hTemplateFile // مقبض لقالب ملف
);
// ReadFile - قراءة من ملف
BOOL ReadFile(
HANDLE hFile, // مقبض الملف
LPVOID lpBuffer, // buffer لتخزين البيانات المقروءة
DWORD nNumberOfBytesToRead, // عدد البايتات المراد قراءتها
LPDWORD lpNumberOfBytesRead, // عدد البايتات المقروءة فعلياً
LPOVERLAPPED lpOverlapped // بنية للعمليات غير المتزامنة
);
// WriteFile - الكتابة إلى ملف
BOOL WriteFile(
HANDLE hFile, // مقبض الملف
LPCVOID lpBuffer, // buffer يحتوي البيانات للكتابة
DWORD nNumberOfBytesToWrite, // عدد البايتات للكتابة
LPDWORD lpNumberOfBytesWritten, // عدد البايتات المكتوبة فعلياً
LPOVERLAPPED lpOverlapped // بنية للعمليات غير المتزامنة
);
// CloseHandle - إغلاق المقبض
BOOL CloseHandle(
HANDLE hObject // مقبض الكائن (ملف، ثريد، etc.)
);
/* ==================== دوال النوافذ والواجهات ==================== */
// RegisterClass - تسجيل صنف النافذة
ATOM RegisterClass(
CONST WNDCLASS *lpWndClass // بنية تحتوي على معلومات الصنف
);
// CreateWindow - إنشاء نافذة
HWND CreateWindow(
LPCTSTR lpClassName, // اسم صنف النافذة
LPCTSTR lpWindowName, // اسم النافذة
DWORD dwStyle, // نمط النافذة
int x, // موضع أفقي
int y, // موضع عمودي
int nWidth, // عرض
int nHeight, // ارتفاع
HWND hWndParent, // نافذة أب
HMENU hMenu, // قائمة
HINSTANCE hInstance, // نسخة التطبيق
LPVOID lpParam // بيانات إضافية
);
// ShowWindow - عرض النافذة
BOOL ShowWindow(
HWND hWnd, // مقبض النافذة
int nCmdShow // حالة العرض (طبيعي، مصغر، etc.)
);
// UpdateWindow - تحديث النافذة
BOOL UpdateWindow(
HWND hWnd // مقبض النافذة
);
// GetMessage - استقبال الرسائل
BOOL GetMessage(
LPMSG lpMsg, // بنية الرسالة
HWND hWnd, // مقبض النافذة (NULL لجميع الرسائل)
UINT wMsgFilterMin, // أقل رقم رسالة
UINT wMsgFilterMax // أعلى رقم رسالة
);
// DispatchMessage - إرسال الرسالة إلى إجراء النافذة
LRESULT DispatchMessage(
CONST MSG *lpmsg // بنية الرسالة
);
/* ==================== دوال العمليات والثريدات ==================== */
// CreateProcess - إنشاء عملية جديدة
BOOL CreateProcess(
LPCTSTR lpApplicationName, // اسم التطبيق
LPTSTR lpCommandLine, // سطر الأوامر
LPSECURITY_ATTRIBUTES lpProcessAttributes, // أمان العملية
LPSECURITY_ATTRIBUTES lpThreadAttributes, // أمان الثريد
BOOL bInheritHandles, // توريث المقابض
DWORD dwCreationFlags, // إشارات الإنشاء
LPVOID lpEnvironment, // بيئة العملية
LPCTSTR lpCurrentDirectory, // الدليل الحالي
LPSTARTUPINFO lpStartupInfo, // معلومات البدء
LPPROCESS_INFORMATION lpProcessInformation // معلومات العملية
);
// CreateThread - إنشاء ثريد جديد
HANDLE CreateThread(
LPSECURITY_ATTRIBUTES lpThreadAttributes, // أمان الثريد
SIZE_T dwStackSize, // حجم الستاك
LPTHREAD_START_ROUTINE lpStartAddress, // دالة البدء
LPVOID lpParameter, // معاملات الدالة
DWORD dwCreationFlags, // إشارات الإنشاء
LPDWORD lpThreadId // معرف الثريد
);
// WaitForSingleObject - انتظار كائن حتى يصبح signaled
DWORD WaitForSingleObject(
HANDLE hHandle, // مقبض الكائن
DWORD dwMilliseconds // وقت الانتظار (بالميلي ثانية)
);
/* ==================== دوال الذاكرة ==================== */
// VirtualAlloc - حجز أو تخصيص ذاكرة
LPVOID VirtualAlloc(
LPVOID lpAddress, // عنوان البداية
SIZE_T dwSize, // الحجم
DWORD flAllocationType, // نوع التخصيص
DWORD flProtect // حماية الصفحة
);
// VirtualFree - تحرير ذاكرة محجوزة
BOOL VirtualFree(
LPVOID lpAddress, // عنوان الذاكرة
SIZE_T dwSize, // الحجم
DWORD dwFreeType // نوع التحرير
);
/* ==================== دوال أخرى مهمة ==================== */
// GetLastError - الحصول على آخر خطأ
DWORD GetLastError();
// MessageBox - عرض رسالة للمستخدم
int MessageBox(
HWND hWnd, // مقبض النافذة الأب
LPCTSTR lpText, // نص الرسالة
LPCTSTR lpCaption, // عنوان النافذة
UINT uType // نوع الرسالة (أيقونات، أزرار)
);
// GetSystemTime - الحصول على وقت النظام
VOID GetSystemTime(
LPSYSTEMTIME lpSystemTime // بنية وقت النظام
);
# شرح موسع للدوال الأساسية في نظام ويندوز بلغة c
C:
/*
* شرح موسع للدوال الأساسية لويندوز API في لغة C
* يحتوي على دوال إضافية مهمة للبرمجة في بيئة ويندوز
*/
#include <windows.h>
#include <tchar.h>
/* ==================== دوال الملفات والمجلدات المتقدمة ==================== */
// FindFirstFile - البحث عن أول ملف مطابق لنمط معين
HANDLE FindFirstFile(
LPCTSTR lpFileName, // نمط البحث (مثال: "C:\\*.*")
LPWIN32_FIND_DATA lpFindFileData // بنية تخزن معلومات الملف
);
// FindNextFile - البحث عن الملف التالي المطابق للنمط
BOOL FindNextFile(
HANDLE hFindFile, // مقبض البحث من FindFirstFile
LPWIN32_FIND_DATA lpFindFileData // بنية معلومات الملف
);
// FindClose - إغلاق مقبض البحث
BOOL FindClose(
HANDLE hFindFile // مقبض البحث
);
// CopyFile - نسخ ملف
BOOL CopyFile(
LPCTSTR lpExistingFileName, // اسم الملف المصدر
LPCTSTR lpNewFileName, // اسم الملف الهدف
BOOL bFailIfExists // إذا كان TRUE يفشل عند وجود الملف الهدف
);
// MoveFile - نقل أو تغيير اسم ملف
BOOL MoveFile(
LPCTSTR lpExistingFileName, // الاسم الحالي
LPCTSTR lpNewFileName // الاسم الجديد
);
// GetCurrentDirectory - الحصول على المسار الحالي
DWORD GetCurrentDirectory(
DWORD nBufferLength, // حجم الـ buffer
LPTSTR lpBuffer // buffer لتخزين المسار
);
// SetCurrentDirectory - تغيير المسار الحالي
BOOL SetCurrentDirectory(
LPCTSTR lpPathName // المسار الجديد
);
/* ==================== دوال السجل (Registry) ==================== */
// RegOpenKeyEx - فتح مفتاح في السجل
LONG RegOpenKeyEx(
HKEY hKey, // مقبض المفتاح الأساسي (مثل HKEY_CURRENT_USER)
LPCTSTR lpSubKey, // اسم المفتاح الفرعي
DWORD ulOptions, // خيارات
REGSAM samDesired, // صلاحيات الوصول
PHKEY phkResult // مقبض المفتاح الناتج
);
// RegQueryValueEx - قراءة قيمة من السجل
LONG RegQueryValueEx(
HKEY hKey, // مقبض المفتاح
LPCTSTR lpValueName, // اسم القيمة
LPDWORD lpReserved, // محجوز (يجب أن يكون NULL)
LPDWORD lpType, // نوع القيمة
LPBYTE lpData, // buffer لتخزين البيانات
LPDWORD lpcbData // حجم الـ buffer
);
// RegSetValueEx - كتابة قيمة في السجل
LONG RegSetValueEx(
HKEY hKey, // مقبض المفتاح
LPCTSTR lpValueName, // اسم القيمة
DWORD Reserved, // محجوز (يجب أن يكون 0)
DWORD dwType, // نوع القيمة
CONST BYTE *lpData, // البيانات
DWORD cbData // حجم البيانات
);
// RegCloseKey - إغلاق مقبض المفتاح
LONG RegCloseKey(
HKEY hKey // مقبض المفتاح
);
/* ==================== دوال الشبكات ==================== */
// WSAStartup - تهيئة Winsock
int WSAStartup(
WORD wVersionRequested, // إصدار Winsock المطلوب
LPWSADATA lpWSAData // بنية معلومات Winsock
);
// socket - إنشاء مقبض socket
SOCKET socket(
int af, // عائلة العناوين (AF_INET للإنترنت)
int type, // نوع الـ socket (SOCK_STREAM لـ TCP)
int protocol // البروتوكول
);
// bind - ربط الـ socket بعنوان
int bind(
SOCKET s, // مقبض الـ socket
const struct sockaddr *name, // بنية العنوان
int namelen // حجم بنية العنوان
);
// listen - جعل الـ socket يستمع لاتصالات واردة
int listen(
SOCKET s, // مقبض الـ socket
int backlog // أقصى طول لطابور الاتصالات المعلقة
);
// accept - قبول اتصال وارد
SOCKET accept(
SOCKET s, // مقبض الـ socket
struct sockaddr *addr, // بنية عنوان العميل
int *addrlen // حجم بنية العنوان
);
// WSACleanup - إنهاء استخدام Winsock
int WSACleanup();
/* ==================== دوال الوقت والتوقيت ==================== */
// GetLocalTime - الحصول على الوقت المحلي
VOID GetLocalTime(
LPSYSTEMTIME lpSystemTime // بنية وقت النظام
);
// SetLocalTime - ضبط الوقت المحلي
BOOL SetLocalTime(
CONST SYSTEMTIME *lpSystemTime // بنية الوقت الجديد
);
// GetTickCount - الحصول على عدد المللي ثانية منذ تشغيل النظام
DWORD GetTickCount();
// Sleep - تعليق التنفيذ لفترة محددة
VOID Sleep(
DWORD dwMilliseconds // عدد المللي ثانية
);
/* ==================== دوال متقدمة للعمليات ==================== */
// ShellExecute - تنفيذ عملية من خلال shell النظام
HINSTANCE ShellExecute(
HWND hwnd, // نافذة الأب
LPCTSTR lpOperation, // العملية ("open", "print", etc.)
LPCTSTR lpFile, // اسم الملف أو الأمر
LPCTSTR lpParameters, // معاملات الأمر
LPCTSTR lpDirectory, // الدليل الابتدائي
INT nShowCmd // كيفية عرض النافذة
);
// TerminateProcess - إنهاء عملية
BOOL TerminateProcess(
HANDLE hProcess, // مقبض العملية
UINT uExitCode // كود الخروج
);
// GetExitCodeProcess - الحصول على كود خروج عملية
BOOL GetExitCodeProcess(
HANDLE hProcess, // مقبض العملية
LPDWORD lpExitCode // مؤشر لكود الخروج
);
/* ==================== دوال الذاكرة المتقدمة ==================== */
// HeapAlloc - تخصيص ذاكرة من الـ heap
LPVOID HeapAlloc(
HANDLE hHeap, // مقبض الـ heap
DWORD dwFlags, // إشارات التخصيص
SIZE_T dwBytes // عدد البايتات المطلوبة
);
// HeapFree - تحرير ذاكرة من الـ heap
BOOL HeapFree(
HANDLE hHeap, // مقبض الـ heap
DWORD dwFlags, // إشارات التحرير
LPVOID lpMem // مؤشر للذاكرة
);
// GlobalMemoryStatus - الحصول على معلومات عن الذاكرة
VOID GlobalMemoryStatus(
LPMEMORYSTATUS lpBuffer // بنية معلومات الذاكرة
);
/* ==================== دوال واجهة المستخدم الإضافية ==================== */
// DialogBox - إنشاء صندوق حوار
INT_PTR DialogBox(
HINSTANCE hInstance, // نسخة التطبيق
LPCTSTR lpTemplate, // معرف القالب
HWND hWndParent, // نافذة الأب
DLGPROC lpDialogFunc // إجراء الصندوق
);
// SendMessage - إرسال رسالة إلى نافذة
LRESULT SendMessage(
HWND hWnd, // مقبض النافذة
UINT Msg, // رقم الرسالة
WPARAM wParam, // معامل إضافي
LPARAM lParam // معامل إضافي
);
// PostMessage - وضع رسالة في طابور الرسائل
BOOL PostMessage(
HWND hWnd, // مقبض النافذة
UINT Msg, // رقم الرسالة
WPARAM wParam, // معامل إضافي
LPARAM lParam // معامل إضافي
);
/* ==================== دوال متفرقة مهمة ==================== */
// Beep - إصدار صوت
BOOL Beep(
DWORD dwFreq, // التردد (هرتز)
DWORD dwDuration // المدة (مللي ثانية)
);
// GetComputerName - الحصول على اسم الكمبيوتر
BOOL GetComputerName(
LPTSTR lpBuffer, // buffer لتخزين الاسم
LPDWORD nSize // حجم الـ buffer
);
// GetUserName - الحصول على اسم المستخدم الحالي
BOOL GetUserName(
LPTSTR lpBuffer, // buffer لتخزين الاسم
LPDWORD pcbBuffer // حجم الـ buffer
);
// GetVersionEx - الحصول على إصدار النظام
BOOL GetVersionEx(
LPOSVERSIONINFO lpVersionInfo // بنية معلومات الإصدار
);
# الدوال المتقدمة لويندوز API - الجزء الثالث
C:
/*
* موسوعة دوال ويندوز API المتقدمة - الجزء الثالث
* هذا الملف يحتوي على دوال متقدمة للتعامل مع النظام
*/
#include <windows.h>
#include <winuser.h>
#include <winsock2.h>
#include <wininet.h>
#include <pdh.h>
#include <psapi.h>
/* ================ دوال إدارة العمليات المتقدمة ================ */
// EnumProcesses - تعداد جميع العمليات الجارية
BOOL EnumProcesses(
DWORD *pProcessIds, // مصفوفة لتخزين معرفات العمليات
DWORD cb, // حجم المصفوفة بالبايت
DWORD *pBytesReturned // عدد البايتات المعادة
);
// OpenProcess - فتح مقبض لعملية موجودة
HANDLE OpenProcess(
DWORD dwDesiredAccess, // صلاحيات الوصول (PROCESS_ALL_ACCESS)
BOOL bInheritHandle, // هل يتم توريث المقبض؟
DWORD dwProcessId // معرف العملية
);
// GetProcessTimes - الحصول على أوقات العملية
BOOL GetProcessTimes(
HANDLE hProcess, // مقبض العملية
LPFILETIME lpCreationTime, // وقت الإنشاء
LPFILETIME lpExitTime, // وقت الانتهاء
LPFILETIME lpKernelTime, // وقت التنفيذ في kernel mode
LPFILETIME lpUserTime // وقت التنفيذ في user mode
);
// GetProcessMemoryInfo - معلومات ذاكرة العملية
BOOL GetProcessMemoryInfo(
HANDLE Process, // مقبض العملية
PPROCESS_MEMORY_COUNTERS ppsmemCounters, // بنية المعلومات
DWORD cb // حجم البنية
);
/* ================ دوال إدارة الخدمات ================ */
// OpenSCManager - فتح مدير خدمة التحكم
SC_HANDLE OpenSCManager(
LPCTSTR lpMachineName, // اسم الجهاز (NULL للجهاز المحلي)
LPCTSTR lpDatabaseName, // قاعدة بيانات الخدمات (NULL للافتراضي)
DWORD dwDesiredAccess // صلاحيات الوصول
);
// OpenService - فتح خدمة موجودة
SC_HANDLE OpenService(
SC_HANDLE hSCManager, // مقبض مدير الخدمات
LPCTSTR lpServiceName, // اسم الخدمة
DWORD dwDesiredAccess // صلاحيات الوصول
);
// StartService - بدء تشغيل خدمة
BOOL StartService(
SC_HANDLE hService, // مقبض الخدمة
DWORD dwNumServiceArgs, // عدد وسائط الخدمة
LPCTSTR *lpServiceArgVectors // مصفوفة وسائط الخدمة
);
// ControlService - إرسال أمر للخدمة
BOOL ControlService(
SC_HANDLE hService, // مقبض الخدمة
DWORD dwControl, // الأمر (STOP, PAUSE, etc.)
LPSERVICE_STATUS lpServiceStatus // حالة الخدمة
);
/* ================ دوال أداء النظام ================ */
// PDH.dll دوال مراقبة الأداء
// PdhOpenQuery - إنشاء استعلام أداء
PDH_STATUS PdhOpenQuery(
LPCTSTR szDataSource, // مصدر البيانات (NULL للجهاز المحلي)
DWORD_PTR dwUserData, // بيانات مستخدم
HQUERY *phQuery // مقبض الاستعلام
);
// PdhAddCounter - إضافة عداد لأداء
PDH_STATUS PdhAddCounter(
HQUERY hQuery, // مقبض الاستعلام
LPCTSTR szFullCounterPath, // مسار العداد
DWORD_PTR dwUserData, // بيانات مستخدم
HCOUNTER *phCounter // مقبض العداد
);
// PdhCollectQueryData - جمع بيانات الأداء
PDH_STATUS PdhCollectQueryData(
HQUERY hQuery // مقبض الاستعلام
);
/* ================ دوال متقدمة للشبكات ================ */
// GetAdaptersInfo - الحصول على معلومات محولات الشبكة
DWORD GetAdaptersInfo(
PIP_ADAPTER_INFO pAdapterInfo, // بنية معلومات المحول
PULONG pOutBufLen // حجم البنية
);
// GetTcpTable - الحصول على جدول اتصالات TCP
DWORD GetTcpTable(
PMIB_TCPTABLE pTcpTable, // بنية جدول TCP
PDWORD pdwSize, // حجم البنية
BOOL bOrder // ترتيب الجدول
);
// InternetOpen - تهيئة اتصال WinINET
HINTERNET InternetOpen(
LPCTSTR lpszAgent, // اسم التطبيق/الوكيل
DWORD dwAccessType, // نوع الاتصال (INTERNET_OPEN_TYPE_DIRECT)
LPCTSTR lpszProxyName, // اسم البروكسي (NULL للافتراضي)
LPCTSTR lpszProxyBypass, // عناوين تتجاوز البروكسي (NULL للافتراضي)
DWORD dwFlags // إشارات إضافية
);
/* ================ دوال الأمان والصلاحيات ================ */
// OpenProcessToken - فتح token لعملية
BOOL OpenProcessToken(
HANDLE ProcessHandle, // مقبض العملية
DWORD DesiredAccess, // صلاحيات الوصول
PHANDLE TokenHandle // مقبض الـ token
);
// GetTokenInformation - الحصول على معلومات token
BOOL GetTokenInformation(
HANDLE TokenHandle, // مقبض الـ token
TOKEN_INFORMATION_CLASS TokenInformationClass, // نوع المعلومات المطلوبة
LPVOID TokenInformation, // buffer لتخزين المعلومات
DWORD TokenInformationLength, // حجم الـ buffer
PDWORD ReturnLength // الحجم الفعلي للمعلومات
);
// AdjustTokenPrivileges - تعديل صلاحيات token
BOOL AdjustTokenPrivileges(
HANDLE TokenHandle, // مقبض الـ token
BOOL DisableAllPrivileges, // تعطيل جميع الصلاحيات؟
PTOKEN_PRIVILEGES NewState, // الصلاحيات الجديدة
DWORD BufferLength, // حجم buffer المعلومات السابقة
PTOKEN_PRIVILEGES PreviousState, // معلومات الصلاحيات السابقة
PDWORD ReturnLength // الحجم الفعلي للمعلومات السابقة
);
/* ================ دوال متقدمة للواجهة الرسومية ================ */
// SetWindowPos - تغيير موضع وحجم نافذة
BOOL SetWindowPos(
HWND hWnd, // مقبض النافذة
HWND hWndInsertAfter, // ترتيب النافذة (HWND_TOP, etc.)
int X, // الموضع الأفقي
int Y, // الموضع العمودي
int cx, // العرض
int cy, // الارتفاع
UINT uFlags // إشارات التعديل
);
// AnimateWindow - تأثيرات حركية للنوافذ
BOOL AnimateWindow(
HWND hWnd, // مقبض النافذة
DWORD dwTime, // مدة الحركة (مللي ثانية)
DWORD dwFlags // نوع الحركة (انزلاق، تدرج، etc.)
);
// SetLayeredWindowAttributes - تعيين خصائص النافذة الشفافة
BOOL SetLayeredWindowAttributes(
HWND hwnd, // مقبض النافذة
COLORREF crKey, // لون الشفافية
BYTE bAlpha, // درجة الشفافية (0-255)
DWORD dwFlags // إشارات التعديل
);
/* ================ دوال متقدمة للرسومات ================ */
// BitBlt - نسخ صورة بين أجهزة السياق
BOOL BitBlt(
HDC hdcDest, // جهة الهدف
int nXDest, // موضع الهدف الأفقي
int nYDest, // موضع الهدف العمودي
int nWidth, // العرض
int nHeight, // الارتفاع
HDC hdcSrc, // جهة المصدر
int nXSrc, // موضع المصدر الأفقي
int nYSrc, // موضع المصدر العمودي
DWORD dwRop // عملية النسخ (SRCCOPY, etc.)
);
// StretchBlt - نسخ وتغيير حجم الصورة
BOOL StretchBlt(
HDC hdcDest, // جهة الهدف
int nXOriginDest, // موضع الهدف الأفقي
int nYOriginDest, // موضع الهدف العمودي
int nWidthDest, // عرض الهدف
int nHeightDest, // ارتفاع الهدف
HDC hdcSrc, // جهة المصدر
int nXOriginSrc, // موضع المصدر الأفقي
int nYOriginSrc, // موضع المصدر العمودي
int nWidthSrc, // عرض المصدر
int nHeightSrc, // ارتفاع المصدر
DWORD dwRop // عملية النسخ
);
/* ================ دوال متقدمة للتعامل مع الأجهزة ================ */
// CreateFile - لفتح أجهزة (استخدام خاص)
HANDLE CreateFile(
LPCTSTR lpFileName, // اسم الجهاز (مثال: "\\\\.\\COM1")
DWORD dwDesiredAccess, // صلاحيات الوصول
DWORD dwShareMode, // مشاركة الجهاز
LPSECURITY_ATTRIBUTES lpSecurityAttributes, // أمان الجهاز
DWORD dwCreationDisposition, // إجراء عند وجود الجهاز (OPEN_EXISTING)
DWORD dwFlagsAndAttributes, // سمات الجهاز
HANDLE hTemplateFile // مقبض قالب (NULL)
);
// DeviceIoControl - إرسال أمر تحكم للجهاز
BOOL DeviceIoControl(
HANDLE hDevice, // مقبض الجهاز
DWORD dwIoControlCode, // كود الأمر
LPVOID lpInBuffer, // buffer الإدخال
DWORD nInBufferSize, // حجم buffer الإدخال
LPVOID lpOutBuffer, // buffer الإخراج
DWORD nOutBufferSize, // حجم buffer الإخراج
LPDWORD lpBytesReturned, // عدد البايتات المعادة
LPOVERLAPPED lpOverlapped // بنية للعمليات غير المتزامنة
);
/* ================ دوال متقدمة للتعامل مع DLL ================ */
// GetModuleHandle - الحصول على مقبض وحدة معينة
HMODULE GetModuleHandle(
LPCTSTR lpModuleName // اسم الوحدة (NULL للبرنامج الحالي)
);
// GetProcAddress - الحصول على عنوان دالة في DLL
FARPROC GetProcAddress(
HMODULE hModule, // مقبض الوحدة
LPCSTR lpProcName // اسم الدالة
);
// LoadLibrary - تحميل DLL
HMODULE LoadLibrary(
LPCTSTR lpFileName // اسم ملف الـ DLL
);
// FreeLibrary - تحرير DLL من الذاكرة
BOOL FreeLibrary(
HMODULE hModule // مقبض الوحدة
);
ملاحظات:
- هذا الملف يحتوي على دوال متقدمة تتطلب غالباً معرفة متخصصة
- بعض الدوال تتطلب صلاحيات إدارية عالية
- تأكد من تضمين المكتبات المناسبة لكل مجموعة دوال
- دوال PDH تحتاج إلى ربط بـ pdh.lib
- دوال PSAPI تحتاج إلى ربط بـ psapi.lib
- دوال WinINET تحتاج إلى ربط بـ wininet.lib
# موسوعة دوال ويندوز API الشاملة - الجزء الرابع
C:
/*
* موسوعة دوال ويندوز API - الجزء الرابع
* يحتوي على دوال متقدمة في مجالات متخصصة
*/
#include <windows.h>
#include <wincrypt.h>
#include <aclapi.h>
#include <shlobj.h>
#include <gdiplus.h>
#include <mmdeviceapi.h>
#include <d3d11.h>
/* ================ دوال التشفير والأمان ================ */
// CryptAcquireContext - الحصول على سياق التشفير
BOOL CryptAcquireContext(
HCRYPTPROV *phProv, // مؤشر لسياق التشفير
LPCTSTR pszContainer, // اسم الحاوية (NULL للافتراضي)
LPCTSTR pszProvider, // اسم المزود (NULL للافتراضي)
DWORD dwProvType, // نوع المزود (PROV_RSA_FULL)
DWORD dwFlags // إشارات التفعيل
);
// CryptGenKey - توليد مفتاح تشفير
BOOL CryptGenKey(
HCRYPTPROV hProv, // سياق التشفير
ALG_ID Algid, // خوارزمية التشفير
DWORD dwFlags, // إشارات المفتاح
HCRYPTKEY *phKey // مؤشر للمفتاح
);
// CryptEncrypt - تشفير البيانات
BOOL CryptEncrypt(
HCRYPTKEY hKey, // مقبض المفتاح
HCRYPTHASH hHash, // مقبض الهاش (NULL إن لم يستخدم)
BOOL Final, // هل هذه هي العملية الأخيرة؟
DWORD dwFlags, // إشارات التشفير
BYTE *pbData, // البيانات للتشفير
DWORD *pdwDataLen, // طول البيانات
DWORD dwBufLen // حجم الـ buffer
);
// CryptDecrypt - فك تشفير البيانات
BOOL CryptDecrypt(
HCRYPTKEY hKey, // مقبض المفتاح
HCRYPTHASH hHash, // مقبض الهاش (NULL إن لم يستخدم)
BOOL Final, // هل هذه هي العملية الأخيرة؟
DWORD dwFlags, // إشارات التشفير
BYTE *pbData, // البيانات لفك التشفير
DWORD *pdwDataLen // طول البيانات
);
/* ================ دوال إدارة الصلاحيات والأمان ================ */
// GetNamedSecurityInfo - الحصول على معلومات أمان لكائن
DWORD GetNamedSecurityInfo(
LPCTSTR pObjectName, // اسم الكائن
SE_OBJECT_TYPE ObjectType, // نوع الكائن (SE_FILE_OBJECT, etc.)
SECURITY_INFORMATION SecurityInfo, // نوع المعلومات المطلوبة
PSID *ppsidOwner, // مالك الكائن
PSID *ppsidGroup, // مجموعة الكائن
PACL *ppDacl, // قائمة التحكم بالوصول (DACL)
PACL *ppSacl, // قائمة التحكم بالوصول النظامية (SACL)
PSECURITY_DESCRIPTOR *ppSecurityDescriptor // واصف الأمان
);
// SetNamedSecurityInfo - تعيين معلومات أمان لكائن
DWORD SetNamedSecurityInfo(
LPTSTR pObjectName, // اسم الكائن
SE_OBJECT_TYPE ObjectType, // نوع الكائن
SECURITY_INFORMATION SecurityInfo, // نوع المعلومات المعدلة
PSID psidOwner, // المالك الجديد
PSID psidGroup, // المجموعة الجديدة
PACL pDacl, // DACL الجديدة
PACL pSacl // SACL الجديدة
);
// GetSecurityInfo - الحصول على معلومات أمان لمقبض كائن
DWORD GetSecurityInfo(
HANDLE handle, // مقبض الكائن
SE_OBJECT_TYPE ObjectType, // نوع الكائن
SECURITY_INFORMATION SecurityInfo, // نوع المعلومات المطلوبة
PSID *ppsidOwner, // مالك الكائن
PSID *ppsidGroup, // مجموعة الكائن
PACL *ppDacl, // DACL
PACL *ppSacl, // SACL
PSECURITY_DESCRIPTOR *ppSecurityDescriptor // واصف الأمان
);
/* ================ دوال متقدمة لواجهة المستخدم ================ */
// SHBrowseForFolder - عرض مربع حوار لاختيار مجلد
LPITEMIDLIST SHBrowseForFolder(
LPBROWSEINFO lpbi // بنية معلومات التصفح
);
// SHGetPathFromIDList - تحويل معرف المجلد إلى مسار
BOOL SHGetPathFromIDList(
LPCITEMIDLIST pidl, // معرف المجلد
LPTSTR pszPath // buffer لتخزين المسار
);
// Shell_NotifyIcon - إدارة أيقونات منطقة الإعلام
BOOL Shell_NotifyIcon(
DWORD dwMessage, // الرسالة (NIM_ADD, NIM_DELETE, etc.)
PNOTIFYICONDATA pnid // بيانات الأيقونة
);
// TaskDialog - إنشاء صندوق حوار متقدم
HRESULT TaskDialog(
HWND hWndParent, // نافذة الأب
HINSTANCE hInstance, // نسخة التطبيق
PCWSTR pszWindowTitle, // عنوان النافذة
PCWSTR pszMainInstruction, // التعليمات الرئيسية
PCWSTR pszContent, // المحتوى
TASKDIALOG_COMMON_BUTTON_FLAGS dwCommonButtons, // الأزرار
PCWSTR pszIcon, // الأيقونة
int *pnButton // الزر المضغوط
);
/* ================ دوال متقدمة للرسومات (GDI+) ================ */
// GdiplusStartup - تهيئة GDI+
Status GdiplusStartup(
ULONG_PTR *token, // مؤشر للـ token
const GdiplusStartupInput *input, // بيانات الإدخال
GdiplusStartupOutput *output // بيانات الإخراج (يمكن أن يكون NULL)
);
// GdipCreateBitmapFromFile - إنشاء صورة من ملف
Status GdipCreateBitmapFromFile(
GDIPCONST WCHAR *filename, // اسم ملف الصورة
GpBitmap **bitmap // مؤشر للصورة الناتجة
);
// GdipDrawImage - رسم صورة
Status GdipDrawImage(
GpGraphics *graphics, // سياق الرسومات
GpImage *image, // الصورة المراد رسمها
REAL x, // الموضع الأفقي
REAL y // الموضع العمودي
);
// GdipSaveImageToFile - حفظ الصورة إلى ملف
Status GdipSaveImageToFile(
GpImage *image, // الصورة
GDIPCONST WCHAR *filename, // اسم الملف
GDIPCONST CLSID *clsidEncoder, // معرّف المرمز
const EncoderParameters *encoderParams // معاملات التشفير
);
/* ================ دوال الصوت والوسائط ================ */
// waveOutOpen - فتح جهاز صوت للإخراج
MMRESULT waveOutOpen(
LPHWAVEOUT phwo, // مقبض جهاز الصوت
UINT uDeviceID, // معرف الجهاز (WAVE_MAPPER للافتراضي)
LPCWAVEFORMATEX pwfx, // تنسيق الموجة
DWORD_PTR dwCallback, // إجراء الاستدعاء
DWORD_PTR dwCallbackInstance, // نسخة الاستدعاء
DWORD fdwOpen // إشارات الفتح
);
// waveOutWrite - إرسال بيانات صوت للجهاز
MMRESULT waveOutWrite(
HWAVEOUT hwo, // مقبض جهاز الصوت
LPWAVEHDR pwh, // رأس بيانات الموجة
UINT cbwh // حجم الرأس
);
// CoCreateInstance - إنشاء كائن COM
HRESULT CoCreateInstance(
REFCLSID rclsid, // CLSID للكائن
LPUNKNOWN pUnkOuter, // كائن تجميع (NULL عادة)
DWORD dwClsContext, // سياق التنفيذ
REFIID riid, // IID للواجهة
LPVOID *ppv // مؤشر للواجهة
);
/* ================ دوال Direct3D 11 ================ */
// D3D11CreateDevice - إنشاء جهاز Direct3D 11
HRESULT D3D11CreateDevice(
IDXGIAdapter *pAdapter, // محول العرض (NULL للافتراضي)
D3D_DRIVER_TYPE DriverType, // نوع السائق (D3D_DRIVER_TYPE_HARDWARE)
HMODULE Software, // مكتبة البرامج (NULL عادة)
UINT Flags, // إشارات الإنشاء
const D3D_FEATURE_LEVEL *pFeatureLevels, // مستويات الميزات
UINT FeatureLevels, // عدد مستويات الميزات
UINT SDKVersion, // إصدار SDK
ID3D11Device **ppDevice, // جهاز Direct3D
D3D_FEATURE_LEVEL *pFeatureLevel, // مستوى الميزة المختارة
ID3D11DeviceContext **ppImmediateContext // سياق الجهاز
);
// CreateSwapChain - إنشاء سلسلة تبديل
HRESULT CreateSwapChain(
IDXGIFactory *pFactory, // مصنع DXGI
IUnknown *pDevice, // جهاز Direct3D
DXGI_SWAP_CHAIN_DESC *pDesc, // وصف سلسلة التبديل
IDXGISwapChain **ppSwapChain // سلسلة التبديل الناتجة
);
/* ================ دوال متقدمة للتعامل مع النظام ================ */
// Wow64DisableWow64FsRedirection - تعطيل تحويل نظام الملفات لـ WOW64
BOOL Wow64DisableWow64FsRedirection(
PVOID *OldValue // القيمة القديمة
);
// Wow64RevertWow64FsRedirection - استعادة تحويل نظام الملفات لـ WOW64
BOOL Wow64RevertWow64FsRedirection(
PVOID OldValue // القيمة القديمة
);
// IsWow64Process - التحقق إذا كانت العملية تعمل في وضع WOW64
BOOL IsWow64Process(
HANDLE hProcess, // مقبض العملية
PBOOL Wow64Process // نتيجة التحقق
);
// GetNativeSystemInfo - الحصول على معلومات النظام الأصلية
void GetNativeSystemInfo(
LPSYSTEM_INFO lpSystemInfo // بنية معلومات النظام
);
/* ================ دوال متقدمة للتعامل مع السجل ================ */
// RegEnumKeyEx - تعداد المفاتيح الفرعية
LONG RegEnumKeyEx(
HKEY hKey, // مقبض المفتاح
DWORD dwIndex, // فهرس المفتاح الفرعي
LPTSTR lpName, // اسم المفتاح الفرعي
LPDWORD lpcName, // حجم buffer الاسم
LPDWORD lpReserved, // محجوز (NULL)
LPTSTR lpClass, // صنف المفتاح (يمكن أن يكون NULL)
LPDWORD lpcClass, // حجم buffer الصنف
PFILETIME lpftLastWriteTime // وقت آخر تعديل
);
// RegEnumValue - تعداد القيم في مفتاح
LONG RegEnumValue(
HKEY hKey, // مقبض المفتاح
DWORD dwIndex, // فهرس القيمة
LPTSTR lpValueName, // اسم القيمة
LPDWORD lpcValueName, // حجم buffer الاسم
LPDWORD lpReserved, // محجوز (NULL)
LPDWORD lpType, // نوع القيمة
LPBYTE lpData, // بيانات القيمة
LPDWORD lpcData // حجم buffer البيانات
);
/* ================ دوال متقدمة للتعامل مع الذاكرة ================ */
// ReadProcessMemory - قراءة ذاكرة عملية أخرى
BOOL ReadProcessMemory(
HANDLE hProcess, // مقبض العملية
LPCVOID lpBaseAddress, // عنوان الذاكرة
LPVOID lpBuffer, // buffer لتخزين البيانات
SIZE_T nSize, // حجم البيانات
SIZE_T *lpNumberOfBytesRead // عدد البايتات المقروءة
);
// WriteProcessMemory - كتابة إلى ذاكرة عملية أخرى
BOOL WriteProcessMemory(
HANDLE hProcess, // مقبض العملية
LPVOID lpBaseAddress, // عنوان الذاكرة
LPCVOID lpBuffer, // buffer البيانات
SIZE_T nSize, // حجم البيانات
SIZE_T *lpNumberOfBytesWritten // عدد البايتات المكتوبة
);
// VirtualQueryEx - استعلام معلومات منطقة ذاكرة في عملية أخرى
SIZE_T VirtualQueryEx(
HANDLE hProcess, // مقبض العملية
LPCVOID lpAddress, // عنوان الذاكرة
PMEMORY_BASIC_INFORMATION lpBuffer, // بنية المعلومات
SIZE_T dwLength // حجم البنية
);
/* ================ دوال متقدمة للتعامل مع الشبكات ================ */
// GetIpForwardTable - الحصول على جدول توجيه IP
DWORD GetIpForwardTable(
PMIB_IPFORWARDTABLE pIpForwardTable, // بنية جدول التوجيه
PULONG pdwSize, // حجم البنية
BOOL bOrder // هل يتم ترتيب الجدول؟
);
// GetIfTable - الحصول على جدول واجهات الشبكة
DWORD GetIfTable(
PMIB_IFTABLE pIfTable, // بنية جدول الواجهات
PULONG pdwSize, // حجم البنية
BOOL bOrder // هل يتم ترتيب الجدول؟
);
// IcmpSendEcho - إرسال طلب ICMP echo (ping)
DWORD IcmpSendEcho(
HANDLE IcmpHandle, // مقبض ICMP
IPAddr DestinationAddress, // عنوان الوجهة
LPVOID RequestData, // بيانات الطلب
WORD RequestSize, // حجم بيانات الطلب
PIP_OPTION_INFORMATION RequestOptions, // خيارات الطلب
LPVOID ReplyBuffer, // buffer الرد
DWORD ReplySize, // حجم buffer الرد
DWORD Timeout // وقت الانتظار (مللي ثانية)
);
ملاحظات:
- هذا الجزء يحتوي على دوال متخصصة في مجالات محددة
- بعض الدوال تتطلب تثبيت إضافات مثل DirectX SDK أو Windows SDK
- دوال التشفير تتطلب ربط بـ crypt32.lib
- دوال GDI+ تتطلب ربط بـ gdiplus.lib
- دوال Direct3D تتطلب ربط بـ d3d11.lib و dxgi.lib
- دوال الوسائط المتعددة تتطلب ربط بـ winmm.lib
# موسوعة دوال ويندوز API الشاملة - الجزء الخامس والأخير
C:
/*
* موسوعة دوال ويندوز API - الجزء الخامس والأخير
* دوال متقدمة ونادرة الاستخدام في مجالات متخصصة
*/
#include <windows.h>
#include <winioctl.h>
#include <wtsapi32.h>
#include <sddl.h>
#include <dbghelp.h>
#include <tlhelp32.h>
#include <wincodec.h>
#include <dwrite.h>
/* ================ دوال إدارة الجلسات والنهايات الطرفية ================ */
// WTSEnumerateSessions - تعداد جلسات WTS
BOOL WTSEnumerateSessions(
HANDLE hServer, // مقبض الخادم (WTS_CURRENT_SERVER_HANDLE)
DWORD Reserved, // محجوز (0)
DWORD Version, // الإصدار (1)
PWTS_SESSION_INFO *ppSessionInfo, // معلومات الجلسات
DWORD *pCount // عدد الجلسات
);
// WTSQuerySessionInformation - استعلام معلومات جلسة
BOOL WTSQuerySessionInformation(
HANDLE hServer, // مقبض الخادم
DWORD SessionId, // معرف الجلسة
WTS_INFO_CLASS WTSInfoClass, // نوع المعلومات المطلوبة
LPTSTR *ppBuffer, // buffer المعلومات
DWORD *pBytesReturned // حجم المعلومات
);
// WTSSendMessage - إرسال رسالة إلى جلسة
BOOL WTSSendMessage(
HANDLE hServer, // مقبض الخادم
DWORD SessionId, // معرف الجلسة
LPTSTR pTitle, // عنوان الرسالة
DWORD TitleLength, // طول العنوان
LPTSTR pMessage, // نص الرسالة
DWORD MessageLength, // طول النص
DWORD Style, // نمط الرسالة (MB_OK, etc.)
DWORD Timeout, // وقت الانتظار (ثواني)
DWORD *pResponse, // رد المستخدم
BOOL bWait // انتظار الرد؟
);
/* ================ دوال التحكم في الأجهزة والدرايفرات ================ */
// SetupDiGetClassDevs - الحصول على قائمة بالأجهزة
HDEVINFO SetupDiGetClassDevs(
const GUID *ClassGuid, // معرف الصنف (NULL لجميع الأجهزة)
PCTSTR Enumerator, // المعدِّد (NULL للافتراضي)
HWND hwndParent, // نافذة الأب (NULL عادة)
DWORD Flags // إشارات التصفية
);
// SetupDiEnumDeviceInfo - تعداد معلومات الأجهزة
BOOL SetupDiEnumDeviceInfo(
HDEVINFO DeviceInfoSet, // مجموعة معلومات الجهاز
DWORD MemberIndex, // فهرس العضو
PSP_DEVINFO_DATA DeviceInfoData // بيانات الجهاز
);
// SetupDiGetDeviceRegistryProperty - قراءة خاصية جهاز من السجل
BOOL SetupDiGetDeviceRegistryProperty(
HDEVINFO DeviceInfoSet, // مجموعة معلومات الجهاز
PSP_DEVINFO_DATA DeviceInfoData, // بيانات الجهاز
DWORD Property, // الخاصية المطلوبة (SPDRP_*)
PDWORD PropertyRegDataType, // نوع البيانات
PBYTE PropertyBuffer, // buffer القيمة
DWORD PropertyBufferSize, // حجم الـ buffer
PDWORD RequiredSize // الحجم المطلوب
);
/* ================ دوال تحليل الذاكرة والتصحيح ================ */
// MiniDumpWriteDump - إنشاء ملف dump للذاكرة
BOOL MiniDumpWriteDump(
HANDLE hProcess, // مقبض العملية
DWORD ProcessId, // معرف العملية
HANDLE hFile, // مقبض الملف
MINIDUMP_TYPE DumpType, // نوع الـ dump
PMINIDUMP_EXCEPTION_INFORMATION ExceptionParam, // معلومات الاستثناء
PMINIDUMP_USER_STREAM_INFORMATION UserStreamParam, // تدفقات المستخدم
PMINIDUMP_CALLBACK_INFORMATION CallbackParam // إجراء رد النداء
);
// SymInitialize - تهيئة نظام الرموز للتصحيح
BOOL SymInitialize(
HANDLE hProcess, // مقبض العملية
PCSTR UserSearchPath, // مسار البحث (NULL للافتراضي)
BOOL fInvadeProcess // تحميل رموز العملية؟
);
// SymFromAddr - الحصول على معلومات الرمز من عنوان
BOOL SymFromAddr(
HANDLE hProcess, // مقبض العملية
DWORD64 Address, // العنوان
PDWORD64 Displacement, // الإزاحة
PSYMBOL_INFO Symbol // معلومات الرمز
);
/* ================ دوال متقدمة لإدارة العمليات ================ */
// CreateToolhelp32Snapshot - إنشاء لقطة للعمليات/الثريدات/الوحدات
HANDLE CreateToolhelp32Snapshot(
DWORD dwFlags, // نوع اللقطة (TH32CS_*)
DWORD th32ProcessID // معرف العملية (0 للجميع)
);
// Process32First - الحصول على أول عملية في اللقطة
BOOL Process32First(
HANDLE hSnapshot, // مقبض اللقطة
LPPROCESSENTRY32 lppe // بنية معلومات العملية
);
// Process32Next - الحصول على العملية التالية في اللقطة
BOOL Process32Next(
HANDLE hSnapshot, // مقبض اللقطة
LPPROCESSENTRY32 lppe // بنية معلومات العملية
);
// Thread32First - الحصول على أول ثريد في اللقطة
BOOL Thread32First(
HANDLE hSnapshot, // مقبض اللقطة
LPTHREADENTRY32 lpte // بنية معلومات الثريد
);
/* ================ دوال تحويل السلاسل النصية ================ */
// ConvertSidToStringSid - تحويل SID إلى سلسلة نصية
BOOL ConvertSidToStringSid(
PSID Sid, // SID المراد تحويله
LPTSTR *StringSid // السلسلة النصية الناتجة
);
// ConvertStringSidToSid - تحويل سلسلة نصية إلى SID
BOOL ConvertStringSidToSid(
LPCTSTR StringSid, // السلسلة النصية
PSID *Sid // SID الناتج
);
// ConvertSecurityDescriptorToStringSecurityDescriptor - تحويل واصف الأمان إلى نص
BOOL ConvertSecurityDescriptorToStringSecurityDescriptor(
PSECURITY_DESCRIPTOR SecurityDescriptor, // واصف الأمان
DWORD RequestedStringSDRevision, // إصدار السلسلة (SDDL_REVISION_1)
SECURITY_INFORMATION SecurityInformation, // نوع المعلومات
LPTSTR *StringSecurityDescriptor, // السلسلة النصية
PULONG StringSecurityDescriptorLen // طول السلسلة
);
/* ================ دوال معالجة الصور المتقدمة (WIC) ================ */
// WICCreateImagingFactory_Proxy - إنشاء مصنع WIC
HRESULT WICCreateImagingFactory(
UINT SDKVersion, // إصدار SDK
IWICImagingFactory **ppIImagingFactory // مصنع WIC
);
// IWICImagingFactory::CreateDecoderFromFilename - إنشاء مفكك تشفير من ملف
HRESULT CreateDecoderFromFilename(
LPCWSTR wzFilename, // اسم الملف
const GUID *pguidVendor, // البائع (NULL للافتراضي)
DWORD dwDesiredAccess, // صلاحيات الوصول (GENERIC_READ)
WICDecodeOptions metadataOptions, // خيارات البيانات الوصفية
IWICBitmapDecoder **ppIDecoder // المفكك الناتج
);
// IWICBitmapFrameDecode::GetThumbnail - الحصول على صورة مصغرة
HRESULT GetThumbnail(
IWICBitmapSource **ppIThumbnail // الصورة المصغرة الناتجة
);
/* ================ دوال النصوص والخطوط (DirectWrite) ================ */
// DWriteCreateFactory - إنشاء مصنع DirectWrite
HRESULT DWriteCreateFactory(
DWRITE_FACTORY_TYPE factoryType, // نوع المصنع
REFIID riid, // معرف الواجهة
IUnknown **factory // المصنع الناتج
);
// IDWriteFactory::CreateTextFormat - إنشاء تنسيق نصي
HRESULT CreateTextFormat(
const WCHAR *fontFamilyName, // اسم عائلة الخط
IDWriteFontCollection *fontCollection, // مجموعة الخطوط (NULL للافتراضي)
DWRITE_FONT_WEIGHT fontWeight, // سماكة الخط
DWRITE_FONT_STYLE fontStyle, // نمط الخط
DWRITE_FONT_STRETCH fontStretch, // تمدد الخط
FLOAT fontSize, // حجم الخط
const WCHAR *localeName, // اللغة
IDWriteTextFormat **textFormat // التنسيق النصي الناتج
);
// IDWriteTextLayout::SetTypography - تعيين الطباعة للنص
HRESULT SetTypography(
IDWriteTypography *typography, // إعدادات الطباعة
DWRITE_TEXT_RANGE textRange // نطاق النص
);
/* ================ دوال متقدمة للتعامل مع النظام ================ */
// GetLogicalProcessorInformation - الحصول على معلومات المعالج المنطقي
BOOL GetLogicalProcessorInformation(
PSYSTEM_LOGICAL_PROCESSOR_INFORMATION Buffer, // buffer المعلومات
PDWORD ReturnedLength // طول المعلومات
);
// GetSystemFirmwareTable - قراءة جدول firmware النظام
UINT GetSystemFirmwareTable(
DWORD FirmwareTableProviderSignature, // توقيع المزود ('ACPI', etc.)
DWORD FirmwareTableID, // معرف الجدول
PVOID pFirmwareTableBuffer, // buffer البيانات
DWORD BufferSize // حجم الـ buffer
);
// GetProductInfo - الحصول على معلومات إصدار Windows
BOOL GetProductInfo(
DWORD dwOSMajorVersion, // الإصدار الرئيسي
DWORD dwOSMinorVersion, // الإصدار الثانوي
DWORD dwSpMajorVersion, // إصدار حزمة الخدمة الرئيسي
DWORD dwSpMinorVersion, // إصدار حزمة الخدمة الثانوي
PDWORD pdwReturnedProductType // نوع المنتج
);
/* ================ دوال متقدمة للتعامل مع الطاقة ================ */
// SetSuspendState - تعليق أو إسبات النظام
BOOL SetSuspendState(
BOOL Hibernate, // TRUE للإسبات، FALSE للتوقف
BOOL ForceCritical, // إجبار على الوضع الحرج
BOOL DisableWakeEvent // تعطيل أحداث التنبيه
);
// GetSystemPowerStatus - الحصول على حالة الطاقة
BOOL GetSystemPowerStatus(
LPSYSTEM_POWER_STATUS lpSystemPowerStatus // بنية حالة الطاقة
);
// PowerCreateRequest - إنشاء طلب طاقة
HANDLE PowerCreateRequest(
PREASON_CONTEXT Context // بنية السبب
);
/* ================ دوال متقدمة للتعامل مع القرص ================ */
// DeviceIoControl مع أكواد التحكم الخاصة بالأقراص (IOCTL_DISK_*)
// IOCTL_DISK_GET_DRIVE_GEOMETRY - الحصول على هندسة القرص
#define IOCTL_DISK_GET_DRIVE_GEOMETRY CTL_CODE(IOCTL_DISK_BASE, 0x0000, METHOD_BUFFERED, FILE_ANY_ACCESS)
// IOCTL_DISK_GET_PARTITION_INFO - الحصول على معلومات القسم
#define IOCTL_DISK_GET_PARTITION_INFO CTL_CODE(IOCTL_DISK_BASE, 0x0001, METHOD_BUFFERED, FILE_READ_ACCESS)
// IOCTL_DISK_SET_DISK_ATTRIBUTES - تعيين سمات القرص
#define IOCTL_DISK_SET_DISK_ATTRIBUTES CTL_CODE(IOCTL_DISK_BASE, 0x003c, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
/* ================ دوال متقدمة للتعامل مع الشبكات ================ */
// GetAdaptersAddresses - الحصول على عناوين محولات الشبكة
ULONG GetAdaptersAddresses(
ULONG Family, // عائلة العناوين (AF_UNSPEC, AF_INET, AF_INET6)
DWORD Flags, // إشارات التصفية
PVOID Reserved, // محجوز (NULL)
PIP_ADAPTER_ADDRESSES pAdapterAddresses, // بنية العناوين
PULONG pOutBufLen // حجم البنية
);
// GetTcpTable2 - الحصول على جدول اتصالات TCP مع معلومات إضافية
DWORD GetTcpTable2(
PMIB_TCPTABLE2 pTcpTable, // بنية جدول TCP
PDWORD pdwSize, // حجم البنية
BOOL bOrder // ترتيب الجدول
);
// GetUdpTable - الحصول على جدول اتصالات UDP
DWORD GetUdpTable(
PMIB_UDPTABLE pUdpTable, // بنية جدول UDP
PDWORD pdwSize, // حجم البنية
BOOL bOrder // ترتيب الجدول
);
/* ================ دوال متقدمة للتعامل مع الصوت ================ */
// IMMDeviceEnumerator - تعداد أجهزة الصوت
HRESULT IMMDeviceEnumerator_EnumAudioEndpoints(
IMMDeviceEnumerator *pEnumerator, // المعدِّد
EDataFlow dataFlow, // اتجاه البيانات (eRender, eCapture)
DWORD dwStateMask, // قناع الحالة (DEVICE_STATE_ACTIVE)
IMMDeviceCollection **ppCollection // مجموعة الأجهزة
);
// IAudioClient::Initialize - تهيئة عميل الصوت
HRESULT IAudioClient_Initialize(
IAudioClient *pAudioClient, // عميل الصوت
AUDCLNT_SHAREMODE ShareMode, // نمط المشاركة (SHARED, EXCLUSIVE)
DWORD StreamFlags, // إشارات الدفق
REFERENCE_TIME hnsBufferDuration, // مدة الـ buffer
REFERENCE_TIME hnsPeriodicity, // الدورية
const WAVEFORMATEX *pFormat, // تنسيق الموجة
LPCGUID AudioSessionGuid // معرف جلسة الصوت
);
ملاحظات:
- هذا الجزء يحتوي على دوال متقدمة ونادرة الاستخدام
- بعض الدوال تتطلب صلاحيات نظام عالية
- دوال WTS تتطلب ربط بـ wtsapi32.lib
- دوال SetupAPI تتطلب ربط بـ setupapi.lib
- دوال DbgHelp تتطلب ربط بـ dbghelp.lib
- دوال WIC تتطلب ربط بـ windowscodecs.lib
- دوال DirectWrite تتطلب ربط بـ dwrite.lib
هذه هي نهاية سلسلة موسوعة دوال ويندوز API. لقد غطينا تقريباً جميع الدوال الأساسية والمتقدمة في نظام ويندوز. يمكنك الآن الرجوع إلى أي جزء حسب احتياجاتك البرمجية.