Esempio n. 1
0
        public override byte[] GetDiskId()
        {
            var stat = new statfs();
            var statted = statfs64( "/", ref stat );
            if ( statted == 0 )
            {
                using ( var session = DASessionCreate( CFTypeRef.None ) )
                using ( var disk = DADiskCreateFromBSDName( CFTypeRef.None, session, stat.f_mntfromname ) )
                using ( var properties = DADiskCopyDescription( disk ) )
                using ( var key = CFStringCreateWithCString( CFTypeRef.None, DiskArbitration.kDADiskDescriptionMediaUUIDKey, CFStringEncoding.kCFStringEncodingASCII ) )
                {
                    IntPtr cfuuid = IntPtr.Zero;
                    if ( CFDictionaryGetValueIfPresent( properties, key, out cfuuid ) )
                    {
                        using ( var uuidString = CFUUIDCreateString( CFTypeRef.None, cfuuid ) )
                        {
                            var stringBuilder = new StringBuilder( 64 );
                            if ( CFStringGetCString( uuidString, stringBuilder, stringBuilder.Capacity, CFStringEncoding.kCFStringEncodingASCII ) )
                            {
                                return Encoding.ASCII.GetBytes( stringBuilder.ToString() );
                            }
                        }
                    }
                }
            }

            return base.GetDiskId();
        }
Esempio n. 2
0
 public static extern int statfs64(string path, ref statfs buf);
Esempio n. 3
0
 public static extern int statfs64(string path, ref statfs buf);