mirror of
https://github.com/reactos/documentation.git
synced 2024-11-23 03:29:56 +00:00
Import from casper's repository
svn path=/trunk/documentation/; revision=21185
This commit is contained in:
parent
35c930b169
commit
d876532e4d
11
README
Normal file
11
README
Normal file
@ -0,0 +1,11 @@
|
||||
This is the documentation directory for the ReactOS project.
|
||||
|
||||
|
||||
Directory Layout:
|
||||
|
||||
api\ : Documentation for various APIs.
|
||||
articles\ : Howto's, Articles and related documentation.
|
||||
audit\ : Documentation about and gathered by the audit.
|
||||
reverse.engineering\ : Clean-Room effort documentation.
|
||||
: _Only_ human language and pseudo-code documentation is allowed here.
|
||||
|
0
api/.gitignore
vendored
Normal file
0
api/.gitignore
vendored
Normal file
BIN
articles/CacheMan.pdf
Normal file
BIN
articles/CacheMan.pdf
Normal file
Binary file not shown.
BIN
articles/GDI_call_flow.jpg
Normal file
BIN
articles/GDI_call_flow.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 34 KiB |
BIN
articles/fpu_state_saving.png
Normal file
BIN
articles/fpu_state_saving.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 40 KiB |
BIN
articles/opengl32.png
Normal file
BIN
articles/opengl32.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 10 KiB |
BIN
articles/pnp1.pdf
Normal file
BIN
articles/pnp1.pdf
Normal file
Binary file not shown.
32
audit/drivers/base/null.txt
Normal file
32
audit/drivers/base/null.txt
Normal file
@ -0,0 +1,32 @@
|
||||
Audit result: NULL driver
|
||||
Result: Obvious implementation
|
||||
|
||||
The null driver implements two virtual devices;
|
||||
|
||||
\device\null -- A device which always consumes all bytes written and which
|
||||
perpetually reads at EOF (this is similar to the unix /dev/null device).
|
||||
@null.c:155
|
||||
|
||||
\device\zero -- A device which simulates an infinite well of zero bytes on
|
||||
read, and which rejects attempts to write.
|
||||
@null.c:156
|
||||
|
||||
The null driver initializes resources in its DriverEntry function as outlined
|
||||
in drivers/standard_driver_entry_tasks.txt. This initialization can be
|
||||
considered trivial, as it performs only tasks which are trivially considered
|
||||
to be required.
|
||||
|
||||
@null.c:159 -- Register dispatch functions
|
||||
@null.c:167,184 -- Create device object
|
||||
@null.c:176,193 -- Gracefully handle failures
|
||||
@null.c:200 -- Set buffered IO flag as described here:
|
||||
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/IFSK_r/hh/IFSK_r/irpref_e73f783d-00eb-4d50-82a2-67ce60a36c76.xml.asp
|
||||
|
||||
The null driver contains only one other nonempty function, the IRP handling
|
||||
dispatch function. This function can be considered to be trivial in that
|
||||
everything it does is trivially considered to be required as outlined in
|
||||
drivers/standard_irp_handling_tasks.txt.
|
||||
|
||||
@null.c:82 -- Protect the kernel mode environment
|
||||
@null.c:58,62,78,85,115,121,127,133,138 -- Complete irps on behalf of user
|
||||
processes.
|
166
audit/drivers/bus/isapnp.txt
Normal file
166
audit/drivers/bus/isapnp.txt
Normal file
@ -0,0 +1,166 @@
|
||||
Audit result: ISA PNP driver
|
||||
Result: Based substantially on linux implementation/Necessary implementation
|
||||
|
||||
The isapnp driver implements a virtual device which serves as the parent bus
|
||||
of devices which follow the ISA Plug And Play specification.
|
||||
|
||||
The specification can be found here:
|
||||
http://www.microsoft.com/whdc/resources/respec/specs/pnpisa.mspx
|
||||
|
||||
The ISA PnP driver initializes resources in its DriverEntry function as
|
||||
outlined in drivers/standard_driver_entry_tasks.txt. This initialization can
|
||||
be considered trivial, as it performs only tasks which are trivially considered
|
||||
to be required.
|
||||
|
||||
@isapnp.c:1727-1737 -- Initialize callbacks in the DriverObject
|
||||
|
||||
IRPs handled by the ISA PnP driver are outlined in:
|
||||
|
||||
Art Baker, "The Windows NT Device Driver Book", chapter 8, page 166 lists
|
||||
|
||||
- IRP_MJ_CREATE
|
||||
- IRP_MJ_CLOSE
|
||||
- IRP_MJ_READ
|
||||
- IRP_MJ_WRITE
|
||||
- IRP_MJ_DEVICE_CONTROL
|
||||
|
||||
Which are generic IRP types resulting from NtCreateFile, NtClose, NtReadFile,
|
||||
NtWriteFile and NtDeviceIoControl and are implemented for virtually all device
|
||||
drivers, and may be considered as required.
|
||||
|
||||
OSROnline ( http://www.osronline.com/DDKx/kmarch/k113_8ur6.htm ) describes
|
||||
handling of:
|
||||
|
||||
- IRP_MJ_PNP
|
||||
|
||||
Which is required for Plug And Play capable bus drivers.
|
||||
|
||||
Some of these provide minor codes which further distinguish the requested
|
||||
task. In the case of IRP_MJ_DEVICE_CONTROL, these codes are device or function
|
||||
specific.
|
||||
|
||||
In the case of IRP_MJ_PNP, the minor codes are well known.
|
||||
|
||||
Handling of each Irp type and subtype is outlined below:
|
||||
|
||||
ISAPNPDispatchOpenClose (isapnp.c:1580-1586)
|
||||
Status: Obvious.
|
||||
|
||||
ISAPNPDispatchReadWrite (isapnp.c:1596-1602)
|
||||
Status: Obvious.
|
||||
|
||||
ISAPNPDispatchDeviceControl (isapnp.c:1612-1634)
|
||||
Status:
|
||||
Tail starting at 1627: Obvious.
|
||||
Head until line 1621: Obvious.
|
||||
At line 1621: A switch statement with a single default failure case appears.
|
||||
Status:
|
||||
audit/switch_default/ReadMe.txt -- Such a construct cannot be arrived at
|
||||
through reverse engineering
|
||||
|
||||
ISAPNPControl (isapnp.c:1644-1676)
|
||||
Status: Obvious
|
||||
This function dispatches to several other functions:
|
||||
|
||||
ISAPNPQueryDeviceRelations
|
||||
ISAPNPStartDevice
|
||||
ISAPNPStopDevice
|
||||
|
||||
And otherwise performs only IRP completion activities outlined in
|
||||
audit/drivers/standard_irp_handling_tasks.txt
|
||||
|
||||
ISAPNPQueryDeviceRelations (isapnp.c:1491-1510)
|
||||
Status: Obvious
|
||||
Following form with the other functions in the file, ISAPNPQuery
|
||||
DeviceRelations uses a switch statement to dispatch to another
|
||||
function in the case of a recognized request type. That a switch
|
||||
statement is used for a single non-default case, given that it
|
||||
is also used for default-only switches in the same file, reflects
|
||||
a stylistic choice that allows more cases to be added without
|
||||
changing the basic code structure.
|
||||
|
||||
As documented here:
|
||||
http://www.osronline.com/DDKx/kmarch/pnp-irps_5aia.htm
|
||||
|
||||
ISAPNPQueryDeviceRelations dispatches to ISAPNPQueryBusRelations.
|
||||
|
||||
ISAPNPQueryBusRelations: (isapnp.c:1423-1481)
|
||||
Status: obvious
|
||||
Head until line 1440 -- obvious
|
||||
Tail after line 1468 -- obvious
|
||||
@isapnp.c:1440 -- Compute the size of the DEVICE_RELATIONS return based on
|
||||
the number of detected devices (from device extension)
|
||||
-1 (constant) explained here:
|
||||
http://www.codecomments.com/archive421-2005-5-501037.html
|
||||
@isapnp.c:1450-1454 -- obvious -- list crawl
|
||||
@isapnp.c:1457 -- Call to IoCreateDevice as described:
|
||||
http://www.osronline.com/DDKx/kmarch/k104_8piq.htm
|
||||
@isapnp.c:1465 -- Example of marking a device as being created by a bus driver
|
||||
http://www.osronline.com/showThread.cfm?link=5419
|
||||
|
||||
ISAPNPStartDevice: (isapnp.c:1520-1549)
|
||||
Status: obvious
|
||||
Head until line 1531 -- obvious
|
||||
Tail after line 1542 -- obvious
|
||||
This function simply calls several functions to which functionality is
|
||||
delegated, and gracefully responds to failures.
|
||||
|
||||
IsolatePnPCards
|
||||
BuildDeviceList
|
||||
BuildResourceListsForAll
|
||||
|
||||
BuildDeviceList:
|
||||
Status: based on linux isapnp_device_list
|
||||
(http://glide.stanford.edu/lxr/ident?v=linux-2.6.5;i=isapnp_build_device_list)
|
||||
|
||||
BuildResourceListsForAll: (@isapnp.c:1348-1362)
|
||||
Status: obvious
|
||||
This function simply iterates over every card, calling
|
||||
BuildResourceListsForCard on each
|
||||
|
||||
BuildResourceListsForCard: (@isapnp.c:1324-1338)
|
||||
Status: obvious
|
||||
Iterates logical functions per card, calling BuildResourceLists for each
|
||||
|
||||
BuildresourceLists: (@isapnp.c: (@isapnp.c:1273-1315)
|
||||
Status: necessary
|
||||
In order to make resource information available to windows PNP drivers, each
|
||||
Physical device object must have an IO_RESOURCE_REQUIREMENTS_LIST attached.
|
||||
This function prepares these lists as documented here:
|
||||
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/Kernel_r/hh/Kernel_r/k112_3a1f163a-5841-4284-9ee7-c0999e1a9bbc.xml.asp
|
||||
http://www.osronline.com/ddkx/kmarch/plugplay_7mef.htm
|
||||
|
||||
@isapnp.c:1279 -- Compute size of resource list in memory
|
||||
@isapnp.c:1288-1302 -- Prepare memory for resource list storage
|
||||
@isapnp.c:1302-1312 -- Call BuildResourceList for each slot
|
||||
@isapnp.c:Tail after 1312 -- Set list size. AlternativeLists set to the
|
||||
number of lists returned.
|
||||
|
||||
BuildResourceList: (isapnp.c:1211-1264)
|
||||
Status: necessary
|
||||
Fills in an IO_RESOURCE_LIST as documented
|
||||
@isapnp.c:Head before 1230 -- Necessary list management code.
|
||||
@isapnp.c:1230-1232 -- Set header information for resource list
|
||||
@isapnp.c:1234-1245 -- Crawl list information gathered while enumerating cards
|
||||
@isapnp.c:1245-1247 -- Copy resource information
|
||||
@isapnp.c:Tail after 1251 -- Tails of list crawls
|
||||
|
||||
IsolatePnPCards: (isapnp.c:293-356)
|
||||
Status: Based on linux isapnp_isolate
|
||||
This function carries out the Isolation Protocol described in the ISA PNP
|
||||
specification.
|
||||
|
||||
(isapnp) shall refer to the ISA PNP Specification
|
||||
|
||||
Based substantially on linux isapnp_isolate
|
||||
(http://glide.stanford.edu/lxr/ident?v=linux-2.6.5;i=isapnp_isolate)
|
||||
|
||||
Used Functions:
|
||||
IsolateReadDataPortSelect
|
||||
|
||||
IsolateReadDataPortSelect:
|
||||
Status: Based on Linux isapnp_isolate_rdp_select
|
||||
(http://glide.stanford.edu/lxr/ident?v=linux-2.6.5;i=isapnp_isolate_rdp_select)
|
||||
|
||||
Past this point, there is a 1 to 1 correspondence between functions in the
|
||||
linux isapnp/core.c and reactos' isapnp.c.
|
12
audit/drivers/standard_driver_entry_tasks.txt
Normal file
12
audit/drivers/standard_driver_entry_tasks.txt
Normal file
@ -0,0 +1,12 @@
|
||||
These tasks are required of the DriverEntry portion of any driver, and are
|
||||
described in "The Windows NT Device Driver Book" by Art Baker.
|
||||
|
||||
While mostly outlined in chapters 4 and 5, essential tasks include:
|
||||
|
||||
- Initializing the device object with function pointers which are called to
|
||||
service IRPs on behalf of drivers and devices.
|
||||
- Creating device objects used to represent driver instances and making them
|
||||
available by name in the kernel namespace.
|
||||
- Possibly acquiring resources for well known, fixed instance devices such as
|
||||
legacy ISA.
|
||||
- Gracefully handling errors and cleaning up resources.
|
19
audit/drivers/standard_irp_handling_tasks.txt
Normal file
19
audit/drivers/standard_irp_handling_tasks.txt
Normal file
@ -0,0 +1,19 @@
|
||||
These tasks are required of any IRP handling callbacks provided by a driver
|
||||
and are outlined in "The Windows NT Device Driver Book" by Art Baker, chapters
|
||||
9, 10 and 11.
|
||||
|
||||
Essential tasks are:
|
||||
|
||||
- In the case of device open, close and cleanup requests, manage resources
|
||||
needed by each open device instance, including device specific and driver
|
||||
specific data allocated in DRIVER_EXTENSION and DEVICE_EXTENSION structures,
|
||||
any uncompleted, queued IRPs, and any internally queued requests on behalf
|
||||
of either ioctls which cause persistent driver state changes or hardware with
|
||||
persistent states that must be tracked.
|
||||
- Actually interacting with hardware in order to fulfill user requests.
|
||||
- Manage access to user buffers using MDLs.
|
||||
- Complete or enqueue IRPs on behalf of user processes or other drivers.
|
||||
- Manage timers and other system services needed to ensure that the system
|
||||
functions correctly.
|
||||
- Protect the kernel mode environment from harm by validating pointers to user
|
||||
memory.
|
108
audit/switch_default/Debug/switch_default.asm
Executable file
108
audit/switch_default/Debug/switch_default.asm
Executable file
@ -0,0 +1,108 @@
|
||||
; Listing generated by Microsoft (R) Optimizing Compiler Version 14.00.50727.42
|
||||
|
||||
TITLE f:\reactos\trunk\documentation\audit\switch_default\switch_default.cpp
|
||||
.686P
|
||||
.XMM
|
||||
include listing.inc
|
||||
.model flat
|
||||
|
||||
INCLUDELIB MSVCRTD
|
||||
INCLUDELIB OLDNAMES
|
||||
|
||||
PUBLIC ??_C@_04DFOOMHBJ@Bar?6?$AA@ ; `string'
|
||||
PUBLIC ??_C@_04DEEPCGMJ@Foo?6?$AA@ ; `string'
|
||||
PUBLIC _wmain
|
||||
EXTRN __imp__printf:PROC
|
||||
EXTRN __RTC_CheckEsp:PROC
|
||||
EXTRN __RTC_Shutdown:PROC
|
||||
EXTRN __RTC_InitBase:PROC
|
||||
; COMDAT ??_C@_04DFOOMHBJ@Bar?6?$AA@
|
||||
; File f:\reactos\trunk\documentation\audit\switch_default\switch_default.cpp
|
||||
CONST SEGMENT
|
||||
??_C@_04DFOOMHBJ@Bar?6?$AA@ DB 'Bar', 0aH, 00H ; `string'
|
||||
CONST ENDS
|
||||
; COMDAT ??_C@_04DEEPCGMJ@Foo?6?$AA@
|
||||
CONST SEGMENT
|
||||
??_C@_04DEEPCGMJ@Foo?6?$AA@ DB 'Foo', 0aH, 00H ; `string'
|
||||
CONST ENDS
|
||||
; COMDAT rtc$TMZ
|
||||
rtc$TMZ SEGMENT
|
||||
__RTC_Shutdown.rtc$TMZ DD FLAT:__RTC_Shutdown
|
||||
rtc$TMZ ENDS
|
||||
; COMDAT rtc$IMZ
|
||||
rtc$IMZ SEGMENT
|
||||
__RTC_InitBase.rtc$IMZ DD FLAT:__RTC_InitBase
|
||||
; Function compile flags: /Odtp /RTCsu /ZI
|
||||
rtc$IMZ ENDS
|
||||
; COMDAT _wmain
|
||||
_TEXT SEGMENT
|
||||
tv64 = -208 ; size = 4
|
||||
_a$ = -8 ; size = 4
|
||||
_argc$ = 8 ; size = 4
|
||||
_argv$ = 12 ; size = 4
|
||||
_wmain PROC ; COMDAT
|
||||
|
||||
; 8 : {
|
||||
|
||||
push ebp
|
||||
mov ebp, esp
|
||||
sub esp, 208 ; 000000d0H
|
||||
push ebx
|
||||
push esi
|
||||
push edi
|
||||
lea edi, DWORD PTR [ebp-208]
|
||||
mov ecx, 52 ; 00000034H
|
||||
mov eax, -858993460 ; ccccccccH
|
||||
rep stosd
|
||||
|
||||
; 9 : int a = 1;
|
||||
|
||||
mov DWORD PTR _a$[ebp], 1
|
||||
|
||||
; 10 :
|
||||
; 11 : switch(a) {
|
||||
|
||||
mov eax, DWORD PTR _a$[ebp]
|
||||
mov DWORD PTR tv64[ebp], eax
|
||||
|
||||
; 12 : default:
|
||||
; 13 : printf("Foo\n");
|
||||
|
||||
mov esi, esp
|
||||
push OFFSET ??_C@_04DEEPCGMJ@Foo?6?$AA@
|
||||
call DWORD PTR __imp__printf
|
||||
add esp, 4
|
||||
cmp esi, esp
|
||||
call __RTC_CheckEsp
|
||||
|
||||
; 14 : break;
|
||||
; 15 : }
|
||||
; 16 :
|
||||
; 17 : printf("Bar\n");
|
||||
|
||||
mov esi, esp
|
||||
push OFFSET ??_C@_04DFOOMHBJ@Bar?6?$AA@
|
||||
call DWORD PTR __imp__printf
|
||||
add esp, 4
|
||||
cmp esi, esp
|
||||
call __RTC_CheckEsp
|
||||
|
||||
; 18 :
|
||||
; 19 : return 0;
|
||||
|
||||
xor eax, eax
|
||||
|
||||
; 20 : }
|
||||
|
||||
pop edi
|
||||
pop esi
|
||||
pop ebx
|
||||
add esp, 208 ; 000000d0H
|
||||
cmp ebp, esp
|
||||
call __RTC_CheckEsp
|
||||
mov esp, ebp
|
||||
pop ebp
|
||||
ret 0
|
||||
_wmain ENDP
|
||||
_TEXT ENDS
|
||||
END
|
13
audit/switch_default/ReadMe.txt
Executable file
13
audit/switch_default/ReadMe.txt
Executable file
@ -0,0 +1,13 @@
|
||||
Test Application: default_switch
|
||||
Author: Arty
|
||||
Purpose: Check for reverse engineerability of the C construct:
|
||||
|
||||
switch( x ) {
|
||||
default:
|
||||
...
|
||||
break;
|
||||
}
|
||||
|
||||
Status: Disassembly of test code reveals that distinguishing a default-only
|
||||
switch from unadorned code is impossible. Therefore, this construction cannot
|
||||
have arrived by reverse engineering.
|
66
audit/switch_default/Release/switch_default.asm
Executable file
66
audit/switch_default/Release/switch_default.asm
Executable file
@ -0,0 +1,66 @@
|
||||
; Listing generated by Microsoft (R) Optimizing Compiler Version 14.00.50727.42
|
||||
|
||||
TITLE f:\reactos\trunk\documentation\audit\switch_default\switch_default.cpp
|
||||
.686P
|
||||
.XMM
|
||||
include listing.inc
|
||||
.model flat
|
||||
|
||||
INCLUDELIB OLDNAMES
|
||||
|
||||
PUBLIC ??_C@_04DEEPCGMJ@Foo?6?$AA@ ; `string'
|
||||
PUBLIC ??_C@_04DFOOMHBJ@Bar?6?$AA@ ; `string'
|
||||
EXTRN @__security_check_cookie@4:PROC
|
||||
EXTRN __imp__printf:PROC
|
||||
; COMDAT ??_C@_04DFOOMHBJ@Bar?6?$AA@
|
||||
CONST SEGMENT
|
||||
??_C@_04DFOOMHBJ@Bar?6?$AA@ DB 'Bar', 0aH, 00H ; `string'
|
||||
CONST ENDS
|
||||
; COMDAT ??_C@_04DEEPCGMJ@Foo?6?$AA@
|
||||
CONST SEGMENT
|
||||
??_C@_04DEEPCGMJ@Foo?6?$AA@ DB 'Foo', 0aH, 00H ; `string'
|
||||
CONST ENDS
|
||||
PUBLIC _wmain
|
||||
; Function compile flags: /Ogtpy
|
||||
; File f:\reactos\trunk\documentation\audit\switch_default\switch_default.cpp
|
||||
; COMDAT _wmain
|
||||
_TEXT SEGMENT
|
||||
_argc$ = 8 ; size = 4
|
||||
_argv$ = 12 ; size = 4
|
||||
_wmain PROC ; COMDAT
|
||||
|
||||
; 8 : {
|
||||
|
||||
push esi
|
||||
|
||||
; 9 : int a = 1;
|
||||
; 10 :
|
||||
; 11 : switch(a) {
|
||||
; 12 : default:
|
||||
; 13 : printf("Foo\n");
|
||||
|
||||
mov esi, DWORD PTR __imp__printf
|
||||
push OFFSET ??_C@_04DEEPCGMJ@Foo?6?$AA@
|
||||
call esi
|
||||
|
||||
; 14 : break;
|
||||
; 15 : }
|
||||
; 16 :
|
||||
; 17 : printf("Bar\n");
|
||||
|
||||
push OFFSET ??_C@_04DFOOMHBJ@Bar?6?$AA@
|
||||
call esi
|
||||
add esp, 8
|
||||
|
||||
; 18 :
|
||||
; 19 : return 0;
|
||||
|
||||
xor eax, eax
|
||||
pop esi
|
||||
|
||||
; 20 : }
|
||||
|
||||
ret 0
|
||||
_wmain ENDP
|
||||
_TEXT ENDS
|
||||
END
|
8
audit/switch_default/stdafx.cpp
Executable file
8
audit/switch_default/stdafx.cpp
Executable file
@ -0,0 +1,8 @@
|
||||
// stdafx.cpp : source file that includes just the standard includes
|
||||
// switch_default.pch will be the pre-compiled header
|
||||
// stdafx.obj will contain the pre-compiled type information
|
||||
|
||||
#include "stdafx.h"
|
||||
|
||||
// TODO: reference any additional headers you need in STDAFX.H
|
||||
// and not in this file
|
15
audit/switch_default/stdafx.h
Executable file
15
audit/switch_default/stdafx.h
Executable file
@ -0,0 +1,15 @@
|
||||
// stdafx.h : include file for standard system include files,
|
||||
// or project specific include files that are used frequently, but
|
||||
// are changed infrequently
|
||||
//
|
||||
|
||||
#pragma once
|
||||
|
||||
|
||||
#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
|
||||
#include <stdio.h>
|
||||
#include <tchar.h>
|
||||
|
||||
|
||||
|
||||
// TODO: reference additional headers your program requires here
|
21
audit/switch_default/switch_default.cpp
Executable file
21
audit/switch_default/switch_default.cpp
Executable file
@ -0,0 +1,21 @@
|
||||
// switch_default.cpp : Defines the entry point for the console application.
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
|
||||
|
||||
int _tmain(int argc, _TCHAR* argv[])
|
||||
{
|
||||
int a = 1;
|
||||
|
||||
switch(a) {
|
||||
default:
|
||||
printf("Foo\n");
|
||||
break;
|
||||
}
|
||||
|
||||
printf("Bar\n");
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
20
audit/switch_default/switch_default.sln
Executable file
20
audit/switch_default/switch_default.sln
Executable file
@ -0,0 +1,20 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 9.00
|
||||
# Visual C++ Express 2005
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "switch_default", "switch_default.vcproj", "{A9C5980E-90F0-4207-9892-C5582192DA91}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Win32 = Debug|Win32
|
||||
Release|Win32 = Release|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{A9C5980E-90F0-4207-9892-C5582192DA91}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{A9C5980E-90F0-4207-9892-C5582192DA91}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{A9C5980E-90F0-4207-9892-C5582192DA91}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{A9C5980E-90F0-4207-9892-C5582192DA91}.Release|Win32.Build.0 = Release|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
EndGlobal
|
BIN
audit/switch_default/switch_default.suo
Executable file
BIN
audit/switch_default/switch_default.suo
Executable file
Binary file not shown.
229
audit/switch_default/switch_default.vcproj
Executable file
229
audit/switch_default/switch_default.vcproj
Executable file
@ -0,0 +1,229 @@
|
||||
<?xml version="1.0" encoding="Windows-1252"?>
|
||||
<VisualStudioProject
|
||||
ProjectType="Visual C++"
|
||||
Version="8.00"
|
||||
Name="switch_default"
|
||||
ProjectGUID="{A9C5980E-90F0-4207-9892-C5582192DA91}"
|
||||
RootNamespace="switch_default"
|
||||
Keyword="Win32Proj"
|
||||
>
|
||||
<Platforms>
|
||||
<Platform
|
||||
Name="Win32"
|
||||
/>
|
||||
</Platforms>
|
||||
<ToolFiles>
|
||||
</ToolFiles>
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
|
||||
IntermediateDirectory="$(ConfigurationName)"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="1"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
|
||||
MinimalRebuild="true"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="3"
|
||||
UsePrecompiledHeader="2"
|
||||
AssemblerOutput="4"
|
||||
WarningLevel="3"
|
||||
Detect64BitPortabilityProblems="true"
|
||||
DebugInformationFormat="4"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="kernel32.lib $(NoInherit)"
|
||||
LinkIncremental="2"
|
||||
GenerateDebugInformation="true"
|
||||
SubSystem="1"
|
||||
TargetMachine="1"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManifestTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCAppVerifierTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebDeploymentTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|Win32"
|
||||
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
|
||||
IntermediateDirectory="$(ConfigurationName)"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="1"
|
||||
WholeProgramOptimization="1"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
|
||||
RuntimeLibrary="2"
|
||||
UsePrecompiledHeader="2"
|
||||
AssemblerOutput="4"
|
||||
WarningLevel="3"
|
||||
Detect64BitPortabilityProblems="true"
|
||||
DebugInformationFormat="3"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="kernel32.lib $(NoInherit)"
|
||||
LinkIncremental="1"
|
||||
GenerateDebugInformation="true"
|
||||
SubSystem="1"
|
||||
OptimizeReferences="2"
|
||||
EnableCOMDATFolding="2"
|
||||
TargetMachine="1"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManifestTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCAppVerifierTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebDeploymentTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
/>
|
||||
</Configuration>
|
||||
</Configurations>
|
||||
<References>
|
||||
</References>
|
||||
<Files>
|
||||
<Filter
|
||||
Name="Source Files"
|
||||
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
|
||||
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
|
||||
>
|
||||
<File
|
||||
RelativePath=".\stdafx.cpp"
|
||||
>
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
UsePrecompiledHeader="1"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Release|Win32"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
UsePrecompiledHeader="1"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\switch_default.cpp"
|
||||
>
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="Header Files"
|
||||
Filter="h;hpp;hxx;hm;inl;inc;xsd"
|
||||
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
|
||||
>
|
||||
<File
|
||||
RelativePath=".\stdafx.h"
|
||||
>
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="Resource Files"
|
||||
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
|
||||
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
|
||||
>
|
||||
</Filter>
|
||||
<File
|
||||
RelativePath=".\ReadMe.txt"
|
||||
>
|
||||
</File>
|
||||
</Files>
|
||||
<Globals>
|
||||
</Globals>
|
||||
</VisualStudioProject>
|
0
reverse.engineering/.gitignore
vendored
Normal file
0
reverse.engineering/.gitignore
vendored
Normal file
Loading…
Reference in New Issue
Block a user