{khapre.org}
Nothing More : Nothing Less : Just Perfect : Online Since 1997
Wednesday, January 21, 2009

Add Command prompt to explorer context menu

Its been always a long process to reach to desired folder using "cd" command on Command Prompt. It was easier to have a context menu for any folder in Windows Explorer as "Start command here". I had been using it for such a long time, so don't know who told me how to do this, but recently a friend asked me so thought it is easier to post a blog and point him to the post.

  1. Open Windows explorer

    image 

  2. Go to Tools menu -> Folder Options -> File Types. You can probably reach this place via control panel also.

    image
  3. Select "Folder" remember not to select "File Folder" and click on "Advanced". I already have created "command" as my context menu so you will see that here too.

    image
  4. Click New and put Action as "Start command here" and Application used as absolute path to cmd.exe usually it is in your system32 directory.

    image
  5. Click "Ok" and then "Close" to get back to Windows Explorer.
  6. Right click on any folder in Windows Explorer to see the context menu added.

Good luck!!

Labels:


Vishal KHAPRE | Mi Marathi Manus@10:45 PM < (2) @ Add
Saturday, February 07, 2009 7:06:00 AM
Blogger Chirs says....

I am learning good things from this site.

send flowers

Tuesday, March 17, 2009 10:24:00 AM
Blogger vismit says....

more tricks at
http://www.xtreamefun.com/upload


. . ° º o O o º ° . .
Monday, May 07, 2007

Windows zip folder association

Windows has built in zip files added as folders in Windows Explorer. This feature is default support by a Windows standard install. This makes it completely difficult when there are more than on file in the folder or even if there is only one large file with a lot of files and folders inside it.

 

Here is the solution, run following on Windows /DOS command prompt.

 

"regsvr31 /u zipfldr"
(offcourse with out quotes)

If you want to register it back then

"regsvr31 zipfldr"
(offcourse with out quotes)

Chow!!

Labels:


Vishal KHAPRE | Mi Marathi Manus@7:53 AM < (0) @ Add

. . ° º o O o º ° . .
Thursday, August 24, 2006

Python on the .NET Framework

One of the least talked language on web is IronPython when it became available in Microsoft CLR.
Dynamic runtime languages were previously thought to run very poorly on the .NET Framework, but IronPython dismisses that idea. Microsoft is backing IronPython because it exemplifies just how well the .NET Framework can handle dynamic runtime languages. Supposedly, IronPython runs as fast as the C-based implementation of Python-2.4, if not faster. The company claims that IronPython can run 1.8x faster than Python-2.4 right now. Besides being speedy, it also allows developers to access all of the standard C Python libraries, not to mention and create their own subclasses deriving from the .NET framework.
IronPython is the codename for a new implementation of the Python programming language on the .NET Framework. It is fast - up to 1.8x faster than Python-2.4 on the standard pystone benchmark. It supports an interactive interpreter with fully dynamic compilation as well as static compilation to produce pre-compiled executables. It's well integrated with the rest of the Framework and makes all of the .NET libraries easily available to Python programmers. In this episode Jim Hugunin introduces IronPython with demos showing interactive exploration and GUI building from a command prompt as well as simple embedding as a scripting language in an existing Windows Presentation Foundation application. Via Overview at Microsft's Download website
Still, when I read this old news, I was surprised to see Microsoft's backing on Python where they will not be investing that much of money to see a dynamic language work. Anyways, as part of research found a very interesting comparision of Ruby, Java and C++ with Python by dmh2000. This comparision is just awesome.
conclusion
Java is more productive than C/C++. Use C/C++ only when speed or bare metal access is called for. Python/Ruby is more productive than Java and more pleasant to code in. There is a big question on static vs. dynamic typing. I contend that static typing has to be better for the purposes of program correctness, but the required cruft reduces productivity. If actual practice in large systems shows that in fact runtime typing errors don't occur often and are worth the productivity tradeoff, then I will bow to dynamic typing. I can't come up with a definitive answer to Python vs. Ruby. They seem very equivalent. Would choose based on practicality in a given situation. My general feeling was that Python annoyed me in ways that Ruby didn't, but I think those annoyances would disappear if I was using Python all the time.

Labels:


Vishal KHAPRE | Mi Marathi Manus@8:39 AM < (0) @ Add

. . ° º o O o º ° . .
Tuesday, August 22, 2006

Create a Thumbnail Image of web page

How do I create cached image of a webpage. I just wanted to create a thumbnail of a webpage based on URL. There is no way, you would find the right stuff to do so. I found Alan Dean's page on Generate an image of a web page. He has explained the technique very well. Described his search for such code. He wrote on his own. There are a very few people got it working. So here is the code, took me a lot of time to get it working. Read through the sample I added here very carefully before you copy the code as is. I tried my best to write all comments to make it easy readable.
Tried it in all possible ways to make it successful the way I wanted. This code works awesome but I wanted to use System.drawing very well to make it work. There is no way I could find to do this without using Win32 Api. Apart from that, I need to add the axWebBrowser control and it needs to be visible on form in order to find the image of the web page. Then how do I do it on the fly on my website. There must be a way to create a thumbnail from webpage with out adding ActiveX controls....
Good Luck!! Let me know if this works for you.

'*************************************************************************
'This is main form Class where you will add the basic functions.
'*************************************************************************


Imports
SHDocVw ' Import the shdocvw.dll from Widnows\System32 folder.

Imports mshtml  ' Import the mshtml.dll from Widnows\System32 folder.

Imports System.Runtime.InteropServices ' Need this as we added above two as Interop


Imports
System.Windows.Forms


Public
Class Form1


   
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load


        'Add the axWebBrowser control from SHDocVw library to your form name it as axWebBrowser
        'Add the Event Handler as DocumentComplete, because we need to capture screen image when document is completely loaded.
        AddHandler axWebBrowser.DocumentComplete, AddressOf Me.OnDocumentComplete

        End Sub

      Private Sub OnDocumentComplete(ByVal sender As Object, ByVal e As AxSHDocVw.DWebBrowserEvents2_DocumentCompleteEvent)

 
       
Dim document As IHTMLDocument2 = CType(Me.axWebBrowser.Document, IHTMLDocument2)

        If Not (document Is Nothing) Then

            Dim element As IHTMLElement = CType(document.body, IHTMLElement)

            If Not (element Is Nothing) Then

                Dim render As IHTMLElementRender = CType(element, IHTMLElementRender)

                If Not (render Is Nothing) Then

                    ' Using

                    Dim graphics As Graphics = Me.pictureBox.CreateGraphics

                    Try

                        Dim hdcDestination As IntPtr = graphics.GetHdc

                        render.DrawToDC(hdcDestination)

                        Dim hdcMemory As IntPtr = gdi32.CreateCompatibleDC(hdcDestination)

                        Dim bitmap As IntPtr = gdi32.CreateCompatibleBitmap(hdcDestination, Me.axWebBrowser.ClientRectangle.Width, Me.axWebBrowser.ClientRectangle.Height)

                        If Not (bitmap = IntPtr.Zero) Then

                            Dim hOld As IntPtr = CType(gdi32.SelectObject(hdcMemory, bitmap), IntPtr)

                            gdi32.BitBlt(hdcMemory, 0, 0, Me.axWebBrowser.ClientRectangle.Width, Me.axWebBrowser.ClientRectangle.Height, hdcDestination, 0, 0, CType(gdi32.TernaryRasterOperations.SRCCOPY, Integer))

                            gdi32.SelectObject(hdcMemory, hOld)

                            gdi32.DeleteDC(hdcMemory)

                            graphics.ReleaseHdc(hdcDestination)

                            'Add a PictureBox control to your form, named pictureBox. This way you can 
                            'see the image immediately after it is generated. You can save to FS using Bitmap.Save method.

                            Me.pictureBox.Image = Image.FromHbitmap(bitmap)


                       
