Monday, September 07, 2009

TechTipsNTricks - 24
Multi tabbed remote desktop client manager

Bugged of opening umpteen remote desktop clients - one for every session? Terminals is a multi tabbed terminal services/remote desktop client.
Download it from:

If you are not able to download TERMINALS, try to download MURD. Link: http://murd.en.softonic.com/


Wednesday, July 08, 2009

Where do i update the TECH links?

I use TWITTER to dump the technical and other non-technical links. What else can a software developer be putting on TWITTER - working, coding, unit testing, building, staring at the monitor, having yet another caffine dose, cribbing about his life, day dreaming, remembering golden college days, bird watching, browsing, or writing blogs.

Find out more:

TechTipsNTricks - 23
Tools for performance analysis

Seldom do developers run the tools to determine the performance of the applications that they have developed.

If you ever get a chance, get a list of cool performance analysis tools from:
http://en.wikipedia.org/wiki/List_of_performance_analysis_tools
TechTipsNTricks - 22
Tools for Static/Dynamic Code Analysis

List of tools for
- Static code analysis
http://en.wikipedia.org/wiki/List_of_tools_for_static_code_analysis
- Dynamic code analysis
http://en.wikipedia.org/wiki/Dynamic_code_analysis

Friday, June 26, 2009

ONE STOP INFO FOR ... C++ FAQs

http://www.parashift.com/c++-faq-lite/

TechTipsNTricks - 21
Multiple Tabbed VIM editor

Unix lovers want to edit every text file using VI/VIM editor(s). They always tend to install and use the vi editor on Windows machines.

Where do you find them? Here:
http://www.vim.org/download.php

Now, this doesn't support multiple tabbed editings. One needs to edit the files in multiple tabs, and that is really annoying.

So, there's some CREAM for your help.

Download it from:
http://cream.sourceforge.net/download.html

Wednesday, June 24, 2009

ONE STOP INFO FOR... : WINDOWS KERNEL PROGRAMMERS


BOOKS : DEVICE DRIVER

1)Windows NT Device Driver Book, A Guide for Programmers

- Art Baker

Addison Wesley Longman Publication


2)Developing Win NT Device Drivers:

A Progarammer's Handbook

- Edward N. Dekker, Joseph M. Newcomer

Addison Wesley Publication


3)Windows NT Device Driver Development

- Peter Viscarole, Tony Mason

Techmedia Publication


4)Programming the Microsoft Windows Driver Model

-Walter Oney

Microsoft Series


5)Windows NT

File System Internals

A Developer's Guide

- Rajeev Nagar

O'reilly Publication


6)Win32 System Programming

- Johnson Hart



BOOKS : WINDOWS INTERNALS

1)Inside Windows NT

- Custer Helen


2)Inside Windows NT

- David Solomon



PERIODICALS/JOURNALS

"The NT Insider" - http://www.osr.com

"Windows NT Magazine" - http://www.winntmag.com

"Dr.Dobb's Journal" - http://www.ddj.com



PERIODICALS/JOURNALS

DDK - http://www.microsoft.com/ddk

Platform SDK - http://www.msdn.microsoft.com/library/psdk/portals/mainport.htm

IFT KIT - http://www.microsoft.com/ddk/IFSKit

