Click here to Skip to main content
15,888,351 members
Home / Discussions / C / C++ / MFC
   

C / C++ / MFC

 
GeneralRe: hide the file or folder Pin
sarfaraznawaz12-Apr-11 21:05
sarfaraznawaz12-Apr-11 21:05 
QuestionDisplaying Chinese Characters Pin
pix_programmer20-Mar-11 19:06
pix_programmer20-Mar-11 19:06 
AnswerRe: Displaying Chinese Characters Pin
Richard MacCutchan20-Mar-11 23:09
mveRichard MacCutchan20-Mar-11 23:09 
QuestionRe: Displaying Chinese Characters [modified] Pin
pix_programmer20-Mar-11 23:28
pix_programmer20-Mar-11 23:28 
AnswerRe: Displaying Chinese Characters Pin
Richard MacCutchan21-Mar-11 2:24
mveRichard MacCutchan21-Mar-11 2:24 
AnswerRe: Displaying Chinese Characters Pin
yu-jian21-Mar-11 3:44
yu-jian21-Mar-11 3:44 
AnswerRe: Displaying Chinese Characters Pin
malaugh31-Mar-11 13:15
malaugh31-Mar-11 13:15 
QuestionHelp Get handles of process Pin
so0_lanhlung219-Mar-11 23:29
so0_lanhlung219-Mar-11 23:29 
i have function
<br />
void CShowHandlesOfProc::AddHandlesToList(CListCtrl *m_list,DWORD pid)<br />
{<br />
	int nItem=0;<br />
	NTSTATUS                   status;<br />
    PSYSTEM_HANDLE_INFORMATION handleInfo=new SYSTEM_HANDLE_INFORMATION;<br />
    ULONG                      handleInfoSize ;<br />
    HANDLE                     processHandle;<br />
    ULONG                      i;<br />
    <br />
    _NtQuerySystemInformation NtQuerySystemInformation = <br />
    (_NtQuerySystemInformation)GetLibraryProcAddress("ntdll.dll", "NtQuerySystemInformation");<br />
<br />
	_NtDuplicateObject NtDuplicateObject =<br />
    (_NtDuplicateObject)GetLibraryProcAddress("ntdll.dll", "NtDuplicateObject");<br />
<br />
	_NtQueryObject NtQueryObject =<br />
    (_NtQueryObject)GetLibraryProcAddress("ntdll.dll", "NtQueryObject");<br />
<br />
    if(!(processHandle = OpenProcess(PROCESS_DUP_HANDLE|PROCESS_QUERY_INFORMATION|PROCESS_VM_READ,FALSE,pid))) return;<br />
<br />
  //  handleInfo = (PSYSTEM_HANDLE_INFORMATION)malloc(handleInfoSize);<br />
<br />
    //while((status = NtQuerySystemInformation(SystemHandleInformation,handleInfo,handleInfoSize,NULL)) == STATUS_INFO_LENGTH_MISMATCH)<br />
    //handleInfo = (PSYSTEM_HANDLE_INFORMATION)realloc(handleInfo, handleInfoSize *= 2);<br />
	DWORD size=sizeof(SYSTEM_HANDLE_INFORMATION);<br />
	DWORD needed=0;<br />
	status = NtQuerySystemInformation(SystemHandleInformation,handleInfo,size,&needed);<br />
<br />
	if(!NT_SUCCESS(status))<br />
	{<br />
		if(needed==0)<br />
			return ;<br />
		delete handleInfo;<br />
		size = needed + 1024;<br />
		handleInfo= (PSYSTEM_HANDLE_INFORMATION)new BYTE[size];<br />
		status = NtQuerySystemInformation(SystemHandleInformation,handleInfo,size,&needed);<br />
<br />
		if(status==STATUS_INFO_LENGTH_MISMATCH)<br />
			MessageBox(L"Khong du Length cho NtQuerySystem");<br />
<br />
		if(!NT_SUCCESS(status))<br />
		{<br />
			delete handleInfo;<br />
			return;<br />
		}<br />
	}<br />
    for(i = 0; i < handleInfo->HandleCount; i++)<br />
    {<br />
        SYSTEM_HANDLE handle     = handleInfo->Handles[i];<br />
        HANDLE dupHandle         = NULL;<br />
		POBJECT_TYPE_INFORMATION objectTypeInfo=new OBJECT_TYPE_INFORMATION;<br />
		DWORD sizeType=0;<br />
        PVOID                    objectNameInfo;<br />
        UNICODE_STRING           objectName;<br />
        ULONG                    returnLength;<br />
<br />
        if(handle.ProcessId != pid) continue;<br />
<br />
		status=NtDuplicateObject(<br />
            processHandle,<br />
            (HANDLE)handle.Handle,<br />
            GetCurrentProcess(),<br />
            &dupHandle,<br />
            0,<br />
            0,<br />
            0<br />
            );<br />
       /* if (status=STATUS_ACCESS_DENIED)<br />
        {<br />
			MessageBox(L"deny access handle");<br />
            continue;<br />
  //      }*/<br />
		//if(status== STATUS_INVALID_HANDLE)<br />
		//	MessageBox(L"invalid handle");<br />
		//if(NT_SUCCESS(status))<br />
		//	MessageBox(L"thanh cong");<br />
		DWORD neededType=0;<br />
<br />
		sizeType=sizeof(OBJECT_TYPE_INFORMATION);<br />
<br />
		status=NtQueryObject(dupHandle,ObjectTypeInformation,objectTypeInfo,sizeType,&neededType);<br />
<br />
		if(status==STATUS_INFO_LENGTH_MISMATCH)<br />
		{<br />
			//MessageBox(L"thieu length Can Cap phat");<br />
			sizeType=neededType+1024;<br />
<br />
			status=NtQueryObject(dupHandle,ObjectTypeInformation,objectTypeInfo,sizeType,&neededType);<br />
<br />
	//		if(status==STATUS_INFO_LENGTH_MISMATCH)<br />
	//			MessageBox(L"Lai thieu Length");<br />
<br />
	//		if(status== STATUS_INVALID_HANDLE)<br />
	////			MessageBox(L"Handle khong ton tai");<br />
	//		else<br />
	////			MessageBox(L"du length");<br />
		}<br />
<br />
		if(!NT_SUCCESS(status))<br />
		{<br />
		//	MessageBox(L"Khong Thanh cong");<br />
<br />
			continue;<br />
<br />
		}<br />
		//MessageBox(L"Thanh cong QueryObject");<br />
<br />
		if((handle.GrantedAccess >= 0x0012019f)<br />
        && (handle.GrantedAccess != 0x001a019f)<br />
        && (handle.GrantedAccess != 0x00120189)<br />
        && (handle.GrantedAccess != 0x00100000)<br />
		&& (handle.GrantedAccess > 0x700a9e13));<br />
		{<br />
			MessageBox(objectTypeInfo->Name.Buffer);<br />
		}<br />
		/*if(!ReadProcessMemory(processHandle,objectTypeInfo+0x0,&UniTypeName,sizeof(UniTypeName),NULL))<br />
		{<br />
			MessageBox(L"Could not read");<br />
		}<br />
		else<br />
		{<br />
			MessageBox(L"read success");<br />
		}*/<br />
		/*MessageBox(L"Thanh cong");*/<br />
		//MessageBox(objectTypeInfo->Name.Buffer);<br />
		//free(objectTypeInfo);<br />
    }<br />
    free(handleInfo);<br />
<br />
    CloseHandle(processHandle);<br />
<br />
    return;<br />
}<br />