End If


                   
Finally

                        'You must dispose Graphics Object for better use.

                        CType(graphics, IDisposable).Dispose()

                    End Try

                End If

            End If

        End If

    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        ' Add a button to you form named Button1. 
        ' This way we can control when we want to start Browsing.
        ' Select the URI to be browsed here.

        Me.axWebBrowser.Navigate(New Uri("http://www.khapre.org"))

 

    End Sub

End Class

'*************************************************************************
'This class for dummy for calling GDI Functions from Win32 Api.
'So that you can encapsulate whole GDI work outside. 
'*************************************************************************

Public Class gdi32

    ' I copied all the signatures in this class from http://www.pinvoke.net 

 

    Public Declare Function DeleteDC Lib "gdi32.dll" (ByVal hdc As IntPtr) As Boolean

    Public Declare Function SelectObject Lib "gdi32.dll" (ByVal hdc As IntPtr, ByVal hgdiobj As IntPtr) As IntPtr

    Public Declare Function CreateCompatibleDC Lib "gdi32" (ByVal hDC As IntPtr) As IntPtr

    Public Declare Function CreateCompatibleBitmap Lib "gdi32" (ByVal hDC As IntPtr, ByVal nWidth As Integer, ByVal nHeight As Integer) As IntPtr

    Public Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As IntPtr, ByVal x As Integer, ByVal y As Integer, ByVal nWidth As Integer, ByVal nHeight As Integer, ByVal hSrcDC As IntPtr, ByVal xSrc As Integer, ByVal ySrc As Integer, ByVal dwRop As Integer) As Integer

    Enum TernaryRasterOperations As Integer

 

        SRCCOPY = 13369376      'dest = source

        SRCPAINT = 15597702     'dest = source OR dest

        SRCAND = 8913094        'dest = source AND dest

        SRCINVERT = 6684742     'dest = source XOR dest

        SRCERASE = 4457256      'dest = source AND (NOT dest )

        NOTSRCCOPY = 3342344    'dest = (NOT source)

        NOTSRCERASE = 1114278   'dest = (NOT src) AND (NOT dest)

        MERGECOPY = 12583114    'dest = (source AND pattern)

        MERGEPAINT = 12255782   'dest = (NOT source) OR dest

        PATCOPY = 15728673      'dest = pattern

        PATPAINT = 16452105     'dest = DPSnoo

        PATINVERT = 5898313     'dest = pattern XOR dest

        DSTINVERT = 5570569     'dest = (NOT dest)

        BLACKNESS = 66          'dest = BLACK

        WHITENESS = 16711778    'dest = WHITE

    End Enum

End Class


'Check out Alan Dean's explaination, because I don;t get it. He is smarter than me, so I just believed that it works.
<Guid("3050f669-98b5-11cf-bb82-00aa00bdce0b"), System.Runtime.InteropServices.InterfaceTypeAttribute(System.Runtime.InteropServices.ComInterfaceType.InterfaceIsIUnknown), System.Runtime.InteropServices.ComVisible(True), System.Runtime.InteropServices.ComImport()> _

Interface IHTMLElementRender

    Sub DrawToDC(<System.Runtime.InteropServices.In()> ByVal hDC As IntPtr)

    Sub SetDocumentPrinter(<System.Runtime.InteropServices.In(), System.Runtime.InteropServices.MarshalAs(UnmanagedType.BStr)> ByVal bstrPrinterName As String, <System.Runtime.InteropServices.In()> ByVal hDC As IntPtr)

End Interface

 

 

 

Labels:


Vishal KHAPRE | Mi Marathi Manus@10:51 AM < (1) @ Add
Wednesday, May 16, 2007 3:09:00 PM
Anonymous Alan Dean says....

I have been moving my old entries across from dotnetjunkies to my new domain.

As part of that process, I have been reworking some of the content, where it was worth keeping. The "[How To] Generate an image of a web page" has been extensively rewritten and I have also made a Visual Studio 2005 solution available for download as well.

See http://thoughtpad.net/alan-dean/web-page-image-thumbnail.html

Thanks for the credit given :-)


. . ° º o O o º ° . .
Thursday, July 27, 2006

Competition - MSN - Google - We sing Kajara re


About 8 months back I uploaded whole Diwali Party on Google video. Thought it was awesome. Then here it is MSN Video a product of competition. I am so happy to see this. This competition has given us Windows Live, a next generation of web accessories from MS. Though these Live tools are a long way from beating Google's Froogle, Spreadsheet, Notebook, Reader. Both of these competitors are more or less in BETA mode, but their products are very usable. I personally use them. Yahoo!! is also not away from competition, try Yahoo's Farechase. I really dont care who wins, I know, whoever wins will be the best product. There is so much of population, so nobody will be out of business, unless they are bought by other.
Try out the new Notebook from Google. I requested Google to provide RSS feed for the Public notebooks. Then I can read other feeds and make notes on MSN Live pages or Google Reader. This competition has also given us the 2 GB Email space. Gmail started this trend and now anyone who is less than 2 GB is out of business. Gmail provides an edge over as it is ever growing space. MSN Live Beta has also started a trial for Hotmail with 2 GB. You have to sign up for that.
The best thing out of competition is handshake betweeen Yahoo Messager and MSN Messenger. The Windows Live Messager Beta can talk to Yahoo Messenger with Voice and vice versa. Read this MS Note and Yahoo Note. In Hindi, "Dushman ka dushman, dost hota hai!!", means "Enemy's enemy becomes your friend". Bottom line, this competition is giving us great tools online, some slick web programming from giants. We all sing "Kajara re!!".

Labels:


Vishal KHAPRE | Mi Marathi Manus@8:47 AM < (0) @ Add

. . ° º o O o º ° . .
Monday, July 11, 2005

scanf : 'floating point formats not linked'

