겸손한 개발을 위한 자양분

Patching Policy for x64-Based Systems

Changes in policy that are related to patching the kernel for the x64-based versions of Microsoft Windows Server 2003 and Microsoft Windows XP Professional x64 Edition operating systems

Updated: July 25, 2008

The x64-based versions of Microsoft Windows Server 2003 , Windows XP Professional x64 Edition, and later versions of Windows for x64-based systems do not allow the kernel to be patched except through authorized Microsoft-originated hot patches. (In this article, "x64" refers to the 64-bit architecture that is used in AMD64 and Intel Extended Memory 64 Technology systems.) Kernel-mode drivers that extend or replace kernel services through undocumented means (such as hooking the system service tables) can interfere with other software and affect the stability of the operating system. For x86-based systems, Microsoft discourages such practices but does not prevent them programmatically because doing so would break compatibility for a significant amount of released software. A similar base of released software does not yet exist for x64-based systems, so it is possible to add this level of protection to the kernel with less impact on compatibility.

Many system structures are protected on x64-based systems, including the system service dispatch tables, the interrupt descriptor table (IDT), and the global descriptor table (GDT). The operating system also does not allow third-party software to allocate memory "on the side" and use it as a kernel stack. If the operating system detects one of these modifications or any other unauthorized patch, it will generate a bug check and shut down the system.

For compatibility with Windows for x64-based systems, drivers must avoid the following practices:

Modifying system service tables, for example, by hooking KeServiceDescriptorTable

Modifying the interrupt descriptor table (IDT)

Modifying the global descriptor table (GDT)

Using kernel stacks that are not allocated by the kernel

Patching any part of the kernel (detected only on AMD64-based systems)

Drivers for other platforms should avoid these practices, to help ensure stability and reliability of the operating system and a better experience for customers.

If your driver must perform a task that you think cannot be accomplished without patching the kernel, then contact KPPinput@Microsoft.com for help in finding a documented and supported alternative. The white paper that explains the criteria we are using to help evaluate and prioritize the types of APIs that will be developed and when they will be delivered can be found here (Kernel Patch Protection Criteria Evaluation Document).

See Also:

Kernel Patch Protection: Frequently Asked Questions

 

원문 : http://www.microsoft.com/whdc/driver/kernel/64bitPatching.mspx

Dependency Walker

MSDN2009. 7. 23. 14:36

컴파일 옵션에 따른 Run-Time Library 연결

컴파일 옵션 연결되는 라이브러리
/ML (VC ++ .NET 2003 및 이전 버전) LIBC.LIB, LIBCP.LIB
/MLd (VC ++ .NET 2003 및 이전 버전) LIBCD.LIB, LIBCPD.LIB
/mt LIBCMT.LIB, LIBCPMT.LIB
/MTd LIBCMTD.LIB, LIBCPMTD.LIB
/md MSVCRT.LIB MSVCPRT.LIB
/MDd MSVCRTD.LIB, MSVCPRTD.LIB


Run-Time Library 종류

C Run-Time Library (without iostream) Characteristics Option Defined
LIBC.LIB Single threaded, static link /ML
LIBCMT.LIB Multithreaded, static link /MT _MT
MSVCRT.LIB Multithreaded, dynamic link (import library for MSVCRT.DLL) /MD _MT, _DLL

Standard C++ Library Characteristics Option Defined
LIBCP.LIB Single threaded, static link /ML
LIBCPMT.LIB Multithreaded, static link /MT _MT
MSVCPRT.LIB Multithreaded, dynamic link (import library for MSVCRT.DLL) /MD _MT, _DLL

Old Iostream Library Characteristics Option Defined
LIBCI.LIB Single threaded, static link /ML
LIBCIMT.LIB Multithreaded, static link /MT _MT
MSVCIRT.LIB Multithreaded, dynamic link (import library for MSVCIRT.DLL) /MD _MT, _DLL


참조 URL :
http://msdn.microsoft.com/en-us/library/aa272081(VS.60).aspx
http://support.microsoft.com/kb/154753

http://msdn.microsoft.com/en-us/library/bb773173(VS.85).aspx

Windows Controls

A control is a child window that an application uses in conjunction with another window to enable user interaction. Controls are most often used within dialog boxes, but they can also be used in other windows. Controls within dialog boxes provide the user with a way to type text, choose options, and initiate actions. Controls in other windows provide a variety of services, such as letting the user choose commands, view status, and view and edit text.

The common controls overview documentation describes the common controls delivered in Microsoft Windows and the programming elements used to create and manipulate them.

The following table lists the Windows controls.

Control

Description

Animation

A window that displays an Audio-Video Interleaved (AVI) clip.

Button

Notifies the parent window when the user selects the control.

Combo Box

A combination of a list box and an edit control, enabling the user to select or add items.

ComboBoxEx

An extension of the combo box control that provides native support for item images.

Date and Time Picker

A simple and intuitive interface through which to exchange date and time information with a user.

Drag List Box

A type of list box that enables the user to drag items from one position to another.

Edit

A window within the user can view and edit text.

Flat Scroll Bar

A scroll bar with a more customizable appearance than standard scroll bars.

Header

A window that is usually positioned above columns of text or numbers. It contains a title for each column, and it can be divided into parts.

Hot Key

A window that enables the user to enter a combination of keystrokes to be used as a hot key.

Image Lists

A collection of images of the same size, each of which can be referred to by its index.

IP Address

A window in which the user can enter an Internet Protocol (IP) address in an easily understood format.

List Box

A simple list from which the user can select one or more items.

List-View

A list box that provides several ways to arrange and display the items.

Month Calendar

A calendar that enables the user to select a date or dates.

Pager

A set of arrow buttons that enable the contents of a control window to be scrolled.

Progress Bar

An animated control that indicates the progress of a lengthy operation.

Property Sheet

A dialog box that enables the user to view and edit the properties of an item. Pages may be viewed as tabs, or in succession as a wizard.

ReBar

A container for child windows. An application assigns child windows, which are often other controls, to a rebar control band.

Rich Edit

A window in which the user can view and edit text with character and paragraph formatting. It can also contain embedded COM objects.

Scroll Bar

A control that enables the user to choose the direction and distance to scroll information in a related window.

Static

Non-interactive text, including labels for other controls.

Status Bar

A horizontal window at the bottom of a parent window in which an application can display various kinds of status information.

SysLink

A hypertext link.

Tab

A selectable page, analogous to a divider in a notebook. By using a tab control, an application can define multiple pages for the same area of a window or dialog box.

Task Dialog

A more powerful alternative to simple message boxes, incorporating elements such as custom buttons, radio buttons, hyperlinks, and progress bars.

Toolbar

A window that contains one or more buttons and possibly other controls.

ToolTip

A message that appears automatically when the mouse pointer hovers over a tool.

Trackbar

A slider with optional tick marks, used to set a value within a range.

Tree-View

A hierarchical list of items, such as the headings in a document or the files and directories on a disk.

Up-Down

A pair of arrow buttons that the user can click to increment or decrement a value, such as a scroll position or a number displayed in a companion control.