i got typeName of handle..but when this function got some handle Type Name..have erro : out of memory
i dont know...someone help me?

this is my struct
<br />
#define NT_SUCCESS(x) ((x) >= 0)<br />
#define STATUS_INFO_LENGTH_MISMATCH 0xc0000004<br />
<br />
#define SystemHandleInformation 16<br />
#define ObjectBasicInformation 0<br />
#define ObjectNameInformation 1<br />
#define ObjectTypeInformation 2<br />
<br />
typedef ULONG (NTAPI *_NtQuerySystemInformation)(<br />
    ULONG SystemInformationClass,<br />
    PVOID SystemInformation,<br />
    ULONG SystemInformationLength,<br />
    PULONG ReturnLength<br />
    );<br />
typedef ULONG (NTAPI *_NtDuplicateObject)(<br />
    HANDLE SourceProcessHandle,<br />
    HANDLE SourceHandle,<br />
    HANDLE TargetProcessHandle,<br />
    PHANDLE TargetHandle,<br />
    ACCESS_MASK DesiredAccess,<br />
    ULONG Attributes,<br />
    ULONG Options<br />
    );<br />
typedef ULONG (NTAPI *_NtQueryObject)(<br />
    HANDLE ObjectHandle,<br />
    ULONG ObjectInformationClass,<br />
    PVOID ObjectInformation,<br />
    ULONG ObjectInformationLength,<br />
    PULONG ReturnLength<br />
    );<br />
