CFURLAccess.h
上传用户:xjjlds
上传日期:2015-12-05
资源大小:22823k
文件大小:8k
源码类别:

多媒体编程

开发平台:

Visual C++

  1. /*
  2.      File:       CFURLAccess.h
  3.  
  4.      Contains:   CoreFoundation url access
  5.  
  6.      Version:    Technology: Mac OS X
  7.                  Release:    QuickTime 6.0.2
  8.  
  9.      Copyright:  (c) 1999-2001 by Apple Computer, Inc., all rights reserved
  10.  
  11.      Bugs?:      For bug reports, consult the following page on
  12.                  the World Wide Web:
  13.  
  14.                      http://developer.apple.com/bugreporter/
  15.  
  16. */
  17. #ifndef __CFURLACCESS__
  18. #define __CFURLACCESS__
  19. #ifndef __CFURL__
  20. #include "CFURL.h"
  21. #endif
  22. #ifndef __CFARRAY__
  23. #include "CFArray.h"
  24. #endif
  25. #ifndef __CFDATA__
  26. #include "CFData.h"
  27. #endif
  28. #ifndef __CFDICTIONARY__
  29. #include "CFDictionary.h"
  30. #endif
  31. #ifndef __CFSTRING__
  32. #include "CFString.h"
  33. #endif
  34. /* Fills buffer with the file system's native representation of url's */
  35. /* path. No more than bufLen bytes are written to buffer.  If resolveAgainstBase */
  36. /* is true, the url's relative portion is resolved against its base before */
  37. /* the path is computed.  usedBufLen is set to the number of bytes actually */
  38. /* written; returns success or failure. */
  39. #if PRAGMA_ONCE
  40. #pragma once
  41. #endif
  42. #ifdef __cplusplus
  43. extern "C" {
  44. #endif
  45. #if PRAGMA_IMPORT
  46. #pragma import on
  47. #endif
  48. #if PRAGMA_STRUCT_ALIGN
  49.     #pragma options align=mac68k
  50. #elif PRAGMA_STRUCT_PACKPUSH
  51.     #pragma pack(push, 2)
  52. #elif PRAGMA_STRUCT_PACK
  53.     #pragma pack(2)
  54. #endif
  55. #if PRAGMA_ENUM_ALWAYSINT
  56.     #if defined(__fourbyteints__) && !__fourbyteints__ 
  57.         #define __CFURLACCESS__RESTORE_TWOBYTEINTS
  58.         #pragma fourbyteints on
  59.     #endif
  60.     #pragma enumsalwaysint on
  61. #elif PRAGMA_ENUM_OPTIONS
  62.     #pragma option enum=int
  63. #elif PRAGMA_ENUM_PACK
  64.     #if __option(pack_enums)
  65.         #define __CFURLACCESS__RESTORE_PACKED_ENUMS
  66.         #pragma options(!pack_enums)
  67.     #endif
  68. #endif
  69. EXTERN_API_C( Boolean )
  70. CFURLGetFileSystemRepresentation (CFURLRef              url,
  71.                                  Boolean                resolveAgainstBase,
  72.                                  char *                 buffer,
  73.                                  CFIndex                bufLen);
  74. EXTERN_API_C( CFURLRef )
  75. CFURLCreateFromFileSystemRepresentation (CFAllocatorRef  allocator,
  76.                                  const char *           buffer,
  77.                                  CFIndex                bufLen,
  78.                                  Boolean                isDirectory);
  79. /* Attempts to read the data and properties for the given URL. */
  80. /* If only interested in one of the resourceData and properties, pass */
  81. /* NULL for the other.  If properties is non-NULL and desiredProperties */
  82. /* is NULL, then all properties are fetched.  Returns success or failure; */
  83. /* note that as much work as possible is done even if FALSE is returned. */
  84. /* So for instance if one property is not available, the others are fetched */
  85. /* anyway. errorCode is set to 0 on success, and some other value on failure. */
  86. /* If non-NULL, it is the caller 's responsibility to release resourceData */
  87. /* and properties. */
  88. /* Apple reserves for its use all negative error code values; these values */
  89. /* represent errors common to any scheme.  Scheme-specific error codes */
  90. /* should be positive, non-zero, and should be used only if one of the */
  91. /* predefined Apple error codes does not apply.  Error codes should be */
  92. /* publicized and documented with the scheme-specific properties. */
  93. EXTERN_API_C( Boolean )
  94. CFURLCreateDataAndPropertiesFromResource (CFAllocatorRef  alloc,
  95.                                  CFURLRef               url,
  96.                                  CFDataRef *            resourceData,
  97.                                  CFDictionaryRef *      properties,
  98.                                  CFArrayRef             desiredProperties,
  99.                                  SInt32 *               errorCode);
  100. /* Attempts to write the given data and properties to the given URL. */
  101. /* If dataToWrite is NULL, only properties are written out (use */
  102. /* CFURLDestroyResource() to delete a resource).  Properties not present */
  103. /* in propertiesToWrite are left unchanged, hence if propertiesToWrite */
  104. /* is NULL or empty, the URL's properties are not changed at all. */
  105. /* Returns success or failure; errorCode is set as for */
  106. /* CFURLCreateDataAndPropertiesFromResource(), above. */
  107. EXTERN_API_C( Boolean )
  108. CFURLWriteDataAndPropertiesToResource (CFURLRef         url,
  109.                                  CFDataRef              dataToWrite,
  110.                                  CFDictionaryRef        propertiesToWrite,
  111.                                  SInt32 *               errorCode);
  112. /* Destroys the resource indicated by url. */
  113. /* Returns success or failure; errorCode set as above. */
  114. EXTERN_API_C( Boolean )
  115. CFURLDestroyResource            (CFURLRef               url,
  116.                                  SInt32 *               errorCode);
  117. /* Convenience method which calls through to CFURLCreateDataAndPropertiesFromResource(). */
  118. /* Returns NULL on error and sets errorCode accordingly. */
  119. EXTERN_API_C( CFTypeRef )
  120. CFURLCreatePropertyFromResource (CFAllocatorRef         alloc,
  121.                                  CFURLRef               url,
  122.                                  CFStringRef            property,
  123.                                  SInt32 *               errorCode);
  124. /* Common error codes; this list is expected to grow */
  125. enum {
  126.     kCFURLUnknownError          = -10,
  127.     kCFURLUnknownSchemeError    = -11,
  128.     kCFURLResourceNotFoundError = -12,
  129.     kCFURLResourceAccessViolationError = -13,
  130.     kCFURLRemoteHostUnavailableError = -14,
  131.     kCFURLImproperArgumentsError = -15,
  132.     kCFURLUnknownPropertyKeyError = -16,
  133.     kCFURLPropertyKeyUnavailableError = -17,
  134.     kCFURLTimeoutError          = -18
  135. };
  136. /* Properties and error codes for the file: scheme.  These are ad hoc and expected to change */
  137. extern const CFStringRef kCFFileURLExists;
  138. extern const CFStringRef kCFFileURLPOSIXMode;
  139. extern const CFStringRef kCFFileURLDirectoryContents;
  140. extern const CFStringRef kCFFileURLSize;
  141. extern const CFStringRef kCFFileURLLastModificationTime;
  142. extern const CFStringRef kCFHTTPURLStatusCode;
  143. extern const CFStringRef kCFHTTPURLStatusLine;
  144. /* kCFFileURLExists is set to kCFFileURLExists if the file exists; any other value if not */
  145. /* kCFFileURLPOSIXMode encompasses permissions and file type; use the POSIX masks in stat.h */
  146. /* to get specifics.  Value is a CFData wrapped around a mode_t */
  147. /* kCFFileURLDirectoryContents value is a CFArray with containing URLs for the directory's contents. */
  148. /* Empty array means the directory exists, but is empty. */
  149. /* NULL value (but no failure) means the URL exists but is not a directory. */
  150. /* Not settable */
  151. /* kCFHTTPURLStatusCode and kCFHTTPURLStatusLine are properties for the http: scheme. */
  152. /* Except for the common error */
  153. /* codes, above, errorCode will be set to the HTTP response status */
  154. /* code upon failure.  The status code is a CFNumber, the status line is a CFString.  */
  155. #if PRAGMA_ENUM_ALWAYSINT
  156.     #pragma enumsalwaysint reset
  157.     #ifdef __CFURLACCESS__RESTORE_TWOBYTEINTS
  158.         #pragma fourbyteints off
  159.     #endif
  160. #elif PRAGMA_ENUM_OPTIONS
  161.     #pragma option enum=reset
  162. #elif defined(__CFURLACCESS__RESTORE_PACKED_ENUMS)
  163.     #pragma options(pack_enums)
  164. #endif
  165. #if PRAGMA_STRUCT_ALIGN
  166.     #pragma options align=reset
  167. #elif PRAGMA_STRUCT_PACKPUSH
  168.     #pragma pack(pop)
  169. #elif PRAGMA_STRUCT_PACK
  170.     #pragma pack()
  171. #endif
  172. #ifdef PRAGMA_IMPORT_OFF
  173. #pragma import off
  174. #elif PRAGMA_IMPORT
  175. #pragma import reset
  176. #endif
  177. #ifdef __cplusplus
  178. }
  179. #endif
  180. #endif /* __CFURLACCESS__ */