⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rapi.cs

📁 windows mobile 开发实例wi ndows mobile 开发实例
💻 CS
📖 第 1 页 / 共 2 页
字号:
// Rapi.cs - P/Invoke wrappers for RAPI functions
//
// Generated by PInvoke Wizard (v 1.0) from The Paul Yao Company http://www.paulyao.com 
//
// Code from _Programming the .NET Compact Framework with C#_
// and _Programming the .NET Compact Framework with VB_
// (c) Copyright 2002-2004 Paul Yao and David Durant. 
// All rights reserved.

using System;
using System.Runtime.InteropServices;

namespace YaoDurant.Win32
{
   /// <summary>
   /// Rapi - Wrapper for ActiveSync RAPI functions.
   /// </summary>
   public struct Rapi
   {
      public const string DllName = "rapi.dll";
      public const int MAX_PATH = 260;
      public const int S_OK = 0;
      public const int ERROR_SUCCESS = 0;
      public const int ERROR_NO_MORE_ITEMS = 259;
      public const int E_FAIL = unchecked((int)0x80004005);
      public const int RAPI_TRUE = 1;
      public const int RAPI_FALSE = 0;
      public static IntPtr INVALID_HANDLE_VALUE  = 
         new IntPtr(unchecked((int)0xffffffff));

      // Registry values.
      public static IntPtr HKEY_CLASSES_ROOT  = 
         new IntPtr(unchecked((int)0x80000000));
      public static IntPtr HKEY_CURRENT_USER  = 
         new IntPtr(unchecked((int)0x80000001));
      public static IntPtr HKEY_LOCAL_MACHINE = 
         new IntPtr(unchecked((int)0x80000002));
      public static IntPtr HKEY_USERS         = 
         new IntPtr(unchecked((int)0x80000003));

      [StructLayout(LayoutKind.Sequential,CharSet=CharSet.Unicode,Pack=4)]
         public struct CE_FIND_DATA
      {
         public int dwFileAttributes;
         public FILETIME ftCreationTime;
         public FILETIME ftLastAccessTime;
         public FILETIME ftLastWriteTime;
         public int nFileSizeHigh;
         public int nFileSizeLow;
         public int dwOID;
         [ MarshalAs( UnmanagedType.ByValTStr, SizeConst=MAX_PATH)]
         public string cFileName;
      };

      [StructLayout(LayoutKind.Sequential,CharSet=CharSet.Unicode,Pack=4)]
      public struct CEPROPID
      {
         CEVT type;
         short id;
      }

      public enum FAF
      {
         FAF_ATTRIBUTES = 0x01,
         FAF_CREATION_TIME = 0x02,
         FAF_LASTACCESS_TIME = 0x04,
         FAF_LASTWRITE_TIME = 0x08,
         FAF_SIZE_HIGH = 0x10,
         FAF_SIZE_LOW = 0x20,
         FAF_OID = 0x40,
         FAF_NAME = 0x80,
         FAF_FLAG_COUNT = 8,
         FAF_ATTRIB_CHILDREN = 0x01000,
         FAF_ATTRIB_NO_HIDDEN = 0x02000,
         FAF_FOLDERS_ONLY = 0x04000,
         FAF_NO_HIDDEN_SYS_ROMMODULES = 0x08000,
         FAF_GETTARGET = 0x10000,
      }

      public enum FAD
      {
         FAD_OID = 0x01,
         FAD_FLAGS = 0x02,
         FAD_NAME = 0x04,
         FAD_TYPE = 0x08,
         FAD_NUM_RECORDS = 0x10,
         FAD_NUM_SORT_ORDER = 0x20,
         FAD_SIZE = 0x40,
         FAD_LAST_MODIFIED = 0x80,
         FAD_SORT_SPECS = 0x100,
         FAD_FLAG_COUNT = 9,
      }

      public enum FILE_ATTRIBUTE
      {
         FILE_ATTRIBUTE_HAS_CHILDREN = 0x00010000,
         FILE_ATTRIBUTE_SHORTCUT = 0x00020000,
         FILE_ATTRIBUTE_READONLY = 0x00000001,
         FILE_ATTRIBUTE_HIDDEN = 0x00000002,
         FILE_ATTRIBUTE_SYSTEM = 0x00000004,
         FILE_ATTRIBUTE_DIRECTORY = 0x00000010,
         FILE_ATTRIBUTE_ARCHIVE = 0x00000020,
         FILE_ATTRIBUTE_INROM = 0x00000040,
         FILE_ATTRIBUTE_ENCRYPTED = 0x00000040,
         FILE_ATTRIBUTE_NORMAL = 0x00000080,
         FILE_ATTRIBUTE_TEMPORARY = 0x00000100,
         FILE_ATTRIBUTE_SPARSE_FILE = 0x00000200,
         FILE_ATTRIBUTE_REPARSE_POINT = 0x00000400,
         FILE_ATTRIBUTE_COMPRESSED = 0x00000800,
         FILE_ATTRIBUTE_OFFLINE = 0x00001000,
         FILE_ATTRIBUTE_ROMSTATICREF = 0x00001000,
         FILE_ATTRIBUTE_NOT_CONTENT_INDEXED = 0x00002000,
         FILE_ATTRIBUTE_ROMMODULE = 0x00002000,
      }

