Использование вызо­вов P/Invoke в C#

Иногда при исполь­зо­ва­нии управ­ля­е­мо­го кода при­хо­дит­ся исполь­зо­вать неуправ­ля­е­мые типы. В основ­ном это необ­хо­ди­мо при вызо­ве функ­ции из dll. И основ­ная про­бле­ма, кото­рая воз­ни­ка­ет при объ­яв­ле­нии функ­ций это сопо­став­ле­ние неуправ­ля­е­мых типов (типов C++) и управ­ля­е­мых типов C#. Использовать управ­ля­е­мый код очень про­сто. И он предо­став­ля­ет про­стые спо­со­бы обер­нуть управ­ля­е­мым кодом любую dll. Например: BOOL KernelIoControl( DWORD dwIoControlCode, LPVOIDЧитать далее