Csharp/CSharp Tutorial/Windows/Bluetooth — различия между версиями

Материал из .Net Framework эксперт
Перейти к: навигация, поиск
м (1 версия)
 
(нет различий)

Текущая версия на 15:20, 26 мая 2010

Bluetooth Demo

<source lang="csharp">using System; using System.Runtime.InteropServices; using System.Runtime.ConstrainedExecution; using System.Security; using System.Security.Permissions; using System.Text; using Microsoft.Win32.SafeHandles;

// // Matches Win32 BLUETOOTH_FIND_RADIO_PARAMS // [StructLayout( LayoutKind.Sequential )] class BluetoothFindRadioParams {

   public BluetoothFindRadioParams() {
       dwSize = 4;
   }
   public UInt32 dwSize;

} // // Matches Win32 BLUETOOTH_RADIO_INFO // [StructLayout( LayoutKind.Sequential,

              CharSet = CharSet.Unicode )]

struct BluetoothRadioInfo {

   public const int BLUETOOTH_MAX_NAME_SIZE = 248;
   public UInt32 dwSize;
   public UInt64 address;
   [MarshalAs( UnmanagedType.ByValTStr,
               SizeConst = BLUETOOTH_MAX_NAME_SIZE )]
   public string szName;
   public UInt32 ulClassOfDevice;
   public UInt16 lmpSubversion;
   public UInt16 manufacturer;

} // // Safe Bluetooth Enumeration Handle // [SecurityPermission( SecurityAction.Demand,

                    UnmanagedCode = true )]

sealed public class SafeBluetoothRadioFindHandle

   : SafeHandleZeroOrMinusOneIsInvalid

{

   private SafeBluetoothRadioFindHandle() : base( true ) { }
   override protected bool ReleaseHandle() {
       return BluetoothFindRadioClose( handle );
   }
   [DllImport( "Irprops.cpl" )]
   [ReliabilityContract( Consistency.WillNotCorruptState,
                         Cer.Success )]
   [SuppressUnmanagedCodeSecurity]
   private static extern bool BluetoothFindRadioClose(
                                             IntPtr hFind );

} public class EntryPoint {

   private const int ERROR_SUCCESS = 0;
   static void Main() {
       SafeFileHandle radioHandle;
       using( SafeBluetoothRadioFindHandle radioFindHandle
           = BluetoothFindFirstRadio(new BluetoothFindRadioParams(),
                                     out radioHandle) ) {
           if( !radioFindHandle.IsInvalid ) {
               BluetoothRadioInfo radioInfo = new BluetoothRadioInfo();
               radioInfo.dwSize = 520;
               UInt32 result = BluetoothGetRadioInfo( radioHandle,
                                                      ref radioInfo );
               if( result == ERROR_SUCCESS ) {
                   // Let"s send the contents of the radio info to the
                   // console.
                   Console.WriteLine( "address = {0:X}",
                                      radioInfo.address );
                   Console.WriteLine( "szName = {0}",
                                      radioInfo.szName );
                   Console.WriteLine( "ulClassOfDevice = {0}",
                                      radioInfo.ulClassOfDevice );
                   Console.WriteLine( "lmpSubversion = {0}",
                                      radioInfo.lmpSubversion );
                   Console.WriteLine( "manufacturer = {0}",
                                      radioInfo.manufacturer );
               }
               radioHandle.Dispose();
           }
       }
   }
   [DllImport( "Irprops.cpl" )]
   private static extern SafeBluetoothRadioFindHandle
       BluetoothFindFirstRadio( [MarshalAs(UnmanagedType.LPStruct)]
                                BluetoothFindRadioParams pbtfrp,
                                out SafeFileHandle phRadio );
   [DllImport( "Irprops.cpl" )]
   private static extern UInt32
       BluetoothGetRadioInfo( SafeFileHandle hRadio,
                              ref BluetoothRadioInfo pRadioInfo );

} /*Quote from: Book Accelerated C# 2005

   * By Trey Nash
   * ISBN: 1-59059-717-6
   * 432 pp.
   * Published: Aug 2006
   * Price: $39.99
  • /</source>