      public enum RAPI_ERROR
      {
         ERROR_FILE_NOT_FOUND = 2,
         ERROR_PATH_NOT_FOUND = 3,
         ERROR_TOO_MANY_OPEN_FILES = 4,
         ERROR_ACCESS_DENIED = 5,
         ERROR_INVALID_HANDLE = 6,
      }

      public enum RAPISTREAMFLAG
      {
         STREAM_TIMEOUT_READ,
      };

      public enum REGTYPE
      {
         REG_NONE = 0,
         REG_SZ = 1,
         REG_EXPAND_SZ = 2,
         REG_BINARY = 3,
         REG_DWORD = 4,
         REG_DWORD_LITTLE_ENDIAN = 4,
         REG_DWORD_BIG_ENDIAN = 5,
         REG_LINK = 6,
         REG_MULTI_SZ = 7,
         REG_RESOURCE_LIST = 8
      }

      public interface ISequentialStream
      {
         int Read(ref byte pv, int cb, ref int pcbRead);
         int Write(ref byte pv,int cb, ref int pcbWritten);
      }

      public interface IStream : ISequentialStream
      {
      int Seek(long dlibMove, int dwOrigin, ref ulong plibNewPosition);
      int SetSize(ulong libNewSize);
      int CopyTo(IStream pstm, ulong cb, ref ulong pcbRead, ref ulong pcbWritten);
      int Commit(int grfCommitFlags);
      int Revert();
      int LockRegion(ulong libOffset, ulong cb, int dwLockType);
      int UnlockRegion(ulong libOffset, ulong cb, int dwLockType);
      int Stat(ref STATSTG pstatstg, int grfStatFlag);
      int Clone(ref IStream ppstm);
      }

      public interface IRAPIStream : IStream
      {
         int SetRapiStat(int dwValue);
         int GetRapiStat(ref int pdwValue);
      };

      [StructLayout(LayoutKind.Sequential,Pack=4)]
         public struct STORE_INFORMATION
      {
         int dwStoreSize;
         int dwFreeSize;
      };

      [StructLayout(LayoutKind.Sequential,Pack=4)]
         public struct CEGUID
      {
         int Data1;
         int Data2;
         int Data3;
         int Data4;
      };

      [StructLayout(LayoutKind.Sequential,Pack=4)]
         public struct CENOTIFICATION
      {
         int dwSize;
         int dwParam;
         int uType;
         CEGUID guid;
         int oid;
         int oidParent;
      };

      public const int CEDB_EXNOTIFICATION = 0x00000001;

      [StructLayout(LayoutKind.Sequential,Pack=4)]
         public struct CENOTIFYREQUEST
      {
         int dwSize;
         IntPtr hwnd;
         int dwFlags;
         IntPtr hHeap;
         int dwParam;
      };

      [StructLayout(LayoutKind.Sequential,Pack=4,CharSet=CharSet.Unicode)]
         public struct CEFILEINFO
      {
         int dwAttributes;
         int oidParent;
         [ MarshalAs( UnmanagedType.ByValTStr, SizeConst=MAX_PATH)]
         string szFileName;
         FILETIME ftLastChanged;
         int dwLength;
      };

     [StructLayout(LayoutKind.Sequential,Pack=4,CharSet=CharSet.Unicode)]
         public struct CEDIRINFO
      {
         int dwAttributes;
         int oidParent;
         [ MarshalAs( UnmanagedType.ByValTStr, SizeConst=MAX_PATH)]
         string szDirName;
      };

      [StructLayout(LayoutKind.Sequential,Pack=4)]
         public struct CERECORDINFO
      {
         int oidParent;
      };

       public enum CEDB_SORT
      {
         CEDB_SORT_DESCENDING = 0x00000001,
         CEDB_SORT_CASEINSENSITIVE = 0x00000002,
         CEDB_SORT_UNKNOWNFIRST = 0x00000004,
         CEDB_SORT_GENERICORDER = 0x00000008,
      }