Have you seen this error in your C or C++ programs, the programs are very simple,
float myFloat; scanf("%f",&myFloat); /* This step results in abnormal termination or program with an error as scanf : floating point formats not linked. */
This can be seen at runtime, when the line is called during execution, there is a great chance based on platform and compiler, you will see this error. I discovered this during development of linked list program which would have some float manipulation. After a considerable research I realised that, it can happen when I am using the Borland C++ or Turbo C as compiler.
"Floating point formats not linked" is a Borland run-time error (Borland C or C++, Turbo C or C++). Borland's compilers try to be smart and not link in the floating- point (f-p) library unless you need it. Alas, they all get the decision wrong. One common case is where you don't call any f-p functions, but you have %f or other f-p formats in scanf() or printf() calls. The cure is to call an f-p function, or at least force one to be present in the link.
- via Jeffc.com
"jeffc.com" also talks about solution, and it works as follws.
To do that, define this function somewhere in a source file but don't call it: static void forcefloat(float *p) { float f = *p; forcefloat(&f); }
It doesn't have to be in the module with the main program, as long as it's in a module that will be included in the link. If you have Borland C++ 3.0, the README file documents a slightly less ugly work-around. Insert these statements in your program: extern unsigned _floatconvert; #pragma extref _floatconvert
This also means that you might not see this on some platforms like linux, and AIX versions. I could not replicate that on any other platform than Windows.

Labels:


Vishal KHAPRE | Mi Marathi Manus@10:08 AM < (0) @ Add

. . ° º o O o º ° . .
Monday, March 01, 2004


Look@Microsoft Shared Source Initiative
Microsoft after a long time of legal battles, is releasing Windows source code to customers, Goverments and partners and also to developers. Off course one needs to accept the Shared Source Licensing Terms from Microsoft. There are several modles are opened up for making this a success. That definitely means the source code is not for everybody.
Through the Shared Source Initiative, Microsoft advances several important objectives:
  • Bolster the freedom and success of customers, partners, researchers, and developers by affording them expanded access to source code.
  • Enable Windows users to ensure the integrity and security of their computing environments.
  • Enrich the development community by providing the tools to produce outstanding software.
  • Improve feedback processes that play a critical role in developing better Microsoft products for business and individual consumers of software.
  • Enhance educational opportunities and to cultivate a vigorous software industry of the future by placing technology in the hands of universities throughout the world.
  • Preserve the intellectual property rights that historically have fostered unparalleled innovation and growth in the global software industry.
You can actually get the Windows source code under the enterprise licensing, Windows CE source code, Smart Devices Developer samples, C#/JScript/CLI Implemetation all for free of cost. I really didn't believe that unless I downloaded the Windows CE source code.

Labels:


Vishal KHAPRE | Mi Marathi Manus@11:33 PM <

. . ° º o O o º ° . .
Friday, February 27, 2004

Analysing Windows Hang or Crash Dumps

Analyzing Windows Hang Dumps
All we know is how to analysing the Windows Dumps, they provide all valuable information about how to analyse, what happened in Windows memory that moment. This gives out all the information we need for finding out the cause behind the problems.
Once those dumps are made you can analyze all the threads and also the objects running in memory. You can grab along the hang dump, the application dlls loaded in memory.

There is a lot of interesting information all over internet. Most of them talk about working with old VS 6 version of MS code. There are hardly any websites which talk about the .NET CLR debugging except
"Production Debugging for .NET Framework Applications "
"SOS Debugging of the CLR, Part 1"
They are the ones who talk about the debugging, the first one is way more deep.


Get the Debug Tools for Windows, just download and install.
Most important thing in analysing those is to get the symbols. Symbols for you application files is easiest to get. Otherwise you have to search on Microsoft site for the CLR symbols. There is facility by which you can set up an environmental path "_NT_SYMBOL_PATH", set it to value like "SRV*c:\symbols\web*http://msdl.Microsoft.com/download/symbols; c:\symbols\app;c:\symbols\os;C:\SYMBOLS\SOS". This is the first thing you want to do. It has few more details involved.

"SRV*c:\symbols\web*http://msdl.microsoft.com/download/symbols" - Tell WinDBG to download the Operating system symbols to download, and where to download and from where.

You can download the symbols on you own and keep it on hard drive, they are available at DDK website of Microsoft. Beware to download the symbols you want. Gather the symbols for your application too.

Then most important thing you want to do it to get then is .NET CLR symbols. We need those if you have to get the .NET stuff debugged properly. There are symbols for the MSCORSVR.dll and MSCORWKS.dll. They form the major part of the .NET framework. These dlls are the available from Microsoft here. They attach the standard 1.0 dlls. I am not sure how you get those, symbol files for 1.1. I didn't get them at all. If somebody knows please let me know more about them. You would be surprised they are for the Framework versions as 1.0.3705. 0, 1.0.3705. 209, 1.0.3705.288 and 1.3705.0.352 only. The documentation for SOS usage is available in Framework SDK 1.1 at path "SDK\v1.1\Tool Developers Guide\Samples\sos". You can get the code also for the same from SSLI, download here.
Note that the base version is for 1.0.3705.0 , then the service packs or hot fixes change the version of the framework, though they all are under the 1.0 framework. There is a KB article on MS TechNet which describes how to determine the version of framework you are running. I would suggest not to use that as it just looks for the version of MSCORCFG.dll and NOT MSCORLIB.dll, MSCORSVR.dll and MSCORWKS.dll. The other three assmblies actually form the basic framework. The service packs or the other hot fixes upgrade the version of these dlls but the MSCORCFG.dll remains at base version. So it is kind of unreliable. So I just checked the version of those dlls to confirm. If you have other versions than those, god help you I could not find the BIN files for those.
Then you have to load the psscor.dll and then make a command as !findtable provide it path for you .Net SOS symbol BIN files (C:\symbols\sos may be). If this runs good, you have all setup for running the debug mode. The psscor.dll is only for asp_wp process. You might need to find more for all other if you are using something else.

There is set of command you can use for accessing and then finding out more about the WinDbg tool. Run the command as !help on command prompt in the WinDbg you should be able to get all te SOS commands list. I really wanted to publish the list of commands but still I have digged into them that hard. Just learning!!!

The !dumpMT and !dumpModule allow more insight on the Method table and also the modules loaded in the memory. There is still lot to be found in great details. There are some basic commands for the finding out more about the threads and thread pools, they not exactly for managed code.

I need to read more on the managed thread pools. They also provide valuable information on the memory dump analysis. The '!dumpallexceptions' command after loading the psscor, will dump all the unique exceptions in the memory. This will also list the count of the exceptions listed. The '!thread' command provides the context, state, exception, GC, domain and thread locks. The 'Production Debugging' article link in the top has a whole section written for how to set the breakpoints and deep debugging techniques for the thread contention problems.


Note: Update 01/30/2006 If you are debugging, .Net Framework 2.0 or 1.1.4322, use the SOS.dll from the one provided with framework. For more information you can check this site.

Labels:


Vishal KHAPRE | Mi Marathi Manus@3:16 PM <

. . ° º o O o º ° . .
Monday, October 20, 2003

Debugging Windows Services using Microsoft Visual Studio .NET

Everybody working on MS platform understand what pain was it to write the Windows services before .NET platform. Though .NET takes care a lot of things on Windows Services development, we do not have sufficient power of debugging enhanced. I wanted to have some methods to do the same. Here is the jist of what I found, though it looks a kind of scattered but that is it and is much better than I found it.

Method 1 : The this one really speaks about debugging them in-proc using a work around of Dummy Service. "Attaching to the service's process allows you to debug most but not all of the service's code; for example, because the service has already been started, you cannot debug the code in the service's OnStart method this way, or the code in the Main method that is used to load the service. One way to work around this is to create a temporary second service in your service application that exists only to aid in debugging. You can install both services, and then start this "dummy" service to load the service process. Once the temporary service has started the process, you can then use the Debug menu in Visual Studio .NET to attach to the service process."
Sometimes it does not make any sense to have some more code written just to debug some code. This is bit useful and a sure method of testing that the debugging works.