(http://www.microsoft.com/ddk/IFSkit/testing.asp)



WEBSITES

http://www.microsoft.com

http://www.osr.com

http://www.sysinternals.com

http://www.numega.com



IMPORTANT LINKS

http://www.osr.com/book

http://comp.os.microsoft.mswindows.programmers.nt.kernel-mode

http://www.microsoft.public.win32.programmer.kernel



FAQs : Drivers

http://www.cmkrnl.com/faq.html

http://www.chsw.com/ddk/

http://www.asktheoracle.com/driver/

http://faqs.org/faqs/windows/programming/vxd/

http://win32asm.rxsp.com/vxd-tut3.html



Windows 2000 Symbols

http://www.microsoft.com/Windows2000/downloads/tools/symbols/download.asp

Note:-

The order doesn't signify anything. It's the order in which I recollected & typed the information.


ONE STOP INFO FOR ... M$ Interview Questions

How would you move mount Fuji

Buy it/Download it.
ONE STOP INFO FOR ... Writing a Simple File System

1
ONE STOP INFO FOR ... for Function Pointers
The Function Pointer Tutorials


ONE STOP INFO FOR ... Bit Manipulation

Bit Twiddling Hacks

http://graphics.stanford.edu/~seander/bithacks.html

How to create a project in MS Visual Studio 2005?


Background:
When Visual Studio is clicked for 1st time, click on Run Program(if it is Vista) and click on "Visual C++" so that Visual C++ Settings are made.

Attached documents:
1. Project file created. Just click on " HelloWorld.vcproj" file - it opens the project
2. Image shows how the IDE looks when the "Hello World.c" file is added.

When Visual Studio opens:
1. File - > New Project -> Choose Visual C++ on left pane -> Click on "Win32 Console Application" on the right pane.
2. Enter the location:
ex: C:\SourceCodeProjects
and name of the project under Name field:
ex: HelloWorld
3. Click "OK"
4. Press "Next" in the wizard dialog.
5. Click on "Empty Project" under "Additional options". Press Finish
6. Go to the following location where the project is created.
ex:
C:\SourceCodeProjects\
HelloWorld2\HelloWorld2
7. Create "HelloWorld.c" file with Hello-World program.
(i) Right click on "Source Files" (hich is shown under the project in Visual Studio 2005). Click on "Existing Item" under context menu. Click Add.
OR
(ii) Drag and drop this program on the left pane where "Source Files" is shown under the project in Visual Studio 2005.
8. Click on Build Solution

(You can remove the following 2 lines.

int global_int;
#define GLOBALS 1

It just shows how the left pane helps in navigating and seeing the code at exact location.

How to debug?
1. Press breakpoint by pressing F9.
2.
You can now click away at F10 (Step Over), F11 (Step Into) and F5 (Continue)

Happy Programming!!

How to compile and debug on LINUX machine (or on CYGWIN env in Windows)?


1. How to compile?
gcc hello.c

(On Linux, it creates a.out
On CYGWIN, it creates a.exe)

Note:-

This program cannot be debugged


2. How to compile & debug?
gcc -g hello.c -o hello.exe
(-g option is used to include global symbols. Without global symbols, debugging information will not be in the binary)

Debug:
gdb
>file

ex:
file ./hello.exe
> b main
(keep a breakpoint at main)
> run
( to execute the program. it hits the breakpoint at main)
> p

ex: p a
p b
p c
(displays the variable)
> set language c
> set variable
=
value>
ex:
set variable a=1000

ECLIPSE ON CYGWIN


I've jotted down the steps. I hope it facilitates when you are putting the code in Eclipse environment.

Assumptions:
1. Install Eclipse, and

2. Install CYGWIN
3. Ensure CYGWIN is installed, and make/gcc/g++ run in the cygwin env(or when cygwin execsutables are in the PATH env)
To test if cygwin was installed correctly open a command prompt and type g++ or make.
The following error message means that no make is installed or your path is not configured correctly.
'g++' (or 'make') is not recognized as an internal or external command, operable program or batch file
To check your path open a command prompt and type PATH. Make sure that the path to your build utility is defined (example PATH=c:\cygwin\bin).


Steps to build/debug:
1. Window->Preferences->Debug->Common Source Lookup Path-> Path Mapping : New Mapping
(Compilation path : \cygdrive\c\ pointing to Local file system path: c:\)

2. "Managed Make C++ Project" - Wizard creates it for you
"Standard Make C++ Project" - you are using your own makefile.

3. Create a new project
File -> New -> Managed Make C++ Project :
- Project Name : MyProject
(Only .h, .hh and .cc files from MyProject are in this folder. Note: Makefile is created by Eclipse)
- Click Finish.

4. The project builds automatically, as Project->Build Automatically is checked.
If it is unchecked, build the project by :
(i) Right click on the project - Build
or (ii)Project->Build Project

5. If you get errors like
- derror.h: No such file or directory MyProj wait.hh line 5 1190176735947 5321
do the following:
(i) Project->Properties->C/C++ Build->GCC C++ Compiler->Directories
(ii) Click on the Add->Workspace…
(iii) Choose the workspace WS2

6. Before you start debugging ensure that the debugging settings are made.
Run-> Debug… -> C/C++ Attach to Local Application
Double click on C/C++ Attach to Local Application
or
Run-> Debug… -> C/C++ Local Application
Double click on C/C++ Local Application
Select the project : WS2
Click on Search Project…
Select the binary (WS2.exe)

Happy debugging!


Tips for Windows NT Driver Developers -- Things to Avoid




1.Never return STATUS_PENDING from a dispatch routine without marking the I/O request packet (IRP) pending (IoMarkIrpPending).
2.Never call KeSynchronizeExecution from an interrupt service routine (ISR). It will deadlock your system.
3.Never set DeviceObject->Flags to both DO_BUFFERED_IO and DO_DIRECT_IO. It can confuse the system and eventually lead to fatal error. Also, never set METHOD_BUFFERED, METHOD_NEITHER, METHOD_IN_DIRECT or METHOD_OUT_DIRECT in DeviceObject->Flags, because these values are only used in defining IOCTLs.
4.Never allocate dispatcher objects from a paged pool. If you do, it will cause occasional system bugchecks.
5.Never allocate memory from paged pool, or access memory in paged pool, while running at IRQL >= DISPATCH_LEVEL. It is a fatal error.
6.Never wait on a kernel dispatcher object for a nonzero interval at IRQL >= DISPATCH_LEVEL. It is a fatal error.
7.Never call any function that causes the calling thread to wait directly or indirectly while executing at IRQL >= DISPATCH_LEVEL. It is a fatal error.
8.Never lower the interrupt request level (IRQL) below the level at which your top-level routine has been invoked.
9.Never call KeLowerIrql() if you haven't called KeRaiseIrql().
10.Never stall a processor (KeStallExecutionProcessor) longer than 50 microseconds.
11.Never hold any spin locks longer than necessary. For better overall system performance, do not hold any system-wide spin locks longer than 25 microseconds.
12.Never call KeAcquireSpinLock and KeReleaseSpinLock, or KeAcquireSpinLockAtDpcLevel and KeReleaseSpinLockFromDpcLevel, while running at IRQL greater than DISPATCH_LEVEL.
13.Never release a spin lock that was acquired with KeAcquireSpinLock by calling KeReleaseSpinLockFromDpcLevel, because the original IRQL will not be restored.
14.Never call KeAcquireSpinLock and KeReleaseSpinLock or any other routine that uses an executive spin lock from an ISR or SynchCritSection routine(s).
15.Never forget to clear DO_DEVICE_INITIALIZING flag when you create a device object in a routine other than DriverEntry.
16.Never queue a deferred procedure call (DPC) object (using KeInsertQueueDpc) with multiple threads on different processors simultaneously. It can lead to fatal error.
17.Never deallocate a periodic timer from a CutomerTimerDPC routine. You can deallocate nonperiodic timers from a DPC routine.
18.Never pass the same DPC pointer to KeSetTimer, or KeSetTimerEx (CustomTimerDpc) and KeInsertQueueDpc (CustomDpc), because it causes race conditions.
19.Never call IoStartNextPacket while holding a spin lock. It can deadlock your system.
20.Never call IoCompleteRequest while holding a spin lock. It can deadlock your system.
21.Never call IoCompleteRequest without setting the completion routine to NULL if your driver sets the completion routine.
22.Never forget to set the I/O status block in the IRP before calling IoCompleteRequest.
23.Never call IoMarkPending after queuing an IRP or sending it to another driver (IoCallDriver). The IRP may be completed before the driver calls IoMarkPending and a bugcheck might occur. For drivers with completion routines, the completion routines must call IoMarkPending if Irp->PendingReturned is set.
24.Never touch an IRP after you have called IoCompleteRequest on it.
25.Never call IoCancelIrp on an IRP that is not owned by your driver unless you know that the IRP has not been completed yet.
26.Never call IoCancelIrp for the IRP that your dispatch routine is working on until your dispatch routine returns to caller.
27.Never call IoMakeAssociatedIrp to create IRPs for lower drivers from an intermediate driver. The IRP you get in your intermediate driver could be an associated IRP, and you cannot associate other IRPs to an already associated IRP.
28.Never call IoMakeAssociatedIrp on an IRP that is set up to perform buffered I/O.
29.Never simply dereference virtual pointers to device I/O registers and access them. Always use correct hardware abstraction layer (HAL) functions to access a device.
30.Never access IRP or device object fields from an ISR that may be modified from DISPATCH_LEVEL. On a symmetric multiprocessor system this can cause data corruption.
31.Never modify data while running at high-IRQL if that data may be written by low-IRQL code. Use the KeSynchronizeExecution routine.
32.Never acquire one of the driver's own spin locks (if you have any) in your DispatchCleanup routine, before acquiring the system-wide cancel spin lock (IoAcquireCancelSpinLock). Following a consistent lock acquisition hierarchy throughout your driver is essential to avoiding potential deadlocks.
33.Never call IoAcquireCancelSpinLock in your cancel routine because it is always called with the system cancel spin lock held on its behalf.
34.Never forget to call IoReleaseCancelSpinLock before returning from a cancel routine.
35.Never use IRQL-based synchronization because this works only on single processor systems. Raising IRQL on one processor does not mask interrupts on other processors.
36.Never use RtlCopyMemory for overlapped memory address ranges. Use RtlMoveMemory.
37.Never assume page sizes are constant, even for a given CPU. Use PAGE_SIZE and other page related constants defined in header files to maintain portability.
38.Never access any registry keys other than Registry\Machine\Hardware and Registry\Machine\System from DriverEntry routine of a driver loaded in Boot\System Initialization phase.
39.Never create an Enum key for loading a driver under a driver's registry key (Registry\Machine\System\CurrentControlSet\Services). The system creates this key dynamically.
40.Never attempt to initialize a physical device without claiming the necessary bus-relative I/O ports, memory ranges, interrupt, or direct memory access (DMA) channel/port hardware resources in the registry first.
41.Never call IoRegisterDriverReinitialization from your DriverEntry routine unless it returns STATUS_SUCCESS.
42.Never call KeSetEvent with the Wait parameter set to TRUE from a pageable thread or pageable driver routine that runs at IRQL PASSIVE_LEVEL. This type of call causes a fatal page fault if your routine happens to be paged out between the calls to KeSetEvent and KeWait..Object(s).
43.Never call KeReleaseSemaphore with the Wait parameter set to TRUE from a pageable thread or pageable driver routine that runs at IRQL PASSIVE_LEVEL. If your routine happens to be paged out between the calls to KeReleaseSemaphore and KeWait..Object(s), this type of a call causes a fatal page fault.
44.Never call KeReleaseMutex with the Wait parameter set to TRUE from a pageable thread or pageable driver routine that runs at IRQL PASSIVE_LEVEL. If your routine happens to be paged out between the calls to KeReleaseMutex and KeWait..Object(s), this type of a call causes a fatal page fault.
45.Never call KeBugCheckEx or KeBugCheck from a retail Windows NT driver to bring down the system, unless the error encountered is a critical error which would corrupt system memory or eventually cause the system to bugcheck. Always try to handle error conditions gracefully.
46.Never assume that an IoTimer routine will be called precisely on a one- second boundary because the intervals at which any particular IoTimer routine is called ultimately depends on resolution of the system clock.
47.Never call Win32s application programming interfaces (API) from a kernel-mode device driver.
48.Never use recursive functions that can cause the stack to overflow because the calling thread's kernel-mode stack does not grow dynamically while it is running in kernel-mode.
49.Never use interrupt object pointers (PKINTERRUPT) to identify interrupts in an ISR that handles more than one interrupt, because the address of the interrupt object you get in the ISR will not always be the same as the one you got from IoConnectInterrupt. You should only use the ServiceContext value that you specify in IoConnectInterrupt to identify the current interrupting device.
50.Never unload a driver without clearing CustomTimerDpc (KeCancelTimer). If the DPC is fired after the driver is unloaded, it could hit non existent-code and cause the system to bugcheck.
51.Never unload a driver until all the IRPs that have the I/O CompletionRoutine of the driver set in it are completed. If the IRP gets completed by the lower driver after your driver is unloaded, the system could try to execute the non-existent code and cause the system to crash.
52.Never enable device interrupt until your driver is ready to handle it. You should enable only after your driver is completely initialized, and it is safe for the system to touch the driver's internal structures in ISR and DPC.
53.Never call outside of your driver while holding a spinlock because it can cause deadlock.
54.Never return any status other than STATUS_MORE_PROCESSING_REQUIRED from your I/O CompletionRoutine for an IRP created by your driver with IoBuildAsynchronousFsdRequest/IoAllocateIrp because the IRP is not prepared for completion related post-processing by the I/O manager. Such an IRP should be freed explicitly (IoFreeIrp) by the driver. If the IRP is not meant for reuse, it can be freed in the CompletionRoutine before returning status STATUS_MORE_PROCESSING_REQUIRED.
55.Never allocate an IRP with IoBuildSynchronousFsdRequest/IoBuildDeviceIoControlRequest in an Arbitrary thread context because the IRP remains associated with the thread (Irp->ThreadListEntry) until it is freed.
56.Never call IoInitializeIrp on an IRP that has been allocated with IoAllocateIrp with ChargeQuota parameter set to TRUE. When you allocate an IRP with ChargeQuota set to TRUE, the I/O manager keeps the information about the pool from which it allocated the memory for the IRP in the IRP's internal flag.

When you call IoInitializeIrp on such an IRP, the allocation pool information is lost as this function blindly zeros the entire IRP. This leads to memory corruption when you free the IRP. Also, never reuse an IRP that comes from the IO manager. If you want to reuse an IRP, you should allocate your own by using IoAllocateIrp.
57.Never specify WaitMode as UserMode in KeWaitForSingleObject/KeWaitForMultipleObjects if the Object is allocated in the calling thread's stack. The corollary of this is that if the Object being waited on is created in the function stack, you must specify KernelMode as the WaitMode to prevent the thread stack from being paged out.
58.Never acquire resources such as ERESOURCES and FastMutex(Unsafe) in the context of a user-mode thread without protecting the code in a critical section.

Because the acquisition of these resources does not raise the IRQL to APC_LEVEL, if the thread is suspended (done by queuing an APC) after it has acquired the resource, it could cause deadlock and compromise system security. Therefore, you should acquire such resources either by explicitly raising the IRQL to APC_LEVEL or in a critical section by calling KeEnterCriticalRegion.

http://support.microsoft.com/kb/186775http://support.microsoft.com/kb/186775
The NT Insider Archive
(Collected before I drifted away from Windows Kernel Programming)
(Read the ones marked in RED)


The NT Insider 2003 Archive
| Publishing...
Rock On With 64-bit Windows -- Porting Windows Drivers to AMD64
Guest Article: Driver Installation During Windows Setup
Sidebar Discussion -- Nt vs. Zw Continued
Nt vs. Zw - Clearing Confusion On The Native API
Multi-Version Functionality
Emerging Issues in IoCancelFileOpen
The NT Insider, Vol 10, Issue 4, July-August 2003
The Wide World Of The AMD64
Debugging a Stack Overflow
Pardon the Interruption -- Interrupt Handling Changes in Windows
Tracing Update -- New Tracing Features for Windows
A New Interface for Driver Writing -- The Windows Driver Framework
The DDK Is Dead -- Long Live the LDK!
Stop Interrupting Me -- Of PICs and APICs
Wild Speculation -- Debugging Another Crash Dump
I Wanna Be A Bus Driver Baby -- Writing Windows Bus Drivers Part II
On One Condition -- Conditionally Compiling For Your Target OS
Without A Trace? Event Tracing in Windows
Guest Article: Simplifying Development with DDK Macros
Don't Call Us -- Calling Conventions for the x86
Play It Again, Sam -- Reparse Points in Windows


The NT Insider 2002 Archive
| Published: 30-Jan-03| Modified: 12-Mar-03
Stacking the Deck -- Finding Your Way Through the Stack
Synchronicity: A Review of Synchronization Primitives
Kernel: "Calling User Mode...Are You There?" - Using the Inverted Call Model
WMI Revisited: Instrumentation and Integration with Perfmon
You've Gotta Use Protection: Inside Driver and Device Security
Advantage: Driver Writer - New Functions in the Windows XP DDK
Tracking State and Context: Reference Counting for File System Filter Drivers
Lock 'Em Up: Byte Range Locking
If You Build It: Visual Studio and Build Revisited
Still Feeling Insecure? IoCreateDeviceSecure() for Windows 2K/XP/.NET
Upsizing: Managing Address Space Increases for IA64
Maybe I Should Drive: Drive Letter Assignment and the Mount Manager
Securing Device Interfaces: A Better Approach Than Sending an SD
Bagging Bugs: Avoidance and Detection Tips to Consider
Sharing is Caring: Sharing Events Between Kernel-User Mode
All About Lint: PC-Lint and Windows Drivers
"Fixed In The Next Release" -- Product Review Update: VMWare & Connectix Quick Tool
A GodSend -- Inside the DevCon Utililty


The NT Insider 2001 Archive
| Published: 30-Jan-03| Modified: 30-Jan-03
The 411 on Driver 911: Resources for Driver Writers
Just Checking: Installing a Partially Checked Build
X-DMA: Extreme DMA for Performance
Properly Pending IRPs: IRP Handling For the Rest of Us
Tunneling: Name Tunneling in Windows 2000 File Systems
Keeping Secrets: Windows NT Security (Part III)
Property: Adding Property Pages to Device Drivers
Buddy Drivers: Methods for Driver to Driver Communication
File Systems & XP: New File Systems Material in Windows XP


The NT Insider 2000 Archive
| Published: 30-Jan-03| Modified: 30-Jan-03
Fun With Filters: Win2K/WDM Device Filter Drivers
Beyond IRPs: Driver to Driver Communications
Does No More Alpha Mean...Goodbye to Processor Independence?
A Common Topic Explained: Sharing Memory Between Drivers and Applications
Analyze This: Analyzing a Crash Dump
A Modest Proposal: A New View on I/O Cancellation
Bug or Planned Change? Getting Bit By Undocumented Functions
Interview: All About the DDK
You're Testing Me: Testing WDM/Win2K Filter Drivers
Filtering the Riff-Raff: Observations on File System Filter Drivers


The NT Insider 1999 Archive
| Published: 30-Jan-03| Modified: 30-Jan-03
Windows NT Virtual Memory (Part II)
Defensive Driver Writing: Watch Out for the Other Guy
The Exception to the Rule: Structured Exception Handling
Global Relief Effort: C++ Runtime Support for the NT DDK
Keeping Secrets: Windows NT Security (Part I)
A New Way to DMA: Busmaster DMA in Windows 2000
Taming the Beast: The Windows 2000 Build Environment
From Andy's Bookshelf: Video Drivers and the Registry
Getting 'N Sync: A Primer on Kernel Mode SMP Synchronization
Make WinDbg Your Friend: Creating Debugger Extensions
Signed, Sealed, Delivered: Driver Signing in Windows 2000
Keeping Secrets: Windows NT Security (Part II)
More on Kernel Debugging: KMODE_EXCEPTION_NOT_HANDLED
Throw the Book at 'Em: Books on Writing NT and WDM Device Drivers
So You Wann Be A Bus Driver? Writing Bus Drivers for Windows 2000


The NT Insider 1998 Archive
| Published: 30-Jan-03| Modified: 30-Jan-03
From Andy's Bookshelf: WinDbg Extensions to GDI
Doing Things "Whenever": Asynchronous Procedure Calls
That's Just the Way It Is: How NT Describes I/O Requests
Converting Windows NT V4 Drivers to WDM/NT V5
The Truth About Cancel: IRP Cancel Operations (Part II)
The Windows NT Virtual Memory System (Part I)
From Andy's Bookshelf: Floating Point Triage
Fundamentals: NT Driver 102
Build Tricks: Checked and Free Revisited
WMI: What it is...Why Driver Writers Should Care
From Andy's Bookshelf: So You Wanna Write a Video Driver?
I've Got Work To Do: Worker Threads and Work Queues
Life Support for WinDbg: New Windows NT Support Tools
From Andy's Bookshelf: Loading Video Drivers, A Mystery Solved
Who Cares? You Do! Implementing PnP for WDM/NT V5


The NT Insider 1997 Archive
| Published: 30-Jan-03| Modified: 30-Jan-03
Rolling Your Own: Build IRPs to Perform I/O
Tools of the Trade: A Catalog of NT Synchronization Mechanisms
Update! Two New System Calls in NT 4.0 SP2!
What's in a Name? Cracking Rename Operations
Choose Your Weapon: Kernel Mode Debuggers - A Choice at Last
In My Space: Choosing the Correct HAL Function for Device Access
Life After Death? Understanding the Blue Screen
Secrets of the Universe Revealed! How NT Handles I/O Completion
Fundamentals: NT Driver Writing 101
A Chance to Prove It's Worth: The NT HAL
Stand Up and be Recognized: File System Recognizers
The Truth About Cancel: IRP Cancel Operations (Part I)
Loading DLLs for Graphics Drivers
Using the NT Registry for Driver Install
Writing Kernel Mode DLLs
NT 4.0 (SP3) Lookaside Lists Appear Broken


The NT Insider 1996 Archive
| Published: 19-Dec-02| Modified: 19-Dec-02
Life in the FastI/O Lane
Cache Me If You Can: Using the NT Cache Manager
In Context: Understanding Execution Contect in NT
Fun wiht IOCTLs: Defining Custom I/O Control Codes
Going Native: Using the NT API for File I/O
When Opportunity Locks: Oplocks on Windows NT
Are You Being SRVed? Lan Manager File Server on NT
Save the Environment: Integrating Build and Developer Studio


TechTipsNTricks - 20
Miscellaneous Tools

There are a lot of Miscellaneous things that we need every now and then:
- Explorer Extensions
- File Manager Extensions
- DVD Burners
- ISO file viewers
- Seacher tools (Google desktop/MS Desktop/Lookout/etc)
- Download Managers
- Dictionary
- Text Editors (Editplus/Textpad/etc)
- Torrent applications ( BitTorrent, etc)
- Zip/Unzip appications (WINRAR, WINZIP, etc)
- Network viewers (netwatch, Xnetstat, etc)
- Graphical vi/emacs editors (gvim, x-emacs)
(Note:- I have purposely left out INTERNET BROWSERS like Chrome/Firefox/IE/Safari/etc, as I suppose people are using them to browse this link anyways) :)

Happy happy learning!

TechTipsNTricks - 19
Emulators

You wanna:
- Run UNIX/Linux/*NIX commands on Windows.
- Build applications in Windows that can be ported to *NIX environments.
- You wanna use 'vi' editor on Windows
- You are a rare breed - you love Windows and Linux

You need CYGWIN/MKS ToolKit/SFU. Start with CYGWIN; you might not wanna try the non-free products so soon.

Ref:-
http://www.cygwin.com/

TechTipsNTricks - 18
Desktop Recorders

Record onscreen activity. Edit it into a polished video. Share with the world.

Ref:-
http://www.techsmith.com/camtasia.asp

TechTipsNTricks - 17
Diff and Merge Tools

First off, let me tell why I am putting this information as tips. I have found that people in software industry (I always avoid using words Architects, Consultants, Programmers) use aging command line tools to check the differences between files and merge them. They eat up a lot of time (in review/inspection sessions, etc) and still love their old tools. Give these tools a try, folks! Save others' time, if you can't save yours. Get out from the old rut!

I am mentioning just one tool. There are umpteen tools available nowadays.

Winmerge
WinMerge is an Open Source differencing and merging tool for Windows. WinMerge can compare both folders and files, presenting differences in a visual text format that is easy to understand and handle.

Ref:
http://winmerge.org/

Happy Learning!

TechTipsNTricks - 16
Reverse Engineering Tools

Understand 2.0 analyzes your software code and creates a database containing information about the entities and the relations between entities. The database can then be browsed using various “graphical view” windows. The graphical views are divided into these kinds:
Hierarchy views show relations between entities. Each view follows a relation (for instance “Calls”) from the starting entity (that you inquired about) through its children and successors.
Structure views quickly show the structure of any entity that adds to the structure of your software (for instance a package, function, procedure, or task).

Ref:http://www.scitools.com/products/understand/

Source Insight is a revolutionary project oriented program code editor and code browser, with built-in analysis for C/C++, C#, and Java programs, as well as other languages. Source Insight parses your source code and maintains its own database of symbolic information dynamically while you work, and presents useful contextual information to you automatically. Not only is Source Insight a great program editor, but it also can display reference trees, class inheritance diagrams, and call trees. Source Insight features the quickest navigation of source code and source information of any programming editor.

Ref:
http://www.sourceinsight.com/

TechTipsNTricks - 15
Virtual Machine softwares

VMware Workstation is a virtual machine software suite for x86 and x86-64 computers from VMware, a division of EMC Corporation. This software suite allows users to set up multiple x86 and x86-64 virtual computers and to use one or more of these virtual machines simultaneously with the hosting operating system. Each virtual machine instance can execute its own guest operating system, such as Windows, Linux, BSD variants, or others. In simple terms, VMware Workstation allows one physical machine to run multiple operating systems simultaneously. Other VMware products help manage or migrate VMware virtual machines across multiple host machines.

Ref:
http://www.vmware.com/download/ws/


Here's a cool link for comparing basic information about platform virtual machine (VM) packages.
http://en.wikipedia.org/wiki/Comparison_of_platform_virtual_machines



TechTipsNTricks - 14
Interoperbility Products

Requirements:
You wanna access Windows from Linux, and vice-versa
You do not want to learn the new commands to access the other machine. You wanna connect to resources with drag-and-drop ease & manage the file permissions from within Windows property sheets. Using Windows Explorer, Network nect to file systems and printers located on UNIX, Linux or other NFS systems.
Blah! Blah! Blah!

What do you do?

Simple... Just install one of the following:
- Access NFS suite of products (DiskAccess/DiskShare/AccessNFS) ( http://www.ssc-corp.com/nfs/ )

Well, well, I am not going to link Emulators and other virtual machine environments here. Why mix up the two, eh?


TechTipsNTricks - 13
Terminal Emulators for Windows

CRT is a terminal emulator for access to network devices and business applications on UNIX, Linux, or VMS systems. Built on IETF standard protocols, SecureCRT supports SSH2, SSH1, Telnet, Telnet/SSL, Serial, and other protocols. SecureCRT has file transfer capability and saves time by eliminating many repetitive manual tasks.

Reference:
http://www.vandyke.com/download/crt/index.html

Yeah...yeah... I know that there are hundreds of them out there. NonStop folks used OutsideView and MR-Win6530. MR-Win6530 was cool, with short views on the corner showing the progress when other window is active.




TechTipsNTricks - 12
FTP Clients for Windows

On the address field of the Windows Explorer, type:
"ftp://YOURUSERNAME@ftp.YOURDOMAIN.com"
You will be prompted for username/password. Enter it and get the cool features of Windows Explorer on your finger tips.

Now, if you are still used to the cool FTP tools, here are some of the cool ones:
Filezilla ( http://filezilla-project.org/ )
`SmartFTP ( http://www.smartftp.com/download/ )
CuteFTP ( http://www.cuteftp.com/ )

And, then there is WinSCP too, a SFTP/FTP/SCP client for Windows:
http://winscp.net/eng/docs/introduction

So, what are you waiting for.

Happy FTPing!

TechTipsNTricks - 11
Virtual Desktops for Windows


I have been using Virtual desktops since a decade now. I have always been fond of VDESK - because it had individual desktop sessions without popping the new windows on the active desktops.

VDESK was configurable only in the registry. I am not sure, if this is the one. But, a good bookmark to keep anyways.

There are other virtual desktop managers from Microsoft Power Toys, and other vendors.

vdesk v 1.00 r 4
A Virtual Desktop System for Windows.
The Virtual Desktop Manager implements multiple independent virtual desktops. comes with a sophisticated wallpaper changer that allows each of the multiple desktops to have independent wallpaper.Both the Wallpaper Changer and the Virtual Desktop Manager expose a simple COM Automation API, allowing their facilities to be accessed from your own applications

http://www.supershareware.com/download/vdesk.html

TechTipsNTricks - 10
Remote control of the system - VNC

For people who want to access the remote desktops without actually logging onto it - VNC is a free and cool solution. IT is also easier to configure and use.

VNC - the original cross-platform remote control solution
VNC is remote control software which allows you to view and fully interact with one computer desktop (the "VNC server") using a simple program (the "VNC viewer") on another computer desktop anywhere on the Internet. The two computers don't even have to be the same type, so for example you can use VNC to view a Windows Vista desktop at the office on a Linux or Mac computer at home. For ultimate simplicity, there is even a Java viewer, so that any desktop can be controlled remotely from within a browser without having to install software.

References:
http://www.realvnc.com/vnc/index.html

TechTipsNTricks - 9
Inctrl5 - Monitor the changes made by the software install

InCtrl5 is the fifth incarnation of one of PC Magazine's most popular utilities. By monitoring the changes made to your system when you install new software, it enables you to troubleshoot any problems that come up. Virtually every modern program uses an install utility that installs or updates files; these utilities may also record data in the Registry and update INI files or other essential text files. A companion uninstall utility should precisely reverse the effects of the install utility. When a newly installed program causes existing applications to fail, or when the supplied uninstall utility can't complete its task, you need a record of exactly what the original install utility did in order to restore your system. InCtrl5 can provide this record.

This new version offers a variety of new features, including an attractive new interface, the ability to track changes to text files such as Autoexec.bat and Config.sys, HTML reports, and command line switches. It runs under Microsoft Windows 95, Windows 98, Windows Me, Windows NT 4.0, and Windows 2000. It does not run under Windows NT 3.51 or any other operating system. Older versions of Windows are supported by previous versions of InCtrl. If you are running Windows NT 4.0 or Windows 95, you will need Internet Explorer 4 or higher to preview HTML reports within the program.

Reference:
http://www.pcmag.com/article2/0,2817,9882,00.asp

TechTipsNTricks - 8
SYSINTERNALS Utilities

Some of the Microsoft takeovers are cool. One of them seems to be the takeover of the company SYSINTERNALS.

I have been a fan of their
- File and Disk Utilities
- Networking Utilities
- Process Utilities
- Security Utilities
- System Information Utilites
- Miscellaneous Utilities

Some of these are cool:
Process Monitor
Monitor file system, Registry, process, thread and DLL activity in real-time.

FileMon
This monitoring tool lets you see all file system activity in real-time.

PsTools
The PsTools suite includes command-line utilities for listing the processes running on local or remote computers, running processes remotely, rebooting computers, dumping event logs, and more.
PsExec - execute processes remotely
PsFile - shows files opened remotely
PsGetSid - display the SID of a computer or a user
PsInfo - list information about a system
PsKill - kill processes by name or process ID
PsList - list detailed information about processes
PsLoggedOn - see who's logged on locally and via resource sharing (full source is included)
etc

PortMon
Monitor serial and parallel port activity with this advanced monitoring tool. It knows about all standard serial and parallel IOCTLs and even shows you a portion of the data being sent and received. Version 3.x has powerful new UI enhancements and advanced filtering capabilities.

RegMon
This monitoring tool lets you see all Registry activity in real-time.

TCPView
Active socket command-line viewer.

WinObj
The ultimate Object Manager namespace viewer is here.

For more browsing, visit:
TechTipsNTricks - 7
3D Desktop Applications

Have you ever used any 3D desktop application? Hmmmm, I guess, you do not have sufficient time to "kill". Here are some of the awesome time-killing apps.

MADOTATE
Madotate is a free English language version of a Japanese developed tool that adds a fourth button to the top right of your windows. Alongside close, full-screen and minimize appears a 3D button. Clicking it will transform your window into a tabbed 3D image, which takes up much less room.
Reference:
http://madotate.en.softonic.com/

BUMPTOP
BumpTop™ is a fun, intuitive 3D desktop that keeps you organized and makes you more productive. Like a real desk, but better.
Reference:
http://bumptop.com/
TechTipsNTricks - 6
POWER TOYS - TweakUI, Virtual Desktop Manager

I am not sure why I am dumping all the information here. Prolly, easier access and no headache of remembering the names of the applications and their links.

Tweak UI
This PowerToy gives you access to system settings that are not exposed in the Windows XP default user interface, including mouse settings, Explorer settings, taskbar settings, and more.

Open Command Window Here
This PowerToy adds an "Open Command Window Here" context menu option on file system folders, giving you a quick way to open a command window (cmd.exe) pointing at the selected folder.

Power Calculator
With this PowerToy you can graph and evaluate functions as well as perform many different types of conversions.

Virtual Desktop Manager
Manage up to four desktops from the Windows taskbar with this PowerToy.

Reference:
http://www.microsoft.com/windowsxp/Downloads/powertoys/Xppowertoys.mspx

Friday, June 19, 2009

TechTipsNTricks - 5

Putty Connection Managers


It's a little annoying to open umpteen putty windows to connect to the servers. Wouldn't it be cool to connect to multiple putty sessions from the same window?

Well, there are umptten connection Managers. Just ensure that you have PUTTY downloaded before you download these.

You can find any connection managers that you like from:
http://www.thegeekstuff.com/2008/08/turbocharge-putty-with-12-powerful-add-ons-software-for-geeks-3/

Happy connecting!

Saturday, June 13, 2009

TechTipsNTricks - 4

Cool corner(s) for a few Windows Tips and Tweaks

http://www.kellys-korner-xp.com/xp_tweaks.htm

TechTipsNTricks - 3

Windows File Manager - WINFILE

Hmmm, remember good old days when you worked on 1 application that let you do exploring, changing permissions, etc in a MDI window? Well, the old timers who know Windows NT might know this.

You can still find and download an application for Windows XP/Vista. Find one at :

http://www.kellys-korner-xp.com/xp_tweaks.htm

Thursday, June 11, 2009

TechTipsNTricks - 2

Multi-tabbed Command Prompt

Console is a Windows console window enhancement. Console features include: multiple tabs, text editor-like text selection, different background types, alpha and color-key transparency, configurable font, different window styles

Reference:
http://sourceforge.net/project/showfiles.php?group_id=43764
TechTipsNTricks - 1

Windows Command Prompt - Useful tips

F7 key - Popup window with a list of previous commands

Brings up a popup window with a list of commands typed in the current session. Numbers the commands from “0″

F9 key - Prompts for command number from recent command list

You saw with F7, it pops up with a list of commands number from “0″. F9 popsup with a message box prompting for the command number. For instance, if I enter 6 here, it will enter the command “whoami”

F8 key - same as the UP arrow function

Brings up previous commands in Descening order from the most recent to the oldest. This is similar to the UP Arrow

F3 & F5 key - Type the last command

This is similar to using the UP arrow to get to the last typed in command

F2 key - Type the previous command upto a specified character

This key prompts to enter the character upto which to copy from the previous command. For instance, if I enter “l”, it will delete anything from the letter “l” (”l” inclusive) in my last command. Can be handy if you have to copy a part of a long command.

F1 - Type last command one letter at a time. So, keep pressing F1 as many times until the letter you want the previous command be typed in.

F6 - Types CTRL+Z

Followers

Blog Archive

About Me