рдЙрдирдХреЗ рдкрддреЗ рдкрд░ рдХреЙрд▓рд┐рдВрдЧ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдЖрд╡рд░рдг

рдЖрдкрдХрд╛ рджрд┐рди рд╢реБрдн рд╣реЛ!

рдПрдХ рд╕реМрджрд╛ рд╣реБрдЖ - рдореИрдВрдиреЗ FTDI рд╕реЗ USB рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмрдирд╛рдпрд╛ред рдореБрдЭреЗ DLL-рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд╕рд╛рде рдмрд╣реБрдд рд╣реА рд╕реБрдВрджрд░ рдерд╛ред Microsoft Visual Studio 2008 ( UPD : рддрдм рдореБрдЭреЗ рдЗрд╕ рд╡рд┐рд╖рдп рдХрд╛ рдкрддрд╛ рдЪрд▓рд╛) рдХреА рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд▓рд┐рдВрдХрд┐рдВрдЧ рдХреНрд╖рдорддрд╛рдУрдВ рд╕реЗ рдирд┐рд░рд╛рд╢ рд╣реЛрдХрд░, рдореИрдВрдиреЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред рд░рд╛рд╕реНрддреЗ рдореЗрдВ, рдореИрдВ рдХрдИ рджрд░реНрдЬрди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдердХ рдЧрдпрд╛ рдерд╛ред рдФрд░ рдлрд┐рд░ рдореИрдВрдиреЗ Google, C ++ рдФрд░ рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдХреА рдУрд░ рд░реБрдЦ рдХрд┐рдпрд╛ред рдФрд░ рдЕрдЧрд░ C ++ рд╢реИрд▓реА рдореЗрдВ DLL рдХрд╛ рдХрдиреЗрдХреНрд╢рди рдХреЛрдИ рдкреНрд░рд╢реНрди рдирд╣реАрдВ рдЙрдард╛рддрд╛ рд╣реИ, рддреЛ "рддреНрд░реБрдЯрд┐ = FT_Open (Num, & _Handler)" рдХреА рд╢реИрд▓реА рдореЗрдВ рдЬреБрдбрд╝реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдХреЙрд▓, рдЬрд╣рд╛рдВ FT_Open рдСрдмреНрдЬреЗрдХреНрдЯ рддреБрд░рдВрдд рд╡рд┐рдлрд▓ рд╣реЛ рдЧрдпрд╛ред рдкрд░рд┐рдгрд╛рдо (рдРрд╕реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдВ) рдХрдЯ рдХреЗ рддрд╣рдд рд╣реИред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ - рдореИрдВрдиреЗ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдкреЙрдЗрдВрдЯрд░ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рд▓рдкреЗрдЯрд╛ред



рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдмрдпрд╛рди



рддреБрд░рдВрдд рдЖрд░рдХреНрд╖рдг рдХрд░реЗрдВ - рдореИрдВ рд╡рд┐рдВрдбреЛрдЬ рдПрдХреНрд╕рдкреА рдкреНрд░реЛ, рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реВрдВред рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдкрддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдлрд╝рдВрдХреНрд╢рди рдкреЙрдЗрдВрдЯрд░реНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп, рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИред



рдЦреИрд░, рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рд╡рд┐рд╖рдп рдореЗрдВ рдирд╣реАрдВ рд╣реИрдВ, рдпрд╣рд╛рдВ WinAPI рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ FTD2XX.dll рд╕реЗ рдмрд╣реБрдд FT_Open рдлрд╝рдВрдХреНрд╢рди рдЦреЛрдЬрдиреЗ рдХрд╛ рдХреНрд░рдо рд╣реИ:



#include "FTD2XX.h" //   FTDI typedef FT_STATUS (*pFT_Open) (int, FT_HANDLE *); //   " FT_OPEN" // ... HMODULE hMod = LoadLibrary ("FTD2XX.dll"); //   - . .   pFT_Open pOpen = GetProcAddress (hMod, "FT_Open"); //    -  . .   // ... FT_STATUS st = pOpen (0, &hDev); //   // ... FreeLibrary (hMod); //  
      
      