Method 2 : This one allows you to debug the OnStart using the some different line of code and explicitly calling the OnStart Method, which I used to debug.
Writing a small main routine and then working it out, makes sense but in this case the service does not remain a service, when I tried to work this out, I could debug the service but it lost the track of VSS attached with this. Shashi says this might be because of adding the main routine in the program it changed the type of the project and then it lost the track of VSS. Doesn't this mean my project is wasted now. Remember after you remove the main routine back to the original, does not mean the project type is changed back to OS service again.

Method 3:This one is for the reference, I could start the debugger as specified by the article, instead of MSVC, I added the fully qualified DEVENV.exe. This opens a new Solution for debugging offcourse it does not have any code in that to put the break points and to step-in. It even overrides the 30 second limit of service startup. MSDN does not speak how to attach an existing solution/Project to this solution, or opening an existing solution to debug. How can I attach the PDB file or the solution so that I can debug the same? This is a valid request for all of the world of developers (should I say debuggers?).

Labels:


Vishal KHAPRE | Mi Marathi Manus@12:17 PM <

. . ° º o O o º ° . .
Sunday, September 28, 2003


Using Group Policies in Windows XP
In Windows XP professional check out this following procedure to see the what you can on the local machine.
To set Terminal Services policies settings for a particular computer or for users of that computer, open the Group Policy snap-in to edit the Local Group Policy snap-in.
The Terminal Services group policies are not configured by default. You can configure each Group Policy to be either disabled or enabled.
  • From the Start menu, click Run, type mmc, and then click OK.
  • On the File menu, click Add/Remove Snap-in.
  • In the Add/Remove Snap-in dialog box, click Add.
  • In the Add Standalone Snap-in dialog box, click Group Policy, click Add, and then click Finish.
  • In the Add Standalone Snap-in dialog box, click Close.
  • In the Add/Remove Snap-in dialog box, click OK.
  • In the console pane, you can see total new world of settinsgs you can make for the administration on the workstation, I am damn sure these settings can be done using the scripting or registry changes. But not necessary you have to use the scripts for all the purpose. I kinda liked this user interface. For somebody who want to check what happened when he executed the script. Here is the cool interface.

    I searched it when I had about 100 servers to remember so wanted to device a list of all RD Connections in my single console for the mmc where I control all the snap ins like MQ, IIS, Computer management, .Net Framework configuration and Biztalk server. Still searching for it.

    Using this Group Policy snap-in, you can change and configure the settings of all the components at computer level or at user level for Internet Explorer, Network settings, Software restrictions, Windows Components, desktop control panel. It is really cool to have everythign setup in a single screen.

    Labels:


    Vishal KHAPRE | Mi Marathi Manus@12:12 PM <

    . . ° º o O o º ° . .
  • Saturday, September 27, 2003


    Compare Microsoft Programmming Languages
    In the development, more important is to choose a language. In Microsoft .NEt technologies, it really does not matter, the laguage you are programming. Still there some features and briliances of individual languages. Visual C#.NET and VC++.Net have pointers where as the VB.NET does not.

    We're always going to have a half a million or 50 million religious VB programmers. But guess what? We have VB in .NET. And now we have Java language in .NET. We've even got COBOL!" – Tim Huckaby, President and CEO, Interknowlogy

    Programming languages are an inherently personal choice, one based on a number of factors. Rather than force programmers to adopt one language over another, Microsoft provides a platform on which a number of languages—C++, Objective-C, Fortran, COBOL, Visual Basic®, Perl—can each flourish and enjoy full access to the power and flexibility of the .NET Framework.

    For its part, Microsoft offers four programming languages and associated development environments, each designed to appeal to a particular school of programmer:

    Visual Basic .NET, the latest version of the world's most popular development tool and language. Visual Basic .NET delivers unsurpassed productivity and unique language features for task-oriented developers building solutions with the .NET Framework.

    Visual C++® .NET, the tool of maximum power and control. With the C++ language, power-oriented developers can bridge platform technologies and build both native Windows-based and .NET-connected solutions with maximum performance characteristics and enhanced functionality.

    Visual C#® .NET, the modern and innovative programming language and tool. Introduced in 2001, C# offers a familiar syntax, that is attractive to C++ and Java developers, along with unique language constructs that offer code-focused developers a more elegant experience when developing applications for the .NET Framework.

    Visual J#® .NET, the Java-language tool for Microsoft .NET. Visual J# .NET gives Java-language and existing Visual J++ developers complete access to the .NET Framework and the industry's most advanced XML Web services platform, while maintaining a familiar language and syntax.

    Labels:


    Vishal KHAPRE | Mi Marathi Manus@12:36 PM <

    . . ° º o O o º ° . .
    Tuesday, September 16, 2003


    Microsoft VirtualPC
    Microsoft VirtualPC is going to be one of the very revolutionary and powerful software virtualization. This can allow you to run mulitiple operating systems on ONE box. This VPC baught by MSFT from Connectix, the concept is being enhanced by MS and will eb available for all during fall this year.
    I had a chance to install it on my machine and run a couple of images around like Windows Server 2003 with BTS 2004 and also Winodws XP Pro. Could not add that to my office domain due to secrity reason but we can create the netted IP addresses with Virtual Switch for the same. Then you have a network running on your machine. All of the images running on your machien will have same IP Address so it is really confusing but they work well with the DNS names. Even they allow the connectivity on all ports like 139 means I could map the drive to host machine.
    The major one I faced in the BIOS for the images, is that the ACPI aware OS option. Yopu have to set this to "YES", trying to figure out why?
    What is ACPI?
    Newer computers feature ACPI (Advanced Configuration and Power Interface), which extends the APM concept to enable the OS to selectively control power. ACPI supports a variety of power states. Each state represents a different level of power, from fully powered up to completely powered down, with partial levels of power in each intermediate state. Power states include:
    Power State Description
    S0 - On and fully operational
    S1 - System is in low power mode (sleep mode). The CPU clock is stopped, but RAM is powered on and being refreshed.
    S2 - Similar to S1, but power is removed from the CPU.
    S3 - Suspend to RAM (standby mode). Most components are shutdown. RAM remains operational.
    S4 - Suspend to disk (hibernate mode). The memory contents are swapped to the disk drive and then reloaded into RAM when the system is awakened.
    S5 Power off

    Some newer ACPI aware operating systems, such as Microsoft Windows* 98 SE, Windows Me, Windows 2000 and Windows XP*, only support remote wake-up from standby or hibernate mode (S3 and S4). Remote wake can be initiated by a variety of user selectable packet types and is not limited to the Magic Packet format. For more information about supported packet types, see the operating system settings section.
    I will write more when I will find more. But seems like to have the operating system images run better we have to say "YES" in the settings.

    Labels:


    Vishal KHAPRE | Mi Marathi Manus@12:02 PM <

    . . ° º o O o º ° . .
    Tuesday, July 01, 2003


    Simplifying Development with DDK Macros
    [via OSROnline] by Don Burn
    Don starts with the basic idea of a macro in my beloved "C". The whole concepts starts and ends in different macros used all ove Windows Device Driver Development. Check out this article. He does speak about NT_STATUS, data alignment, constant strings, parameter macros and compile time asserts statements. It is not exhaustive enough to get the concept but definitely good to start believing in macros.

    Labels:


    Vishal KHAPRE | Mi Marathi Manus@12:27 PM <

    . . ° º o O o º ° . .


    Windows Driver Framework Chat
    The idea of Driver Framework, is to provide a best platform unified source for driver development on Windows Platform. Check out the transcripts of the chat on the same. They have tried to answer all possible questions and then we get totally a new idea for the driver development.

    Labels:


    Vishal KHAPRE | Mi Marathi Manus@12:26 PM <

    . . ° º o O o º ° . .
    Sunday, June 22, 2003


    Can you really port a Windows device driver to Linux?
    Actually "NO", but just during the search found a very good article on this issue. What really matters when you are a hardware manufacturer or developer. Whether the term "port" is appropriate depends on how much of the device driver code is Windows-specific. If most of the code is concerned with controlling the device, then it seems reasonable to call it "porting". If most of the code is concerned with the Windows API, then it would be more appropriate to call it "re-writing". Whatever you call it, being able to refer to the source code of a working Windows driver can help us with the implementation of a Linux driver - particularly by alerting to us to potential problems in the hardware interface that may not be immediately apparent from the hardware documentation.
    It may also be case changing the way we write drivers to eliminate the Widows specific code or by modulating it in the functions so that it becomes easy to replace. The first option is always bad because it may get into performance related issues over the time and would require a lot of testing for a small small functions. [via : WingPath Software]

    Labels:


    Vishal KHAPRE | Mi Marathi Manus@12:28 PM <

    . . ° º o O o º ° . .
    Thursday, June 19, 2003


    Driver for Toshiba Bluetooth PC Card
    About 7 months back, I baught a Bluetooth PCMCIA Card Toshiba PA3053U - Bluetooth CardToshiba PA3053U, but unfortunately they provide CD for Windows 2000. After a lot of research I made for the drier, I could not find the drivers. then decided for the support from Toshiba for the drivers. Being a Compaq, Sony customer earlier, I couldn't wait for more than 20 minutes on phone for the CSR, I decided to throw the card and buy a new one. Fade up with all these things, I was doing something on google search, and found a link where ZDNet published a review for the same card, delightedly I read the article and the last link was for the manufacturer and it came out to be Toshiba, Australia where they have the driver for Toshiba PC Card on Windows XP platform.
    Finally, I am using my Compaq iPaq Pocket PC in "Sync" with my laptop over Bluetooth Tooth. Overall summary is thanks to ZDNet and Toshiba is horrible in support. Their sites are not linked worldwide.

    Labels:


    Vishal KHAPRE | Mi Marathi Manus@12:31 PM <

    . . ° º o O o º ° . .
    Friday, May 09, 2003


    Bill Gates Unveils Next Wave of Windows PC Innovation
    NEW ORLEANS -- May 6, 2003 -- Bill Gates, chairman and chief software architect at Microsoft Corp., today unveiled a new PC prototype designed to enhance today's computing experience and usher in the next wave of innovation for the PC industry during his opening keynote at the 12th annual Windows� Hardware Engineering Conference (WinHEC). Gates showed the new PC prototype as just one example of the type of innovation required to address the needs of users -- innovation that is only possible when hardware and software are developed together. Co-developed with HP and code-named "Athens," the advanced PC prototype represents an evolution of the PC as a center for communication and collaboration, one that simultaneously simplifies PC operations while merging all forms of communication -- including next-generation voice, video and text messaging -- into a consistent, streamlined design.

    Labels:


    Vishal KHAPRE | Mi Marathi Manus@12:32 PM <

    . . ° º o O o º ° . .
    Tuesday, March 18, 2003


    "Driver Protection List for Windows XP and Windows .NET Server"
    Windows XP Home and Pro versions along with the .NET Server family of Microsoft have a continuously active feature of the Driver Protection List on machine. They stop the unnecessary drivers from loading to the syatem which are known for system instability. The list is always active in the memory all the time, during the upgrade of the platform and runtime. It is something which is discouraged to be disabled. I am not sure but Microsoft says, it is based on the same way the Compatibility of applications is build in Windows XP Editions.
    The Driver Protection module of XP is called whenever the request for the driver comes to the system, the CreateObject(PDRIVER_OBJECT) call. The system checks the driver protection list, an encrypted database within the "Mysterious" operating system, and then allows to load the same. The Driver Protection List, the same said databse is updated by consultation with the vendors and Microsoft. This database is supposed to be updated frequently by the Dynamic and Critical System Updates, a feature of XP. (Another reason to keep the windows update service running). Waiting to see how the list looks like and must be available on http://www.microsoft.com/hwdev/ in future for download.
    This driver protection is last one to solve the errant drivers, can be considered as the low level kernel feature. Microsoft says, this feature will stop the drivers from loading, but the will nto be able to stop the applications from loading, this will give us the error I guess as the "Windows Protection Fault".
    Every time, the end user gets the error for the driver, the error reporting service picks up the data and sends to Microsoft which is used to update the Protection List Database. Most of these drivers, usually available in the Windows Compatibility Database. The error or warning whenever the applications requiring the blocked drivers are loaded/installed, can be from Windows XP Advisor/Setup/Runtime. The matching of driver and the database is based on the sys file of the same, and totally independent of the Hardware ID and any other files used for driver or application. This can be the sys file name, linking date of the file, product version and few more may be, but always more than one criteria is matched before blocking the driver.

    Labels:


    Vishal KHAPRE | Mi Marathi Manus@1:32 PM <

    . . ° º o O o º ° . .
    Friday, January 31, 2003


    Device Drivers and Processors
    Windows NT and the XP support multiprocessor architecture. Windows platform holds conditions true as
    1. All CPUs are identical and also they have no or identical co-processor.
    2. All CPUs share memory or have access to the System memory.
    3. Considering the sysmmetric platform, all CPUs take inturrupts, access memory or I/O Control registers.
    Isn't this all good and makes easy for a programmer?
    Windows NT and XP are designed to work on SMP platform. Similar to all other SMP operating systems Windows also take care that the driver sensitive data does not get modified by more than one processor at the same time.
    The Spinlocks I wrote about yesterday, are used to preserve the same. For example, a lowest-level driver's ISR that is handling a device interrupt on one processor must have exclusive access to critical, driver-defined data (or the device registers) in case its device interrupts simultaneously on another processor. Understanding the SMP environment, I/O Requests are completed by one processor and device communications are executed by another processor, in this case, the driver critical data has to be shared with all the driver routines.
    We cannot expect the any locking system without any policies. See what Microsoft says about this
    1 .Only one routine can hold a particular spin lock at any given moment; only the holder of a spin lock can access the data it protects. Another routine must acquire the spin lock in order to access the same data, but the spin lock cannot be acquired until the current holder releases it.
    2. Like a hardware or software interrupt vector, the Kernel assigns each spin lock in the system an associated IRQL value. A kernel-mode routine can acquire a particular spin lock only when the routine is run at the spin lock's assigned IRQL.


    Microsoft does accept the fact that these policies prevent a driver routine that usually runs at a lower IRQL but is currently holding a spin lock from being preempted by a higher priority driver routine that is trying to acquire the same spin lock, thereby causing a deadlock.

    DDK also says
    A lowest-level driver's ISR frequently shares a state area with the driver's DPC routine, which calls a driver-supplied critical-section routine to access the shared area. In this case, the spin lock protecting the shared area has an IRQL equal to the DIRQL at which the device interrupts. While the critical-section routine holds the spin lock and accesses the shared area at DIRQL, the ISR cannot be run in a uniprocessor machine because the device interrupt is masked off, as mentioned in Always Preemptible and Always Interruptible.And in a symmetric multiprocessor machine, the ISR still cannot acquire the spin lock protecting the shared data while the critical-section routine holds the spin lock and accesses the shared data at DIRQL

    Labels:


    Vishal KHAPRE | Mi Marathi Manus@1:36 PM <

    . . ° º o O o º ° . .
    Monday, January 27, 2003


    Programming the Microsoft Windows Driver Model, Second Edition
    by Walter Oney.

    Book is released on Dec 16,2002 by Microsoft but still not in market. Just ordered it an waiting for the ReadMe.doc to ship it me. I guess the long list of erratas are reduced. Oney writes very descriptive. The book will be full of diagrams, just waiting for it to be released.
    ** BOOKS **

    Labels:


    Vishal KHAPRE | Mi Marathi Manus@1:41 PM <

    . . ° º o O o º ° . .
    Friday, January 24, 2003


    Plug and Play Technology
    Properly implemented, Plug and Play provides automatic configuration of PC hardware and devices. For modern versions of Microsoft� Windows�, the system and its firmware must comply with Advanced Configuration and Power Interface Specification (ACPI). The driver architecture for Windows XP/2000 supports comprehensive, operating system-controlled Plug and Play.All drivers for all versions of the Microsoft� Windows� operating system should support Plug and Play. A major part of supporting Plug and Play is properly handing Plug and Play I/O request packets (IRPs). This article highlights the key rules that driver writers must follow when handling Plug and Play IRPs.

    Plug and Play technologies are defined for IEEE 1394, PCI, PC Card/CardBus, USB, SCSI, ATA, ISA, LPT, and COM.
    Each Plug and Play device must:
    1) Be uniquely identified.
    2) State the services it provides and resources it requires.
    3) Identify the driver that supports it, and allow software to configure it.

    Plug and Play drivers must adhere to the following rules:
    1. All drivers must have a dispatch routine for handling Plug and Play IRPs.
      A driver sets the address of the routine in DriverObject->MajorFunction[IRP_MJ_PNP] in its DriverEntry routine. This dispatch routine can be a separate DispatchPnp routine that only handles Plug and Play IRPs, or the driver can handle several IRP_MJ_Xxx codes in a single Dispatch routine.


    2. All function and filter drivers must pass Plug and Play IRPs down to the next-lower driver in the device stack unless such a driver fails the IRP.
      All drivers for a device must have the opportunity to handle Plug and Play IRPs for the device, unless a driver fails the IRP. The Plug and Play Manager sends IRPs to the top driver in a device stack. Function and filter drivers pass the IRP down to the next-lower driver and the underlying bus driver completes the IRP. For more information, see the following section, Passing Plug and Play IRPs Down the Device Stack.


    3. All drivers must handle certain Plug and Play IRPs and may optionally handle others.
      Each Plug and Play driver is required to handle certain IRPs, such as IRP_MN_REMOVE_DEVICE, and can optionally handle others. See the Setup, Plug & Play, and Power Management Reference in the Windows NT 5.0 beta DDK documentation for information on which IRPs are required and optional for each kind of driver.
      A driver can fail a required Plug and Play IRP with an appropriate error status, but a driver must not return STATUS_NOT_SUPPORTED for a required IRP.


    4. All drivers must handle a Plug and Play IRP in its Dispatch routine (on the IRP's way down the device stack), in an IoCompletion routine (on the IRP's way back up the device stack), or both, as specified in the reference page for the IRP.
      Some Plug and Play IRPs must be handled first by the driver at the top of the device stack and then by each next-lower driver, as is the case with IRP_MN_REMOVE_DEVICE. Some IRPs must be handled first by the underlying bus driver, as is the case with IRP_MN_START_DEVICE. Still other IRPs can be handled both on the way down the device stack and on the way back up, as is the case with IRP_MN_QUERY_CAPABILITIES. See the Setup, Plug and Play, and Power Management Reference in the Windows NT 5.0 beta DDK documentation for the rules that apply to each Plug and Play IRP.


    5. Drivers must add information to an IRP on the IRP's way down the device stack and modify or remove information on the IRP's way back up.
      When returning information in response to a Plug and Play query IRP, drivers must follow this convention to enable orderly information passing by the layered drivers for a device.


    6. Except where explicitly documented, drivers must not depend on Plug and Play IRPs being sent in any particular order.


    7. When a driver sends a Plug and Play IRP, it must send the IRP to the top driver in the device stack.
      Most Plug and Play IRPs are sent by the Plug and Play Manager, but some can be sent by drivers. A driver must send a Plug and Play IRP to the driver at the top of the device stack. Call IoGetAttachedDeviceReference to get a pointer to the device object for the driver at the top of the device stack.

    Labels:


    Vishal KHAPRE | Mi Marathi Manus@1:35 PM <

    . . ° º o O o º ° . .
    Monday, January 06, 2003


    Windows File search
    Do you know we cannot run a search on Microsoft Windows which returns more than 10,000 file, I myself tried it on Windows 95/98/NT. Its kinda different. Try searching *.* and check the results. Good news is it does not crash but gives a good message as the file search excceds the maximum searching capabilities.

    Labels:


    Vishal KHAPRE | Mi Marathi Manus@3:46 PM <

    . . ° º o O o º ° . .
    Friday, December 27, 2002


    cover Windows NT Device Driver Development
    by Peter Viscarola, W. Anthony Mason
    Sample Pages
    Paperback: 684 pages
    Publisher: New Riders Publishing; ISBN: 1578700582; 1st edition (November 10, 1998)
    The book is of the level that you can start from scratch. The slef experiences are described which are more important. By making a wonderful book calls the no Errata needs. A comprehensive index also plays part for reader to feel satisfied.
    Windows NT Device Driver Development is the definitive and comprehensive technical reference for software engineers, systems programmers, and any engineer who needs to understand Windows NT systems internals. You will learn: vital information about the internal design and architecture of the Windows NT operating system; Critical information on the implementation of standard Windwows NT kernel mode drivers; Key information on the workings of Windows NT I/O Manager, including how I/O requests are described and passed among drivers; and detailed technical information on interrupt management and synchronization issues.
    From the Back Cover
    Windows NT Device Driver Development is the definitive and comprehensive technical reference for software engineers, systems programmers, and any engineer who needs to understand Windows NT systems internals. You will learn: vital information about the internal design and architecture of the Windows NT operating system; Critical information on the implementation of standard Windwows NT kernel mode drivers; Key information on the workings of Windows NT I/O Manager, including how I/O requests are described and passed among drivers; and detailed technical information on interrupt management and synchronization issues.
    Authors
    Peter G. Viscarola is a founder of, and Consulting Partner at, Open Systems Resources (OSR), the world-renowned consulting firm specializing in Windows NT systems internals. During more than 20 years in the computer industry, including more than 10 years as an independent consultant, Peter has developed device drivers and protocol implementations under a wide array of operating systems. Since the release of Windows NT, Peter has designed or developed more than three dozen Windows NT drivers, including drivers for almost every type of programmed I/O and DMA device imaginable. Recent Windows NT driver projects include development of high-speed drivers for ATM[r], ISDN, and Frame Relay devices, as well as design of special Kernel mode drivers for a number of unique situations.
    W. Anthony Mason is an Open Systems Resources Consulting Partner with experience in a wide array of system software disciplines during the past 16 years. Tony is also an internationally recognized expert in file systems technologies. Among his recent projects has been the design and development of several Windows NT installable file system drivers, including both physical media file systems and networked distributed file systems.

    My Device Driver are also have some experiences from this book.
    **BOOKS**

    Labels:


    Vishal KHAPRE | Mi Marathi Manus@11:30 AM <

    . . ° º o O o º ° . .
    Thursday, December 12, 2002


    Talking more about the Kernel Mode and User Mode drivers
    The differences, I will continue to read and write about. These Kernel Mode Drivers continue to work as a part of Windows Executive and the provide inherent support to Windows Operating System Level Kernel mode functionality such as I/O, PnP, Processes, Threads, Security and memory and so on ..
    Some Kernel mode drivers can be the WDM drivers. They Conform to the needs of Windows Driver Model, I mean they support the PnP Architecture and also the powr management. Important hint is these WDM drivers support the source on most Windows platform but they are not binary compatible. My understanding is they need to be recompiled once on the specific DDK.
    Based on the fuctionality the Kernel mode drivers can be distingushed beteween three major categories.
    1) Highest level drivers
    2) Intermidiate level drivers
    3)Lowest level drivers.

    This diagram will make the ideas more clear.
    The Highest level drivers can be examplified as file system drivers (FSDs) such as NT, FAT or CDFS driver. They are system supplied. (If you want you can try the expensive Installable file System Kit from Microsoft.) These type of drivers have a very high level of dependency on one or more lower level(other two types) drivers. Lets say at least the PnP Hardware bus driver.

    Labels:


    Vishal KHAPRE | Mi Marathi Manus@1:38 PM <

    . . ° º o O o º ° . .
    Sunday, December 08, 2002


    Kernel Mode and User Mode
    The User mode drivers are allowed to use the Win32(r) API described by the Windows SDK where as the Win32 subsystem internally calls the exported driver and operating system kernel routines. The difference is vast just to understand and describe in few lines here. Lets try best, but better get the DDK installed to see the right one. The kernel mode drivers can use most of the routines exported by the Windows Operating System, these exported routines support the I/O, configuration, Plug and Play, power management, memory management, and numerous other operating system features. This is a very standard way of describing the way the Device Drivers are taught but definitely reading this will not suffice to introduce you to it.
    These two types differ in everything. The difference starts by the definition of DriverEntry routine. Every WDM driver has a entry point and this is used by the operating system to understand where to start the execution. Let me put it in other terms like this routine is called first when driver is loaded in the memory of the system. This routine describes the start of execution of the driver.
    The type of driver to be used or written is totally depends on the support provided by the Operating system. In vague language I can say, you may have to write a user mode device driver when the Operating system has the support means the Win32 subsyem has the capability to provide the routines, otherwise you dont have an option go for the Kernel mode driver and then all I can say is Best of luck...
    the other major difference is also the interrupts used by the same but lets leave something for tomorrow.

    Labels:


    Vishal KHAPRE | Mi Marathi Manus@1:39 PM <

    . . ° º o O o º ° . .
    Tuesday, December 03, 2002


    How to Write a Windows XP Driver
    MSDN is a vast resource of information indeed. Still I feel, it is half way for the DDK. In case of DDK and XP drivers more you explore more it gets confusing. this attempt is for making the related resources right at the single contact page. To begin with a person needs at least a suitable machine where he can install and play around with the system. If you are having a good working system, please understand that it is no more be useful. You keep all your restore CDs close by may be you will have to reinstall the operating system itself. I am very sure for atleast 30% times the WinXP System Restore will not work at all.
    While reading and searching more, I find the same SDLC (Systems Developement Life Cycle) getting repeated for Driver development also at a very vague level. 1) Requirements : Understand the Device needs and the Operating System Level Concepts. 2) Design : Decide at earlier stage, what you want an how you want. 3) Build-Test-Debug : The Key to better driver and avoiding the Win fame BSD (Blue Screen of Death). 4) Package it: Gift-wrap is needed for proper distribution. Support is indeed not needed... offcourse I am kidding, but being developer I never liked to support. Check out more from horse's mouth.

    Labels:


    Vishal KHAPRE | Mi Marathi Manus@1:40 PM <

    . . ° º o O o º ° . .


    Disabling Device Driver Update Wizard
    In this most user friendly, Windows family, the automatic driver update wizard is considered as the most useful resource for the all those who do not want to tweak with the Driver Database of the machine. This wizard gets to nerves when the Device driver tweaker comes to play. Change the Windows registry settings so this is wizard is disabled and Windows Update to locate updated drivers for hardware in Device Manager is stopped instantly.
    Registry Settings
    User Key: [HKEY_CURRENT_USER\Software\Microsoft\WindowsCurrentVersion\Policies\Explorer] Value Name: NoDevMgrUpdate Data Type: REG_DWORD (DWORD Value) Value Data: (0 = default, 1 = remove update)
    Be careful and this works for Win 98/NT/XP/ME.

    Labels:


    Vishal KHAPRE | Mi Marathi Manus@1:40 PM <

    . . ° º o O o º ° . .
    Saturday, November 30, 2002


    Interrupt Request Level (IRQL)
    Every Kernel developer is familiar with IRQL and Matt Wu has written an article to disclose it�s mysterious veil. See these are the definitions from DDK :

    The priority ranking of an interrupt. A processor has an IRQL setting that threads can raise or lower. Interrupts that occur at or below the processor's IRQL setting are masked and will not interfere with the current operation. Interrupts that occur above the processor's IRQL setting take precedence over the current operation.

    The particular IRQL at which a piece of kernel-mode code executes determines its hardware priority. Kernel-mode code is always interruptible: an interrupt with a higher IRQL value can occur at any time, thereby causing another piece of kernel-mode code with the system-assigned higher IRQL to be run immediately on that processor. In other words, when a piece of code runs at a given IRQL, the Kernel masks off all interrupt vectors with a lesser or equal IRQL value on the microprocessor

    Matt does explains the difference between the Thread Priorities and IRQL. Any thread, whatever its priority attribute, is always preemptible by a software or hardware interrupt. Every thread priority falls in to two classes, variable and real-time. These are sub divided in 16 levels 0-15 as variable and 16 to 31 are real time. The preemptive threads get into the Variable threads or I can say all the premptive threads are the variable priority threads. All the threads are preemptible by a software as well as the hardware interrupt.The thread priority only changes the decisions by system scheduler.
    On x86 CPU, there are only 4 rings which can be definied by 0,1,2,3 and Windows uses only 0 and 3 (0 is used by Kernel and 3 by the user). IRQL only exists in kernel space. For user space, it�s meaningless. All user threads are running at PASSIVE_LEVEL, though they can result in a task switch to kernel space and change the IRQL. They could not access the IRQL directly. Spin locks are always reliable for getting the control on the driver specific data. Actually they protect the shared data or device registers from simultaneous access by one or more routines running concurrently on a symmetric multiprocessor platform. Because after the SpinLock is acquired , the current IRQL will be DISPATCH_LEVEL and then the NT dispatcher (scheduler) preemption will be disabled. Just FYI and I also donn know much about this, SpinLocks have three types:
    1. Standard spin locks
    2. ISR synchronization spin locks. Each type has its own IRQL associations
    3. Default ISR (Interrupt Service Request) spin locks.


    Let me read more on spin licks then will write more.
    Refer :
    Understanding IRQL
    A Catalog of NT Synchronization Mechanisms - OSR 1997.

    Labels:


    Vishal KHAPRE | Mi Marathi Manus@1:37 PM <

    . . ° º o O o º ° . .
    Friday, November 29, 2002


    Windows XP Tip: Device Driver Rollback
    I will be starting with Windows Device Drivers again after a long time and posting the my learnings at Windows Device Driver Section. This area of Windows is always been a treasure for me. I could find lot of resources on Windows NT device drivers including books, articles, news groups, postings like
  • Windows NT/2000 Native API Reference by Gary Nebbett, 2000.
  • Undocumented Windows NT by Prasad Dabak, Sandeep Phadke & Milind Borate, 1999.
  • Developing Windows NT Device Drivers: A Programmer's Handbook by Edward N. Dekker & Joseph M. Newcomer, 1999.
  • Programming the Microsoft Windows Driver Model by Walter Oney, 1999.
  • Writing Windows WDM Device Drivers by Chris Cant, 1999.
  • Windows NT Device Driver Development by Peter G. Viscarola & W. Anthony Mason, 1999.
  • Inside Windows NT, 2nd Ed. by Helen Custer & David A. Solomon, 1998.
  • Windows NT File System Internals by Rajeev Nagar, 1997.
  • The Windows NT Device Driver Book (with Disk) by Art Baker, 1997.
        View the Table of Contents
  • Microsoft Windows NT Server Resource Kit by Microsoft Corporation, 1995.
  • Microsoft Windows NT Workstation Resource Kit by Microsoft Corporation, 1995.
  • Advanced Windows (with CD-ROM) by Jeffrey M. Richter, 1996
  • Inside the Windows NT File System by Helen Custer, 1994.
  • Networking Device Drivers by Sanjay Dhawan, 1995.



  • But there are no resources for writing drivers on Windows XP. I will be going through the process lets see what I find here at Windows Device Driver Section. Wish me luck!!!!!!!!!!!!!

    Labels:


    Vishal KHAPRE | Mi Marathi Manus@8:28 PM <

    . . ° º o O o º ° . .
    Monday, August 26, 2002


    Judge denies Microsoft motion in Lindows case
    A judge late Friday denied Microsoft Corp.'s request for a preliminary injunction against startup Lindows.com Inc., thus allowing the startup to continue selling its operating system under the name Lindows.
    Lindows is a version of Linux that its maker claims can run Windows programs.

    LindowsOS is a new operating system that delivers the power, stability and cost-savings of Linux� with the ease of windows.

    It is good bacause
    (1) A "Broadband OS"
    Connects users seamlessly to applications software via LindowsOS Click-N-Run technology
    (2) Affordable
    Only $99 for the OS and hundreds of software titles for home, business, and education
    (3) Easy-to-Experience
    * Comfortable, easy-to-use interface using windows, mouse, keyboard shortcuts, cut-n-paste, etc.
    * Compatible with files and data from older operating systems and applications (.doc, .xls, .ppt, .mp3, etc.)
    * Compatible with a few �bridge� Microsoft� Windows compatible applications to help users migrate to the new world
    * Over a thousand quality software titles can be added with just one click of the mouse
    * Friendly Install for users wishing to experience LindowsOS side-by-side with Microsoft Windows 98.

    Labels:


    Vishal KHAPRE | Mi Marathi Manus@6:43 PM <

    . . ° º o O o º ° . .
    Monday, August 19, 2002


    Imagine poeple use software to quit smoking cigarettes. Yes they are..
    The NO SMOKE software program for Windows can help you quit smoking. NO SMOKE is also used in schools to educate children about the dangers of cigarettes and tobacco.
    NO SMOKE isn't just one computer program. It is 12 programs in one. The program is filled with techniques and analysis sections that cover every aspect of the problem of quitting smoking.
    It is less than $20 + shipping .. Good Luck.

    Labels:


    Vishal KHAPRE | Mi Marathi Manus@9:17 PM <

    . . ° º o O o º ° . .
    Friday, August 02, 2002


    Josh Points to XWT, the XML Windowing Toolkit. It lets you write remote applications -- applications that run on a server, yet can "project" their user interface onto any computer, anywhere on the Internet. It already speaks XML and uses XML-RPC and has a mail client already written, modifying it to interface with the XMT API (or, the SOAP version that will emerge from it) should not be too difficult and would get us a quick cross platform client. The only problem is that XWT is significantly slower than an app already on your computer, and, on my mac at least, it tends to just open blank windows from jar files that I can only kill from the command line. ew. [weblog.masukomi.org]

    Labels:


    Vishal KHAPRE | Mi Marathi Manus@12:48 PM <

    . . ° º o O o º ° . .
    Thursday, July 11, 2002


    PC enthusiasts have long understood the benefits hard drive partitioning. Dividing a hard drive into several partitions lets you efficiently organize operating systems, programs, and data. Actually, modifying partitions was a difficult and time consuming task. There are two types disk managements, Basic and Dynamic, Windows XP and 2K allows both. Depending on your partition table you can make up to 128 partitions.
    If you still have Windows other than 2000 or XP, you got a choice of upgrading it or using PowerQuest's PartitionMagic.

    Labels:


    Vishal KHAPRE | Mi Marathi Manus@8:03 AM <

    . . ° º o O o º ° . .
    Monday, April 29, 2002


    It is really very hard to find error on Microsoft's Website. I was making a Wish for Windows Media Player so that Microsoft provides the way to edit the encodings of ASF,WMV etc. But when wished I got the error .... but donn forget to make a wish at Windows Media Wish
    Click to see full size image


    This Blog will not be updated for 6 Weeks from now. Vishal KHAPRE, undergoing CISA Exam on June 8, 2002. Wish me Luck !!!!!!

    Labels:


    Vishal KHAPRE | Mi Marathi Manus@9:47 AM <

    . . ° º o O o º ° . .