Creating Folders
Creating Folders
This content is no longer actively maintained. It is provided as is, for anyone who may still be using these technologies, with no warranties or claims of accuracy with regard to the most recent product version or service release.
The following examples show how to create a folder in the Exchange store. The function in each example performs the following steps:
- The function attempts to create a folder at this URL. If an error occurs, the function fails.
- If the function is successful, it sets the new folder's contentclass Field to the value "urn:content-classes:folder".
- The function returns a reference to the Record object that is bound to the new folder.
VBScript
If WScript.Arguments.Count < 1 Then WScript.Echo "Usage: cscript createfolder.wsf URL [content class]" WScript.Quit End If Dim sUrl Dim sContentClass ' Note: It is recommended that all input parameters be validated when they are ' first obtained from the user or user interface. sUrl = WScript.Arguments(0) sContentClass = WScript.Arguments(1) Dim Rec Wscript.Echo "Creating folder at URL: " & sUrl Set Rec = CreateFolder(sUrl, sContentClass, Nothing) Wscript.Echo "Succeeded." Function CreateFolder( sUrl, sContentClass, Conn ) Dim Rec Set Rec = CreateObject("ADODB.Record") ' Did caller pass a Connection object reference? If Not ( VarType(Conn) = vbObject AND TypeName(Conn) = "Connection" ) Then Set Conn = CreateObject("ADODB.Connection") Conn.Provider = "ExOLEDB.DataSource" Conn.Open sUrl End If If sContentClass = "" Then sContentClass = "urn:content-classes:folder" ' The Default is urn:content-classes:folder. End If ' Try to create the folder Rec.Open sUrl, Conn, adModeReadWrite, adCreateCollection Rec.Fields("DAV:contentclass") = sContentClass Rec.Fields.Update Set CreateFolder = Rec End Function
The following example creates a new folder by using the native OLE DB interfaces directly in Microsoft® Visual C++®.
#include <oledb.h> #include <msdasc.h> #include <comdef.h> #pragma comment(lib,"oledb.lib") #pragma comment(lib,"msdasc.lib") #define BUF_SIZE 4096 // Note: It is recommended that all input parameters be validated when they are // first obtained from the user or user interface. HRESULT CreateFolder( BSTR url, IRow** ppRow ) { if(url == NULL) return E_INVALIDARG; HRESULT hr = NULL; DWORD dwBindStatus = 0; IBindResource* pBRes = NULL; ICreateRow* pCrRow = NULL; CLSID clsid_ExOLEDBProviderBinder; if(FAILED(hr = CLSIDFromProgID(L"ExOLEDB.Binder", &clsid_ExOLEDBProviderBinder))) return hr; hr = CoCreateInstance( clsid_ExOLEDBProviderBinder, NULL, CLSCTX_INPROC_SERVER, IID_IBindResource, (void**)&pBRes); if(FAILED(hr)) return hr; hr = pBRes->Bind( NULL, url, DBBINDURLFLAG_READWRITE, DBGUID_SESSION, IID_ICreateRow, NULL, NULL, &dwBindStatus, (IUnknown**) &pCrRow); if(FAILED(hr)){ pBRes->Release(); return hr; } pBRes->Release(); dwBindStatus = 0; IRow* pRow = NULL; wchar_t* newUrl = NULL; hr = pCrRow->CreateRow( NULL, url, (DBBINDURLFLAG_READWRITE | DBBINDURLFLAG_COLLECTION ), DBGUID_ROW, IID_IRow, NULL, NULL, &dwBindStatus, &newUrl, (IUnknown**)&pRow ); if(FAILED(hr)){ pCrRow->Release(); return hr; } *ppRow = pRow; pCrRow->Release(); return hr; }
Related Topics
Send us your feedback about the Microsoft Exchange Server 2003 SDK.
Build: June 2007 (2007.618.1)
© 2003-2006 Microsoft Corporation. All rights reserved. Terms of use.