Source code of Windows XP (NT5)
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
/*++
Copyright (c) 2000 Microsoft Corporation
Module Name:
SecUtil.cxx
Abstract:
Utility functions for manipulating cell sections
Author:
Kamen Moutafov (kamenm) Dec 99 - Feb 2000
Revision History:
--*/
#include <precomp.hxx>
RPC_STATUS OpenDbgSection(OUT HANDLE *pHandle, OUT PVOID *pSection, IN DWORD ProcessID, IN DWORD *pSectionNumbers OPTIONAL) { UNICODE_STRING SectionNameString; OBJECT_ATTRIBUTES ObjectAttributes; NTSTATUS NtStatus; RPC_CHAR SectionName[RpcSectionNameMaxSize];
GenerateSectionName(SectionName, sizeof(SectionName), ProcessID, pSectionNumbers); RtlInitUnicodeString(&SectionNameString, SectionName);
InitializeObjectAttributes(&ObjectAttributes, &SectionNameString, OBJ_CASE_INSENSITIVE, 0, 0);
NtStatus = NtOpenSection(pHandle, FILE_MAP_READ, &ObjectAttributes); if (!NT_SUCCESS(NtStatus)) { if (NtStatus == STATUS_OBJECT_NAME_NOT_FOUND) return ERROR_FILE_NOT_FOUND; else if (NtStatus == STATUS_ACCESS_DENIED) return ERROR_ACCESS_DENIED; return RPC_S_OUT_OF_MEMORY; }
*pSection = MapViewOfFileEx(*pHandle, FILE_MAP_READ, 0, 0, 0, NULL); if (*pSection == NULL) { CloseHandle(*pHandle); *pHandle = NULL; return RPC_S_OUT_OF_MEMORY; }
return RPC_S_OK; }
void CloseDbgSection(IN HANDLE SecHandle, PVOID SecPointer) { BOOL fResult;
ASSERT(SecHandle != NULL); ASSERT(SecPointer != NULL);
fResult = UnmapViewOfFile(SecPointer); ASSERT(fResult);
fResult = CloseHandle(SecHandle); ASSERT(fResult); }
|