Welcome!

Adobe Flex Authors: Yakov Fain, Stephen Wong

Related Topics: ColdFusion

ColdFusion: Article

ColdFusion 8 - GetDriveInfo() UDF Powered By .NET

This is an example that I used when demonstrating ColdFusion 8 .NET integration

Ben Forta's Blog

This is an example that I used when demonstrating ColdFusion 8 .NET integration on the recent usergroup tour, and as requested, I am posting it publicly. GetDriveInfo() returns a query containing specifics about the hard drives on your server, it returns all drives unless an optional drive letter is passed to it. GetDriveInfo() uses the .NET System.IO.DriveInfo class (which was introduced in .NET 2, and thus this example requires .NET 2 or 3).

Here is the code:

<!--- Get drive details for one or all drives --->
<cffunction name="GetDriveInfo" returntype="query" output="false">
   <cfargument name="drive" required="no" default="">

   <!--- Local vars --->
   <cfset var result=QueryNew("name,type,isready,format,label,totalsize,freespace",
                     "varchar,varchar,bit,varchar,varchar,double,double")>

   <cfset var sidiClass="">
   <cfset var drives="">
   <cfset var i=0>

   <!--- Get System.IO.DriveInfo class --->
   <cfobject type=".NET"
            name="sidiClass"
            class="System.IO.DriveInfo">

   <!--- Get drives --->
   <cfset drives=sidiClass.GetDrives()>

   <!--- Loop through drives --->
   <cfloop from="1" to="#ArrayLen(drives)#" index="i">
      <!--- Check if need this one --->
      <cfif ARGUMENTS.drive IS ""
         OR ARGUMENTS.drive EQ drives[i].Get_Name()
         OR (Len(ARGUMENTS.drive) IS 1
            AND ARGUMENTS.drive EQ Left(drives[i].Get_Name(), 1))>

         <!--- Add row --->
         <cfset QueryAddRow(result)>
         <!--- Get name, type, and ready flag --->
         <cfset QuerySetCell(result, "name", drives[i].Get_Name())>
         <cfset QuerySetCell(result, "type", drives[i].Get_DriveType().ToString())>
         <cfset QuerySetCell(result, "isready", drives[i].Get_IsReady())>
         <!--- Get extra details ONLY if ready, or will throw error --->
         <cfif drives[i].Get_IsReady()>
            <cfset QuerySetCell(result, "format", drives[i].Get_DriveFormat())>
            <cfset QuerySetCell(result, "label", drives[i].Get_VolumeLabel())>
            <cfset QuerySetCell(result, "totalsize", drives[i].Get_TotalSize())>
            <cfset QuerySetCell(result, "freespace", drives[i].Get_AvailableFreeSpace())>
         </cfif>
      </cfif>
   </cfloop>

   <!--- Return result --->
   <cfreturn result>

</cffunction>

And here is a simple test example:

<!--- Test with all drives --->
<h3>All Drives</h3>
<cfdump var="#GetDriveInfo()#">

<!--- Test with just C: drive --->
<h3>C: Drive</h3>
<cfdump var="#GetDriveInfo("C")#">

<!--- Display just space on C: drive --->
<h3>Free Space On C Drive</h3>
<cfdump var="#NumberFormat(GetDriveInfo("C").freespace)#">

More Stories By Ben Forta

Ben Forta is Adobe's Senior Technical Evangelist. In that capacity he spends a considerable amount of time talking and writing about Adobe products (with an emphasis on ColdFusion and Flex), and providing feedback to help shape the future direction of the products. By the way, if you are not yet a ColdFusion user, you should be. It is an incredible product, and is truly deserving of all the praise it has been receiving. In a prior life he was a ColdFusion customer (he wrote one of the first large high visibility web sites using the product) and was so impressed he ended up working for the company that created it (Allaire). Ben is also the author of books on ColdFusion, SQL, Windows 2000, JSP, WAP, Regular Expressions, and more. Before joining Adobe (well, Allaire actually, and then Macromedia and Allaire merged, and then Adobe bought Macromedia) he helped found a company called Car.com which provides automotive services (buy a car, sell a car, etc) over the Web. Car.com (including Stoneage) is one of the largest automotive web sites out there, was written entirely in ColdFusion, and is now owned by Auto-By-Tel.

Comments (1) View Comments

Share your thoughts on this story.

Add your comment
You must be signed in to add a comment. Sign-in | Register

In accordance with our Comment Policy, we encourage comments that are on topic, relevant and to-the-point. We will remove comments that include profanity, personal attacks, racial slurs, threats of violence, or other inappropriate material that violates our Terms and Conditions, and will block users who make repeated violations. We ask all readers to expect diversity of opinion and to treat one another with dignity and respect.


Most Recent Comments
sambit 01/25/08 07:38:47 AM EST

Hi
We got this error
------------------------------------------------------
[RPC Fault faultString="Problem opening the client transport mechanism. Did you start the .NET side?" faultCode="Server.Processing" faultDetail="null"]
at mx.rpc::AbstractInvoker/http://www.adobe.com/2006/flex/mx/internal::faultHandler()
at mx.rpc::Responder/fault()
at mx.rpc::AsyncRequest/fault()
at ::NetConnectionMessageResponder/NetConnectionChannel.as$33:NetConnectionMessageResponder::statusHandler()
at mx.messaging::MessageResponder/status()

------------------------------------------------------
kindly help us.
And can you tell us that Can coldfusion 8 be integrated with .net 1.1?