The Windows Research Kernel is available via MSDNAA Subscriber Downloads (accessible to administrators of participating departments) and/or via Faculty Connection portal (sign in to register for downloads) to eligible academic faculty or staff and may be redistributed to eligible users subject to the terms and conditions of the License
The Windows Research Kernel (WRK) packages core Microsoft Windows XP x64/Server 2003 SP1 kernel source code with an environment for building and testing experimental versions of the Windows kernel for use in teaching and research. The WRK includes source for processes, threads, LPC, virtual memory, scheduler, object manager, I/O manager, synchronization, worker threads, kernel heap manager, and other core NTOS functionality.
The WRK is useful in design projects that allow your students to explore operating system (OS) principles using the Windows kernel sources. It enables advanced teaching and research by facilitating building experiments and projects based on modifying the Windows kernel, as well as by promoting better understanding of the Windows architecture and implementation.
WRK is primarily intended for faculty and instructors working in the area of operating systems who develop courses and write textbooks and want to include information about the Windows kernel based on the actual source code. The WRK includes a build/test environment and binaries for the omitted source components, which can be used to build fully functional NTOS kernels that can be installed on x86 (Server 2003 SP1) and AMD64 (Windows XP x64 Professional) systems.
Вот файл от туда "ntcsrmsg.h", который наверняка, вызовет некоторый интерес у "товарищей дзенствующих", в часности из-за
*++ BUILD Version: 0001 // Increment this if a change has global effects
Copyright (c) Microsoft Corporation. All rights reserved.
You may only use this code if you agree to the terms of the Windows Research Kernel Source Code License agreement (see License.txt).
If you do not agree to the terms, do not use the code.
Module Name:
ntcsrmsg.h
Abstract:
This module defines the public message format shared by the client and
server sides of the Client-Server Runtime (Csr) Subsystem.
--*/
#ifndef _NTCSRMSG_
#define _NTCSRMSG_
#ifdef __cplusplus
extern"C" {
#endif
#define CSR_API_PORT_NAME L"ApiPort"//
// This structure is filled in by the client prior to connecting to the CSR
// server. The CSR server will fill in the OUT fields if prior to accepting
// the connection.
//typedef struct _CSR_API_CONNECTINFO {
OUT HANDLE ObjectDirectory;
OUT PVOID SharedSectionBase;
OUT PVOID SharedStaticServerData;
OUT PVOID SharedSectionHeap;
OUT ULONG DebugFlags;
OUT ULONG SizeOfPebData;
OUT ULONG SizeOfTebData;
OUT ULONG NumberOfServerDllNames;
OUT HANDLE ServerProcessId;
} CSR_API_CONNECTINFO, *PCSR_API_CONNECTINFO;
//
// Message format for messages sent from the client to the server
//typedef struct _CSR_CLIENTCONNECT_MSG {
IN ULONG ServerDllIndex;
IN OUT PVOID ConnectionInformation;
IN OUT ULONG ConnectionInformationLength;
} CSR_CLIENTCONNECT_MSG, *PCSR_CLIENTCONNECT_MSG;
#define CSR_NORMAL_PRIORITY_CLASS 0x00000010
#define CSR_IDLE_PRIORITY_CLASS 0x00000020
#define CSR_HIGH_PRIORITY_CLASS 0x00000040
#define CSR_REALTIME_PRIORITY_CLASS 0x00000080
//
// This helps out the Wow64 thunk generater, so we can change
// RelatedCaptureBuffer from struct _CSR_CAPTURE_HEADER* to PCSR_CAPTURE_HEADER.
// Redundant typedefs are legal, so we leave the usual form in as well.
//struct _CSR_CAPTURE_HEADER;
typedef struct _CSR_CAPTURE_HEADER CSR_CAPTURE_HEADER, *PCSR_CAPTURE_HEADER;
typedef struct _CSR_CAPTURE_HEADER {
ULONG Length;
PCSR_CAPTURE_HEADER RelatedCaptureBuffer;
ULONG CountMessagePointers;
PCHAR FreeSpace;
ULONG_PTR MessagePointerOffsets[1]; // Offsets within CSR_API_MSG of pointers
} CSR_CAPTURE_HEADER, *PCSR_CAPTURE_HEADER;
typedef ULONG CSR_API_NUMBER;
typedef struct _CSR_API_MSG {
PORT_MESSAGE h;
union {
CSR_API_CONNECTINFO ConnectionRequest;
struct {
PCSR_CAPTURE_HEADER CaptureBuffer;
CSR_API_NUMBER ApiNumber;
ULONG ReturnValue;
ULONG Reserved;
union {
CSR_CLIENTCONNECT_MSG ClientConnect;
ULONG_PTR ApiMessageData[39];
} u;
};
};
} CSR_API_MSG, *PCSR_API_MSG;
#define WINSS_OBJECT_DIRECTORY_NAME L"\\Windows"#define CSRSRV_SERVERDLL_INDEX 0
#define CSRSRV_FIRST_API_NUMBER 0
#define BASESRV_SERVERDLL_INDEX 1
#define BASESRV_FIRST_API_NUMBER 0
#define CONSRV_SERVERDLL_INDEX 2
#define CONSRV_FIRST_API_NUMBER 512
#define USERSRV_SERVERDLL_INDEX 3
#define USERSRV_FIRST_API_NUMBER 1024
#define CSR_MAKE_API_NUMBER( DllIndex, ApiIndex ) \
(CSR_API_NUMBER)(((DllIndex) << 16) | (ApiIndex))
#define CSR_APINUMBER_TO_SERVERDLLINDEX( ApiNumber ) \
((ULONG)((ULONG)(ApiNumber) >> 16))
#define CSR_APINUMBER_TO_APITABLEINDEX( ApiNumber ) \
((ULONG)((USHORT)(ApiNumber)))
#ifdef __cplusplus
}
#endif
#endif
Да я совсем забыл сказать, что файл взят с публичного сайта в инете... Сайт уже закрыли, но видимо не везде.
Здравствуйте, Andrew.W Worobow, Вы писали:
AWW>Да я совсем забыл сказать, что файл взят с публичного сайта в инете... Сайт уже закрыли, но видимо не везде.
А что можно прямо ядро собрать как линуксовое и на нём нормально работать? Круто. ХОЧУ!!!! Спасибо большое кстати за информацию, откровенно говоря даже не думал, что исходники ядра можно получить хоть как-то... Теперь кстати понятно откуда Руссинович, такой информированный.
Да кстати, а кто-нибедь знает, где бы можно взять этит исходники? Если у кого есть поделитесь!
AWW>
AWW>*++ BUILD Version: 0001 // Increment this if a change has global effects
А за это просто огромный респект, давно искал эти структуры... Поставил троечку от себя! Кстати вот кажется совсем недавно кто-то говорил, что без регистарации в csrss процесс не создать. Ну теперь это я так понимаю это не проблема.
Мое мнение что MRK конечно может дать информацию — но только в академической плоскости.
Вот если бы была 100% гарантия что это реальные коды которые используются в системе, то да.
Пусто
Правда, Ложь — мне все одно — я имею свое мнение.
Если функция недокументированна — это не значит, что ее не используют все ваши конкуренты в своих продуктах.
Любой строй переходный и отрицать это значит быть закостенелым идиотом.
Здравствуйте, Злость, Вы писали:
З>Мое мнение что MRK конечно может дать информацию — но только в академической плоскости.
З>Вот если бы была 100% гарантия что это реальные коды которые используются в системе, то да.
The WRK includes a build/test environment and binaries for the omitted source components, which can be used to build fully functional NTOS kernels that can be installed on Windows Server 2003 for x86/x64 and Windows XP x64.
AWW>The WRK includes a build/test environment and binaries for the omitted source components, which can be used to build fully functional NTOS kernels that can be installed on Windows Server 2003 for x86/x64 and Windows XP x64.
С каких пор такое доверие документации от M$
Пусто
Правда, Ложь — мне все одно — я имею свое мнение.
Если функция недокументированна — это не значит, что ее не используют все ваши конкуренты в своих продуктах.
Любой строй переходный и отрицать это значит быть закостенелым идиотом.
Здравствуйте, Злость, Вы писали:
З>Вот если бы была 100% гарантия что это реальные коды которые используются в системе, то да.
Гарантии конечно никто не даёт, но ведь можно ведь пробовать использовать и смотреть на результаты...
Ведь никто же не давал гарантии, что когда-то краденные исходники 2k правдивые...
Несмотря на это, в них умельцы раскопали багу в обработке бмпшников...
KV>Интересные результаты дает гугление по строке "исходники ntoskrnl (w2k3/research kernel)"
Вот ещё неплохая строчка для поиска: "CDCFKW.zip". Может, она сэкономит кому 15 минут общения с гуглём