<br />
typedef struct _UNICODE_STRING<br />
{<br />
    USHORT Length;<br />
    USHORT MaximumLength;<br />
    PWSTR Buffer;<br />
} UNICODE_STRING, *PUNICODE_STRING;<br />
<br />
typedef struct _SYSTEM_HANDLE<br />
{<br />
    ULONG ProcessId;<br />
    BYTE ObjectTypeNumber;<br />
    BYTE Flags;<br />
    USHORT Handle;<br />
    PVOID Object;<br />
    ACCESS_MASK GrantedAccess;<br />
} SYSTEM_HANDLE, *PSYSTEM_HANDLE;<br />
<br />
typedef struct _SYSTEM_HANDLE_INFORMATION<br />
{<br />
    ULONG HandleCount;<br />
    SYSTEM_HANDLE Handles[1];<br />
} SYSTEM_HANDLE_INFORMATION, *PSYSTEM_HANDLE_INFORMATION;<br />
<br />
typedef enum _POOL_TYPE<br />
{<br />
    NonPagedPool,<br />
    PagedPool,<br />
    NonPagedPoolMustSucceed,<br />
    DontUseThisType,<br />
    NonPagedPoolCacheAligned,<br />
    PagedPoolCacheAligned,<br />
    NonPagedPoolCacheAlignedMustS<br />
} POOL_TYPE, *PPOOL_TYPE;<br />
<br />
typedef struct _OBJECT_TYPE_INFORMATION<br />
{<br />
    UNICODE_STRING Name;<br />
    ULONG TotalNumberOfObjects;<br />
    ULONG TotalNumberOfHandles;<br />
    ULONG TotalPagedPoolUsage;<br />
    ULONG TotalNonPagedPoolUsage;<br />
    ULONG TotalNamePoolUsage;<br />
    ULONG TotalHandleTableUsage;<br />
    ULONG HighWaterNumberOfObjects;<br />
    ULONG HighWaterNumberOfHandles;<br />
    ULONG HighWaterPagedPoolUsage;<br />
    ULONG HighWaterNonPagedPoolUsage;<br />
    ULONG HighWaterNamePoolUsage;<br />
    ULONG HighWaterHandleTableUsage;<br />
    ULONG InvalidAttributes;<br />
    GENERIC_MAPPING GenericMapping;<br />
    ULONG ValidAccess;<br />
    BOOLEAN SecurityRequired;<br />
    BOOLEAN MaintainHandleCount;<br />
    USHORT MaintainTypeList;<br />
    POOL_TYPE PoolType;<br />
    ULONG PagedPoolUsage;<br />
    ULONG NonPagedPoolUsage;<br />
} OBJECT_TYPE_INFORMATION, *POBJECT_TYPE_INFORMATION;<br />

AnswerRe: Help Get handles of process Pin
Hans Dietrich20-Mar-11 3:09
mentorHans Dietrich20-Mar-11 3:09 
GeneralRe: Help Get handles of process Pin
so0_lanhlung220-Mar-11 6:22
so0_lanhlung220-Mar-11 6:22 
GeneralRe: Help Get handles of process Pin
Hans Dietrich20-Mar-11 7:12
mentorHans Dietrich20-Mar-11 7:12 
GeneralRe: Help Get handles of process Pin
so0_lanhlung220-Mar-11 15:54
so0_lanhlung220-Mar-11 15:54 
Questioncan anyone convert this MFC code to WIN32 code please help Pin
goldenrose919-Mar-11 19:39
goldenrose919-Mar-11 19:39 
AnswerRe: can anyone convert this MFC code to WIN32 code please help Pin
Stephen Hewitt19-Mar-11 20:54
Stephen Hewitt19-Mar-11 20:54 
AnswerRe: can anyone convert this MFC code to WIN32 code please help Pin
Richard MacCutchan19-Mar-11 22:19
mveRichard MacCutchan19-Mar-11 22:19 
GeneralMessage Removed Pin
19-Mar-11 22:37
goldenrose919-Mar-11 22:37 
GeneralRe: can anyone convert this MFC code to WIN32 code please help Pin
Richard MacCutchan19-Mar-11 22:44
mveRichard MacCutchan19-Mar-11 22:44 
AnswerRe: can anyone convert this MFC code to WIN32 code please help Pin
User 742933820-Mar-11 0:37
professionalUser 742933820-Mar-11 0:37 
AnswerRe: can anyone convert this MFC code to WIN32 code please help Pin
Hans Dietrich20-Mar-11 1:40
mentorHans Dietrich20-Mar-11 1:40 
GeneralMessage Removed Pin
20-Mar-11 1:56
goldenrose920-Mar-11 1:56 
GeneralRe: can anyone convert this MFC code to WIN32 code please help Pin
Hans Dietrich20-Mar-11 2:43
mentorHans Dietrich20-Mar-11 2:43 
JokeMessage Removed Pin
20-Mar-11 2:52
goldenrose920-Mar-11 2:52 
GeneralRe: can anyone convert this MFC code to WIN32 code please help PinPopular
Hans Dietrich20-Mar-11 3:14
mentorHans Dietrich20-Mar-11 3:14 
GeneralMessage Removed Pin
20-Mar-11 6:02
goldenrose920-Mar-11 6:02 
GeneralRe: can anyone convert this MFC code to WIN32 code please help PinPopular
Richard MacCutchan20-Mar-11 7:16
mveRichard MacCutchan20-Mar-11 7:16 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.