      [StructLayout(LayoutKind.Sequential,Pack=4)]
         public struct SORTORDERSPEC
      {
         public int propid;
         public int dwFlags;
      };


      public const int CEDB_MAXDBASENAMELEN = 32;
      public const int CEDB_MAXSORTORDER = 4;

      public enum CEDB
      {
         CEDB_VALIDNAME = 0x0001,
         CEDB_VALIDTYPE = 0x0002,
         CEDB_VALIDSORTSPEC = 0x0004,
         CEDB_VALIDMODTIME = 0x0008,
         CEDB_VALIDDBFLAGS = 0x0010,
         CEDB_VALIDCREATE = CEDB_VALIDNAME|CEDB_VALIDTYPE|CEDB_VALIDSORTSPEC|CEDB_VALIDDBFLAGS,
         CEDB_NOCOMPRESS = 0x00010000,
      }

      [StructLayout(LayoutKind.Sequential,Pack=4,CharSet=CharSet.Unicode)]
      public struct CEDBASEINFO
      {
         public int dwFlags;
         [ MarshalAs( UnmanagedType.ByValTStr, SizeConst=CEDB_MAXDBASENAMELEN)]
         public string szDbaseName;
         public int dwDbaseType;
         public short wNumRecords;
         public short wNumSortOrder;
         public int dwSize;
         public FILETIME ftLastModified;

         // public SORTORDERSPEC [] rgSortSpecs;
         // Try #2 -- This works.
         public SORTORDERSPEC rgSortSpec1;
         public SORTORDERSPEC rgSortSpec2;
         public SORTORDERSPEC rgSortSpec3;
         public SORTORDERSPEC rgSortSpec4;

#if false
         // public SORTORDERSPEC [] rgSortSpecs;
         // Try #3: This works also - but not as nice.
         public int Sort1_propid;
         public int Sort1_dwFlags;
         public int Sort2_propid;
         public int Sort2_dwFlags;
         public int Sort3_propid;
         public int Sort3_dwFlags;
         public int Sort4_propid;
         public int Sort4_dwFlags;

         // public SORTORDERSPEC [] rgSortSpecs;
         // Try #1: The original - DESKTOP P/Invoke cannot deal with this
         // Desktop P/Invoke cannot deal with this - 
         // problem with structure array in a structure in a structure?!?
         [ MarshalAs( UnmanagedType.ByValArray, SizeConst=CEDB_MAXSORTORDER)]
         public SORTORDERSPEC [] rgSortSpecs;
#endif
      };

      [StructLayout(LayoutKind.Sequential,Pack=4,CharSet=CharSet.Unicode)]
         public struct CEDB_FIND_DATA
      {
         public int OidDb;
         public CEDBASEINFO DbInfo;
      };

      public enum OBJTYPE
      {
         OBJTYPE_INVALID = 0,
         OBJTYPE_FILE = 1,
         OBJTYPE_DIRECTORY = 2,
         OBJTYPE_DATABASE = 3,
         OBJTYPE_RECORD = 4,
      }

      [StructLayout(LayoutKind.Sequential,Pack=4,CharSet=CharSet.Unicode)]
         public struct CEOIDINFO
      {
         short wObjType;
         short wPad;
         [StructLayout(LayoutKind.Explicit)]
            public struct _NESTED_CEOIDINFO_UNION
            {
               [FieldOffset(0)] CEFILEINFO infFile;
               [FieldOffset(0)] CEDIRINFO infDirectory;
               [FieldOffset(0)] CEDBASEINFO infDatabase;
               [FieldOffset(0)] CERECORDINFO infRecord;
            };
      };

      public const int CEDB_AUTOINCREMENT = 0x00000001;

      public enum CEDB_SEEK
      {
         CEDB_SEEK_CEOID = 0x00000001,
         CEDB_SEEK_BEGINNING = 0x00000002,
         CEDB_SEEK_END = 0x00000004,
         CEDB_SEEK_CURRENT = 0x00000008,
         CEDB_SEEK_VALUESMALLER = 0x00000010,
         CEDB_SEEK_VALUEFIRSTEQUAL = 0x00000020,
         CEDB_SEEK_VALUEGREATER = 0x00000040,
         CEDB_SEEK_VALUENEXTEQUAL = 0x00000080,
      }
      
      [StructLayout(LayoutKind.Sequential,Pack=4)]
         public struct CEBLOB
      {
         int dwCount;
         Byte [] lpb;
      };

      public enum CEVT : short
      {
         CEVT_I2 = 2,
         CEVT_UI2 = 18,
         CEVT_I4 = 3,
         CEVT_UI4 = 19,

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -