mirror of
https://github.com/bobranten/Ext4Fsd.git
synced 2025-10-30 13:28:31 -05:00
doc and build compatibility
This commit is contained in:
140
Ext2Srv/libraries/tlhelp32.h
Normal file
140
Ext2Srv/libraries/tlhelp32.h
Normal file
@@ -0,0 +1,140 @@
|
|||||||
|
/*
|
||||||
|
tlhelp32.h - Include file for Tool help functions.
|
||||||
|
|
||||||
|
Written by Mumit Khan <khan@nanotech.wisc.edu>
|
||||||
|
|
||||||
|
This file is part of a free library for the Win32 API.
|
||||||
|
|
||||||
|
This library is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
|
||||||
|
*/
|
||||||
|
#ifndef _TLHELP32_H
|
||||||
|
#define _TLHELP32_H
|
||||||
|
#if __GNUC__ >=3
|
||||||
|
#pragma GCC system_header
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
#define HF32_DEFAULT 1
|
||||||
|
#define HF32_SHARED 2
|
||||||
|
#define LF32_FIXED 0x1
|
||||||
|
#define LF32_FREE 0x2
|
||||||
|
#define LF32_MOVEABLE 0x4
|
||||||
|
#define MAX_MODULE_NAME32 255
|
||||||
|
#define TH32CS_SNAPHEAPLIST 0x1
|
||||||
|
#define TH32CS_SNAPPROCESS 0x2
|
||||||
|
#define TH32CS_SNAPTHREAD 0x4
|
||||||
|
#define TH32CS_SNAPMODULE 0x8
|
||||||
|
#define TH32CS_SNAPALL (TH32CS_SNAPHEAPLIST|TH32CS_SNAPPROCESS|TH32CS_SNAPTHREAD|TH32CS_SNAPMODULE)
|
||||||
|
#define TH32CS_INHERIT 0x80000000
|
||||||
|
typedef struct tagHEAPLIST32 {
|
||||||
|
DWORD dwSize;
|
||||||
|
DWORD th32ProcessID;
|
||||||
|
DWORD th32HeapID;
|
||||||
|
DWORD dwFlags;
|
||||||
|
} HEAPLIST32,*PHEAPLIST32,*LPHEAPLIST32;
|
||||||
|
typedef struct tagHEAPENTRY32 {
|
||||||
|
DWORD dwSize;
|
||||||
|
HANDLE hHandle;
|
||||||
|
DWORD dwAddress;
|
||||||
|
DWORD dwBlockSize;
|
||||||
|
DWORD dwFlags;
|
||||||
|
DWORD dwLockCount;
|
||||||
|
DWORD dwResvd;
|
||||||
|
DWORD th32ProcessID;
|
||||||
|
DWORD th32HeapID;
|
||||||
|
} HEAPENTRY32,*PHEAPENTRY32,*LPHEAPENTRY32;
|
||||||
|
typedef struct tagPROCESSENTRY32W {
|
||||||
|
DWORD dwSize;
|
||||||
|
DWORD cntUsage;
|
||||||
|
DWORD th32ProcessID;
|
||||||
|
DWORD th32DefaultHeapID;
|
||||||
|
DWORD th32ModuleID;
|
||||||
|
DWORD cntThreads;
|
||||||
|
DWORD th32ParentProcessID;
|
||||||
|
LONG pcPriClassBase;
|
||||||
|
DWORD dwFlags;
|
||||||
|
WCHAR szExeFile[MAX_PATH];
|
||||||
|
} PROCESSENTRY32W,*PPROCESSENTRY32W,*LPPROCESSENTRY32W;
|
||||||
|
typedef struct tagPROCESSENTRY32 {
|
||||||
|
DWORD dwSize;
|
||||||
|
DWORD cntUsage;
|
||||||
|
DWORD th32ProcessID;
|
||||||
|
DWORD th32DefaultHeapID;
|
||||||
|
DWORD th32ModuleID;
|
||||||
|
DWORD cntThreads;
|
||||||
|
DWORD th32ParentProcessID;
|
||||||
|
LONG pcPriClassBase;
|
||||||
|
DWORD dwFlags;
|
||||||
|
CHAR szExeFile[MAX_PATH];
|
||||||
|
} PROCESSENTRY32,*PPROCESSENTRY32,*LPPROCESSENTRY32;
|
||||||
|
typedef struct tagTHREADENTRY32 {
|
||||||
|
DWORD dwSize;
|
||||||
|
DWORD cntUsage;
|
||||||
|
DWORD th32ThreadID;
|
||||||
|
DWORD th32OwnerProcessID;
|
||||||
|
LONG tpBasePri;
|
||||||
|
LONG tpDeltaPri;
|
||||||
|
DWORD dwFlags;
|
||||||
|
} THREADENTRY32,*PTHREADENTRY32,*LPTHREADENTRY32;
|
||||||
|
typedef struct tagMODULEENTRY32W {
|
||||||
|
DWORD dwSize;
|
||||||
|
DWORD th32ModuleID;
|
||||||
|
DWORD th32ProcessID;
|
||||||
|
DWORD GlblcntUsage;
|
||||||
|
DWORD ProccntUsage;
|
||||||
|
BYTE *modBaseAddr;
|
||||||
|
DWORD modBaseSize;
|
||||||
|
HMODULE hModule;
|
||||||
|
WCHAR szModule[MAX_MODULE_NAME32 + 1];
|
||||||
|
WCHAR szExePath[MAX_PATH];
|
||||||
|
} MODULEENTRY32W,*PMODULEENTRY32W,*LPMODULEENTRY32W;
|
||||||
|
typedef struct tagMODULEENTRY32 {
|
||||||
|
DWORD dwSize;
|
||||||
|
DWORD th32ModuleID;
|
||||||
|
DWORD th32ProcessID;
|
||||||
|
DWORD GlblcntUsage;
|
||||||
|
DWORD ProccntUsage;
|
||||||
|
BYTE *modBaseAddr;
|
||||||
|
DWORD modBaseSize;
|
||||||
|
HMODULE hModule;
|
||||||
|
char szModule[MAX_MODULE_NAME32 + 1];
|
||||||
|
char szExePath[MAX_PATH];
|
||||||
|
} MODULEENTRY32,*PMODULEENTRY32,*LPMODULEENTRY32;
|
||||||
|
BOOL WINAPI Heap32First(LPHEAPENTRY32,DWORD,DWORD);
|
||||||
|
BOOL WINAPI Heap32ListFirst(HANDLE,LPHEAPLIST32);
|
||||||
|
BOOL WINAPI Heap32ListNext(HANDLE,LPHEAPLIST32);
|
||||||
|
BOOL WINAPI Heap32Next(LPHEAPENTRY32);
|
||||||
|
BOOL WINAPI Module32First(HANDLE,LPMODULEENTRY32);
|
||||||
|
BOOL WINAPI Module32FirstW(HANDLE,LPMODULEENTRY32W);
|
||||||
|
BOOL WINAPI Module32Next(HANDLE,LPMODULEENTRY32);
|
||||||
|
BOOL WINAPI Module32NextW(HANDLE,LPMODULEENTRY32W);
|
||||||
|
BOOL WINAPI Process32First(HANDLE,LPPROCESSENTRY32);
|
||||||
|
BOOL WINAPI Process32FirstW(HANDLE,LPPROCESSENTRY32W);
|
||||||
|
BOOL WINAPI Process32Next(HANDLE,LPPROCESSENTRY32);
|
||||||
|
BOOL WINAPI Process32NextW(HANDLE,LPPROCESSENTRY32W);
|
||||||
|
BOOL WINAPI Thread32First(HANDLE,LPTHREADENTRY32);
|
||||||
|
BOOL WINAPI Thread32Next(HANDLE,LPTHREADENTRY32);
|
||||||
|
BOOL WINAPI Toolhelp32ReadProcessMemory(DWORD,LPCVOID,LPVOID,DWORD,LPDWORD);
|
||||||
|
HANDLE WINAPI CreateToolhelp32Snapshot(DWORD,DWORD);
|
||||||
|
#ifdef UNICODE
|
||||||
|
#define LPMODULEENTRY32 LPMODULEENTRY32W
|
||||||
|
#define LPPROCESSENTRY32 LPPROCESSENTRY32W
|
||||||
|
#define MODULEENTRY32 MODULEENTRY32W
|
||||||
|
#define Module32First Module32FirstW
|
||||||
|
#define Module32Next Module32NextW
|
||||||
|
#define PMODULEENTRY32 PMODULEENTRY32W
|
||||||
|
#define PPROCESSENTRY32 PPROCESSENTRY32W
|
||||||
|
#define PROCESSENTRY32 PROCESSENTRY32W
|
||||||
|
#define Process32First Process32FirstW
|
||||||
|
#define Process32Next Process32NextW
|
||||||
|
#endif /* UNICODE */
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#endif /* _TLHELP32_H */
|
||||||
|
|
||||||
177
Ext2Srv/libraries/wtsapi32.h
Normal file
177
Ext2Srv/libraries/wtsapi32.h
Normal file
@@ -0,0 +1,177 @@
|
|||||||
|
#ifndef _WTSAPI32_H
|
||||||
|
#define _WTSAPI32_H
|
||||||
|
#if __GNUC__ >= 3
|
||||||
|
#pragma GCC system_header
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if (_WIN32_WINNT >= 0x0501)
|
||||||
|
// session notification message
|
||||||
|
#define WM_WTSSESSION_CHANGE 0x02B1
|
||||||
|
|
||||||
|
typedef enum _WTS_INFO_CLASS {
|
||||||
|
WTSInitialProgram = 0,
|
||||||
|
WTSApplicationName = 1,
|
||||||
|
WTSWorkingDirectory = 2,
|
||||||
|
WTSOEMId = 3,
|
||||||
|
WTSSessionId = 4,
|
||||||
|
WTSUserName = 5,
|
||||||
|
WTSWinStationName = 6,
|
||||||
|
WTSDomainName = 7,
|
||||||
|
WTSConnectState = 8,
|
||||||
|
WTSClientBuildNumber = 9,
|
||||||
|
WTSClientName = 10,
|
||||||
|
WTSClientDirectory = 11,
|
||||||
|
WTSClientProductId = 12,
|
||||||
|
WTSClientHardwareId = 13,
|
||||||
|
WTSClientAddress = 14,
|
||||||
|
WTSClientDisplay = 15,
|
||||||
|
WTSClientProtocolType = 16,
|
||||||
|
WTSIdleTime = 17,
|
||||||
|
WTSLogonTime = 18,
|
||||||
|
WTSIncomingBytes = 19,
|
||||||
|
WTSOutgoingBytes = 20,
|
||||||
|
WTSIncomingFrames = 21,
|
||||||
|
WTSOutgoingFrames = 22,
|
||||||
|
WTSClientInfo = 23,
|
||||||
|
WTSSessionInfo = 24
|
||||||
|
} WTS_INFO_CLASS;
|
||||||
|
|
||||||
|
typedef enum _WTS_CONNECTSTATE_CLASS {
|
||||||
|
WTSActive,
|
||||||
|
WTSConnected,
|
||||||
|
WTSConnectQuery,
|
||||||
|
WTSShadow,
|
||||||
|
WTSDisconnected,
|
||||||
|
WTSIdle,
|
||||||
|
WTSListen,
|
||||||
|
WTSReset,
|
||||||
|
WTSDown,
|
||||||
|
WTSInit
|
||||||
|
} WTS_CONNECTSTATE_CLASS;
|
||||||
|
|
||||||
|
// session notification message flags
|
||||||
|
#define WTS_CONSOLE_CONNECT 0x1
|
||||||
|
#define WTS_CONSOLE_DISCONNECT 0x2
|
||||||
|
#define WTS_REMOTE_CONNECT 0x3
|
||||||
|
#define WTS_REMOTE_DISCONNECT 0x4
|
||||||
|
#define WTS_SESSION_LOGON 0x5
|
||||||
|
#define WTS_SESSION_LOGOFF 0x6
|
||||||
|
#define WTS_SESSION_LOCK 0x7
|
||||||
|
#define WTS_SESSION_UNLOCK 0x8
|
||||||
|
#define WTS_SESSION_REMOTE_CONTROL 0x9
|
||||||
|
|
||||||
|
// WTSRegisterSessionNotifiction flags
|
||||||
|
#define NOTIFY_FOR_THIS_SESSION 0
|
||||||
|
#define NOTIFY_FOR_ALL_SESSIONS 1
|
||||||
|
|
||||||
|
BOOL WINAPI WTSRegisterSessionNotification(HWND hWnd, DWORD dwFlags);
|
||||||
|
BOOL WINAPI WTSUnRegisterSessionNotification(HWND hWnd);
|
||||||
|
BOOL WINAPI WTSQueryUserToken(ULONG SessionId, PHANDLE pToken);
|
||||||
|
|
||||||
|
#endif /* _WIN32_WINNT >= 0x0501 */
|
||||||
|
|
||||||
|
#if (_WIN32_WINNT >= 0x0500)
|
||||||
|
|
||||||
|
typedef struct _WTS_SESSION_INFOW {
|
||||||
|
DWORD SessionId;
|
||||||
|
LPWSTR pWinStationName;
|
||||||
|
WTS_CONNECTSTATE_CLASS State;
|
||||||
|
} WTS_SESSION_INFOW, *PWTS_SESSION_INFOW;
|
||||||
|
|
||||||
|
typedef struct _WTS_SESSION_INFOA {
|
||||||
|
DWORD SessionId;
|
||||||
|
LPSTR pWinStationName;
|
||||||
|
WTS_CONNECTSTATE_CLASS State;
|
||||||
|
} WTS_SESSION_INFOA, *PWTS_SESSION_INFOA;
|
||||||
|
|
||||||
|
#ifdef UNICODE
|
||||||
|
#define WTS_SESSION_INFO WTS_SESSION_INFOW
|
||||||
|
#define PWTS_SESSION_INFO PWTS_SESSION_INFOW
|
||||||
|
#else
|
||||||
|
#define WTS_SESSION_INFO WTS_SESSION_INFOA
|
||||||
|
#define PWTS_SESSION_INFO PWTS_SESSION_INFOA
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// WTSWaitSystemEvent local server handle
|
||||||
|
#define WTS_CURRENT_SERVER_HANDLE 0
|
||||||
|
#define WTS_CURRENT_SESSION ((DWORD)-1)
|
||||||
|
|
||||||
|
// WTSWaitSystemEvent flags
|
||||||
|
#define WTS_EVENT_NONE 0x00000000
|
||||||
|
#define WTS_EVENT_CREATE 0x00000001
|
||||||
|
#define WTS_EVENT_DELETE 0x00000002
|
||||||
|
#define WTS_EVENT_RENAME 0x00000004
|
||||||
|
#define WTS_EVENT_CONNECT 0x00000008
|
||||||
|
#define WTS_EVENT_DISCONNECT 0x00000010
|
||||||
|
#define WTS_EVENT_LOGON 0x00000020
|
||||||
|
#define WTS_EVENT_LOGOFF 0x00000040
|
||||||
|
#define WTS_EVENT_STATECHANGE 0x00000080
|
||||||
|
#define WTS_EVENT_LICENSE 0x00000100
|
||||||
|
#define WTS_EVENT_ALL 0x7FFFFFFF
|
||||||
|
#define WTS_EVENT_FLUSH 0x80000000
|
||||||
|
|
||||||
|
BOOL WINAPI WTSQuerySessionInformationA(HANDLE hServer, DWORD SessionId, WTS_INFO_CLASS WTSInfoClass,
|
||||||
|
LPSTR *ppBuffer, DWORD *pBytesReturned);
|
||||||
|
BOOL WINAPI WTSQuerySessionInformationW(HANDLE hServer, DWORD SessionId, WTS_INFO_CLASS WTSInfoClass,
|
||||||
|
LPTSTR *ppBuffer, DWORD *pBytesReturned);
|
||||||
|
BOOL WINAPI WTSWaitSystemEvent(HANDLE hServer, DWORD EventMask, DWORD* pEventFlags);
|
||||||
|
BOOL WINAPI WTSDisconnectSession(HANDLE hServer, DWORD SessionId, BOOL bWait);
|
||||||
|
BOOL WINAPI WTSEnumerateSessionsW(HANDLE hServer, DWORD Reserved, DWORD Version,
|
||||||
|
PWTS_SESSION_INFOW *ppSessionInfo,
|
||||||
|
PDWORD pCount);
|
||||||
|
BOOL WINAPI WTSEnumerateSessionsA(HANDLE hServer, DWORD Reserved, DWORD Version,
|
||||||
|
PWTS_SESSION_INFOA *ppSessionInfo,
|
||||||
|
PDWORD pCount);
|
||||||
|
void WINAPI WTSFreeMemory(PVOID pMemory);
|
||||||
|
|
||||||
|
#ifdef UNICODE
|
||||||
|
#define WTSEnumerateSessions WTSEnumerateSessionsW
|
||||||
|
#define WTSQuerySessionInformation WTSQuerySessionInformationW
|
||||||
|
#else
|
||||||
|
#define WTSEnumerateSessions WTSEnumerateSessionsA
|
||||||
|
#define WTSQuerySessionInformation WTSQuerySessionInformationA
|
||||||
|
#endif
|
||||||
|
|
||||||
|
BOOL WTSSendMessageA(
|
||||||
|
HANDLE hServer,
|
||||||
|
DWORD SessionId,
|
||||||
|
LPSTR pTitle,
|
||||||
|
DWORD TitleLength,
|
||||||
|
LPSTR pMessage,
|
||||||
|
DWORD MessageLength,
|
||||||
|
DWORD Style,
|
||||||
|
DWORD Timeout,
|
||||||
|
DWORD *pResponse,
|
||||||
|
BOOL bWait
|
||||||
|
);
|
||||||
|
|
||||||
|
BOOL WTSSendMessageW(
|
||||||
|
HANDLE hServer,
|
||||||
|
DWORD SessionId,
|
||||||
|
LPWSTR pTitle,
|
||||||
|
DWORD TitleLength,
|
||||||
|
LPWSTR pMessage,
|
||||||
|
DWORD MessageLength,
|
||||||
|
DWORD Style,
|
||||||
|
DWORD Timeout,
|
||||||
|
DWORD *pResponse,
|
||||||
|
BOOL bWait
|
||||||
|
);
|
||||||
|
|
||||||
|
#ifdef UNICODE
|
||||||
|
#define WTSSendMessage WTSSendMessageW
|
||||||
|
#else
|
||||||
|
#define WTSSendMessage WTSSendMessageA
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* _WIN32_WINNT >= 0x0500 */
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* _WTSAPI32_H */
|
||||||
@@ -2,7 +2,12 @@
|
|||||||
About
|
About
|
||||||
-----
|
-----
|
||||||
|
|
||||||
This is a branch of the Ext2Fsd project by Matt Wu where I try to implement support for metadata checksums and jbd2. I have also updated the project so it can be compiled with Visual Studio 2017 and Visual Studio 2019. This is work in progress. If you need a stable driver you should get the latest official release from http://www.ext2fsd.com. If you want to try this branch you should still install the oficial release and then copy this driver over the old in \windows\system32\drivers. Bo Branten.
|
This is a branch of the Ext2Fsd project by Matt Wu where I try to implement support for metadata
|
||||||
|
checksums and jbd2. I have also updated the project so it can be compiled with Visual Studio 2017
|
||||||
|
and Visual Studio 2019. This is work in progress. If you need a stable driver you should get the
|
||||||
|
latest official release from http://www.ext2fsd.com. If you want to try this branch you should
|
||||||
|
still install the oficial release and then copy this driver over the old in \windows\system32\drivers.
|
||||||
|
Bo Branten.
|
||||||
|
|
||||||
|
|
||||||
Introduction
|
Introduction
|
||||||
|
|||||||
Reference in New Issue
Block a user