рдЬрдм рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛, рд▓реЗрдХрд┐рди рдЗрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдореИрдВрдиреЗ 51 рдлрд╝рдВрдХреНрд╢рди рдЧрд┐рдирд╛рдПред рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:



 typedef FT_STATUS (*pFT_Open) (int, FT_HANDLE *); //   "  " pFT_Open pOpen; //  "  " pFT_Open pOpen = GetProcAddress (hMod, "FT_Open"); //    "FT_Open"
      
      







рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдХрд╖реНрдЯрдкреНрд░рдж рд╣реИ рдЯрд╛рдЗрдкрдкреИрдб рдХреА рдПрдХ рдЧреБрдЪреНрдЫрд╛ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣рд╛рдБ, рдореБрдЭреЗ рдкрддрд╛ рд╣реИ, рдЖрдк рдмрд┐рдирд╛ рдЯрд╛рдЗрдк рдХрд┐рдП, рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдШреГрдгрд┐рдд рд▓рдЧреЗрдЧрд╛!



рдЗрд╕рд▓рд┐рдП, рдореИрдВ рдХрд┐рд╕реА рддрд░рд╣ рдЕрдкрдиреЗ рдЬреАрд╡рди рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ:



 Funct2<FT_STATUS, int, FT_HANDLE *> Open; //   " 2 " Open = GetProcAddress (hMod, "FT_Open"); //    "FT_Open" // ... FT_STATUS st = Open (0, &hDev); //  
      
      







рдирд┐рд░реНрдгрдп





рдкреНрд░рдпреЛрдЧреЛрдВ рдФрд░ рдорд╕реНрддрд┐рд╖реНрдХ рдХреЗ рдЙрдмрд▓рдиреЗ рдХреЗ рджреМрд░рд╛рди, рдореБрдЭреЗ рдРрд╕рд╛ рдХреНрд▓рд╛рд╕ рдЯреЗрдореНрдкрд▓реЗрдЯ рдорд┐рд▓рд╛:



 template <typename Ret, typename Arg1, typename Arg2, typename Except = FunctPtrExceptionType, Except Value = FunctPtrExceptionDefValue> class Funct2 { public: typedef Ret (*tfPtr) (Arg1, Arg2); tfPtr fPtr; public: Funct2 (tfPtr Ptr = 0): fPtr (Ptr) {} Funct2 &operator= (void *Ptr) { fPtr = reinterpret_cast<tfPtr> (Ptr); return *this; } Ret operator () (Arg1 A1, Arg2 A2) throw (Except) { if (!fPtr) throw Except (Value); return fPtr (A1, A2); } }; // class Funct2
      
      







рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рдкреНрд░рд╛рдердорд┐рдХ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдореИрдВ рд╕рдордЭрд╛ рдирд╣реАрдВ рд╕рдХрддрд╛ред



рдПрдХ рдХрд╛рд░реНрдпрд╛рддреНрдордХ 2 рдЯреЗрдореНрдкрд▓реЗрдЯ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рдкрд╣рд▓реЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди рджреНрд╡рд╛рд░рд╛ рд▓реМрдЯрд╛рдП рдЧрдП рд░рд┐рдЯ рдкреНрд░рдХрд╛рд░ рдХреЛ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рджреЛ рдкреИрд░рд╛рдореАрдЯрд░ - Arg1 рдФрд░ Arg2 - рдлрд╝рдВрдХреНрд╢рди рддрд░реНрдХ рдХреЗ рдкреНрд░рдХрд╛рд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВред рддреНрд░реБрдЯрд┐ рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдХреЛ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЕрдкрд╡рд╛рдж рдХреЗ рдкреНрд░рдХрд╛рд░ рдФрд░ рдЙрд╕рдХреЗ рдореВрд▓реНрдп рдорд╛рди рдХреЛ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкреИрд░рд╛рдореАрдЯрд░ #define FunctPtrExceptionType рдФрд░ #define FunctPtrExceptionDefValue рдкрд░ рд╕реЗрдЯ рд╣реИрдВ)ред



