|
» Log In » Register » Suggest » Feeds » News » Podcasts » Tags » Pings » Documents » XML » Web Services » Categories » Statistics » Help » Site Map » About |
|
Previous Syndicated Feed |
Random Syndicated Feed |
Next Syndicated Feed |
|
Feed Tags
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Headlines | Poll Results | Statistics | XML | Action Log(2) | Notes(0) | Categories | Contacts | Locations | Subscribers | Changes |
| Title | Description |
| ESE links | ESE API at MSDN: http://msdn2.microsoft.com/en-us/library/ms684493.aspx New features in ESE for Vista/Server 2008: http://msdn2.microsoft.com/en-us/library/aa964797.aspx ESE overview http://technet.microsoft.com/en-us/library/aa998171.aspx Wikipedia article: http://en.wikipedia.org/wiki/Extensible_Storage_Engine
|
| SQL Server 2005 Compact Edition Overview | A good overview of SQL Server 2005 Compact Edition
http://msdn2.microsoft.com/en-us/library/bb380177.aspx |
| Windows Contacts viewer in MCE | Mobileware.net has released a contacts viewer for MCE: Some screen shots:
|
| CLSID_OEEnvelope |
Several 2007 Microsoft Office applications provide an API that lets a mail client interface with 2007 Office applications when the API is implemented by the mail client. This API provides an integrated experience for sending a copy of a 2007 Office document. If the default mail client implements the API, you can use the Microsoft Office Outlook 2007 mail envelope experience directly in 2007 Office applications.
http://support.microsoft.com/kb/926453
|
| Windows Mail Channel 9 video | Windows Mail video link: |
| Windows Contacts API | Windows Vista includes significant changes to the Windows Address Book. The WAB MAPI APIs are still supported: And there are new APIs in the SDK:
|
| Double Buffer |
In a project planning meeting recently, I heard a coworker say "Double Buffer". I figured that he meant a performance technique for animation or networking: http://www.codeproject.com/java/javadoublebuffer.asp or like: http://www.usenix.org/publications/library/proceedings/osdi99/full_papers/pai/pai_html/node20.html But he actually meant doubling the time estimate for each task in our project. I couldn't stop myself from immediately suggesting that he read the book 'Critical Chain': http://www.amazon.com/exec/obidos/tg/detail/-/0884271536/104-9443640-3586327 Or for a quicker overview: http://www.processimpact.com/articles/rainyday.pdf
|
| Defrag API C# wrappers | For my own amusement, I decided to wrap the NT Defrag APIs in C#. It isn't great, but... I'll give it the classic dev guarantee of "it works on my machine". http://www.thenetworkadministrator.com/top20.htm The MSDN documentation uses lots of very scary words like "IOCTL" and "DeviceIoControl" and the such. Hopefully, I've abstracted some of that away...
First, you can get a bitmap of the cluster usage on the device... static public BitArray GetVolumeMap(string DeviceName) Then you can get a map of a file - virtual clusters and logical clusters static public Array GetFileMap(string path) Finally, you can move sections of a file around on a volume... static public void MoveFile(string deviceName, string path, Int64 VCN, Int64 LCN, Int32 count)
Here's the whole thing, nearly guaranteed to break your file system if used. :-) // // // using System; namespace defraglib // const uint GENERIC_READ = (0x80000000); const uint FILE_FLAG_NO_BUFFERING = 0x20000000; [DllImport("kernel32.dll", SetLastError = true)] [DllImport("kernel32.dll", SetLastError = true)] [DllImport("kernel32.dll", SetLastError = true)] static private IntPtr OpenVolume(string DeviceName) static private IntPtr OpenFile(string path)
try Int64 i64 = 0; GCHandle handle = GCHandle.Alloc(i64, GCHandleType.Pinned); // alloc off more than enough for my machine uint size = 0; bool fResult = DeviceIoControl( if (!fResult) /* Debug.Assert(StartingLcn == 0); pDest = (IntPtr)((Int64)pDest + 8); Int32 byteSize = (int)(BitmapSize / 8); IntPtr BitmapBegin = (IntPtr)((Int64)pDest + 8); byte[] byteArr = new byte[byteSize]; Marshal.Copy(BitmapBegin, byteArr, 0, (Int32)byteSize); BitArray retVal = new BitArray(byteArr); Marshal.FreeHGlobal(pAlloc); /// <summary> try Int64 i64 = 0; GCHandle handle = GCHandle.Alloc(i64, GCHandleType.Pinned); uint q = 1024 * 1024 * 64; // 1024 bytes == 1k * 1024 == 1 meg * 64 == 64 megs uint size = 0; if (!fResult) handle.Free(); /* Int32 ExtentCount = (Int32)Marshal.PtrToStructure(pDest, typeof(Int32)); pDest = (IntPtr)((Int64)pDest + 4); Int64 StartingVcn = (Int64)Marshal.PtrToStructure(pDest, typeof(Int64)); Debug.Assert(StartingVcn == 0); pDest = (IntPtr)((Int64)pDest + 8); // now pDest points at an array of pairs of Int64s. Array retVal = Array.CreateInstance(typeof(Int64), new int[2] { ExtentCount, 2 }); for (int i = 0; i < ExtentCount; i++) return retVal; Marshal.FreeHGlobal(pAlloc); /// <summary> /// <summary> hFile = OpenFile(path);
GCHandle handle = GCHandle.Alloc(mfd, GCHandleType.Pinned); bool fResult = DeviceIoControl( handle.Free(); if (!fResult)
const uint METHOD_NEITHER = 3; const uint FILE_ANY_ACCESS = 0; public static uint FSCTL_GET_VOLUME_BITMAP = CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 27, METHOD_NEITHER, FILE_ANY_ACCESS); static uint CTL_CODE(uint DeviceType, uint Function, uint Method, uint Access) }
|
| Defrag APIs | I just recently re-discovered the NT file defrag APIs... http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/base/defragmenting_files.asp And I found a great defragmenter... http://www.whitneyfamily.org/Hacks/?item=Defrag
|
| Longhorn Communications Wiki | One of the PMs on the team has put together a wiki on Channel9 http://channel9.msdn.com/wiki/default.aspx/Channel9.LonghornCommunications
|