рдХреНрд▓рд╛рд╕ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рдореБрдЦреНрдп рднрд╛рдЧ рдореЗрдВ, tfPtr "рджреЛ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдкреЙрдЗрдВрдЯрд░" рдФрд░ рдкреЙрдЗрдВрдЯрд░ fPtr рд╕реНрд╡рдпрдВ рд╕реЗрдЯ рд╣реИрдВред



рдпрджрд┐ рдХреЛрдИ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣реИ, рддреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдирд┐рд░реНрдорд╛рдгрдХрд░реНрддрд╛ рдПрдХ рдЕрд╢рдХреНрдд рд╕реВрдЪрдХ рдпрд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрддрд╛ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкрддрд╛ рдЕрддрд┐рднрд╛рд░рд┐рдд рдСрдкрд░реЗрдЯрд░ = (рд╢реВрдиреНрдп * Ptr) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдХреНрдпреЛрдВ рд╢реВрдиреНрдп * - рдХреНрдпреЛрдВрдХрд┐ GetProcAddress () рд╢реВрдиреНрдп * рдареАрдХ рджреЗрддрд╛ рд╣реИред рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдСрдкрд░реЗрдЯрд░ = (tfPtr Ptr) рдХреЗ рд╕рд╛рде рдЗрд╕реЗ рдУрд╡рд░рд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ - рд╕рдВрдХрд▓рдХ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдордЭрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд┐рд╕ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред



рдареАрдХ рд╣реИ, рдЕрдВрдд рдореЗрдВ, рдУрд╡рд░рд▓реЛрдбрд┐рдВрдЧ рдСрдкрд░реЗрдЯрд░ (), рд╣рдо рдПрдХ рдлрд╝рдирдХрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд░реНрдЧ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рд╡рд░реНрдЧ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП - рдФрд░ рдЖрдо рддреМрд░ рдкрд░ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ред



рдХреНрдпрд╛ рдпрд╣ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ? рдмрд╣реБрдд! рджреЗрдЦреЗрдВ:



рдкрд░рд┐рдгрд╛рдо





 #include < Windows.h > //  GetProcAdress #include < stdio.h > //  printf // ** // **     // ** #define FunctPtrExceptionType int //       #define FunctPtrExceptionDefValue 0 //     // ** // **      // ** template < typename Ret = void, typename Except = FunctPtrExceptionType, Except Value = FunctPtrExceptionDefValue > class Funct0 { public: typedef Ret (*tfPtr) (void); tfPtr fPtr; public: Funct0 (tfPtr Ptr = 0): fPtr (Ptr) {} Funct0 &operator= (tfPtr Ptr) { fPtr = Ptr; return this; } Ret operator () (void) throw (Except) { if (!fPtr) throw Except (Value); return fPtr (); } }; // ** // **     1  // ** template < typename Ret, typename Arg1, typename Except = FunctPtrExceptionType, Except Value = FunctPtrExceptionDefValue > class Funct1 { public: typedef Ret (*tfPtr) (Arg1); tfPtr fPtr; public: Funct1 (tfPtr Ptr = 0): fPtr (Ptr) {} Funct1 &operator= (void *Ptr) { fPtr = reinterpret_cast<tfPtr> (Ptr); return *this; } Ret operator () (Arg1 A1) throw (Except) { if (!fPtr) throw Except (Value); return fPtr (A1); } }; // ** // **     2  // ** template < typename Ret, typename Arg1, typename Arg2, typename Except = FunctPtrExceptionType, Except Value = FunctPtrExceptionDefValue > class Funct2 { public: typedef Ret (*tfPtr) (Arg1, Arg2); tfPtr fPtr; public: Funct2 (tfPtr Ptr = 0): fPtr (Ptr) {} Funct2 &operator= (void *Ptr) { fPtr = reinterpret_cast<tfPtr> (Ptr); return *this; } Ret operator () (Arg1 A1, Arg2 A2) throw (Except) { if (!fPtr) throw Except (Value); return fPtr (A1, A2); } }; // ** // **    // ** int add (const int A, const int *B) { int C; C = A + *B; printf (" int add (const int %d, const int %d) = %d\n", A, *B, C); return C; } void prn (void) { printf (" void prn (void)\n"); } // ** // **   // ** void main (void) { int i, i2; double d; long l; Funct0<> prner (prn); Funct1< double, long *, int, 2 > longer; Funct2< int, const int, const int * > adder; adder = add; longer = GetProcAddress (0, "Longer"); try { prner (); i2 = 6; i = adder (5, &i2); d = longer (&l); } catch (int val) { switch (val) { case 2: printf (" ***     !\n"); break; default: printf (" ***   !\n"); break; } }
      
      







рдкрд░рд┐рдгрд╛рдо





рд░рд┐рд▓реАрдЬрд╝ рдореЛрдб рдореЗрдВ рдЕрд╕рдВрддреБрд╖реНрдЯ рдиреЗ рджрд┐рдЦрд╛рдпрд╛ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╕рдордп рдУрд╡рд░рд╣реЗрдб 0 рд╡реЗрдВ рдорд╛рди рдХреА рдЬрд╛рдБрдЪ рдХрд░ рд░рд╣рд╛ рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП, рдПрдХ рдФрд░ рдХреЙрд▓ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдзреБрдирд┐рдХ рдкреАрд╕реА рдХреЗ рд▓рд┐рдП рдпрд╣ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ред



рдкреВрд░реНрдгрддрд╛ рдХреЗ рд▓рд┐рдП, рдЖрдк рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдЕрдкрд╡рд╛рдж рдХреЗ рд╡рд┐рд╖рдп рдХреЛ рдкрд░рд┐рд╖реНрдХреГрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рдкрд╛рда рд╕реНрдЯреНрд░рд┐рдВрдЧ, рдЕрдкрдиреА рд╕реНрд╡рдпрдВ рдХреА рдХрд╕реНрдЯрдо рддреНрд░реБрдЯрд┐ рдХрдХреНрд╖рд╛рдПрдВ рдЖрджрд┐ рдХреЛ рдкрд╛рд╕ рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдЖрд▓рд╕реНрдп, рдореИрдВ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреИрдЯрд░реНрди рдХреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ред



рдареАрдХ рд╣реИ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЖрдкрдХреЛ 3x, 4x, рдЖрджрд┐ рддрд░реНрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдлрд╝рдВрдХреНрд╢рдирд▓ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╡реЗрд░рд┐рдПрдВрдЯ рдХреЛ рд░рд┐рд╡реЗрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдХрд┐рд╕реА рддрд░рд╣ рдХреЗ рдореИрдХреНрд░реЛ рдХреЗ рд╕рд╛рде рдЖрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдЬреЛ рдЙрдиреНрд╣реЗрдВ рдЙрддреНрдкрдиреНрди рдХрд░реЗрдЧрд╛ ...



рдареАрдХ рд╣реИ, рдФрд░ рдЗрд╕рд╕реЗ рднреА рдЕрдзрд┐рдХ рд╕рдордЭрдиреЗ рд╡рд╛рд▓реА рдмрд╛рдд, рдЖрдкрдХреЛ рдпрд╣ рд╕рдм рдПрдХ рдЕрд▓рдЧ .H рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред



рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдиреЗ рд╕рдордп рдмрдЪрд╛рдпрд╛ред рдореИрдВ рд░рдЪрдирд╛рддреНрдордХ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрднрд╛рд░реА рд░рд╣реВрдВрдЧрд╛!



рдкреБрдирд╢реНрдЪ рдСрдкрд░реЗрд╢рди рдХреЗ рджреМрд░рд╛рди, рдХреЙрд▓ рд╕рдордЭреМрддреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдРрд╕реА рдЕрдкреНрд░рд┐рдп рдмрд╛рдд рд╕рд╛рдордиреЗ рдЖрдИ рдереАред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ Funct0Stdcall, Funct0Cdecl; Funct1Stdcall, Funct1Cdecl ...



All Articles