Alexandre Julliard : kernel32: Move AllocMappedBuffer/ FreeMappedBuffer to thunk.c.
Alexandre Julliard
julliard at winehq.org
Sat Dec 27 13:45:17 CST 2008
Module: wine
Branch: master
Commit: 0ce0af5f167a19e81e826b2f410ab8f4e09b9245
URL: http://source.winehq.org/git/wine.git/?a=commit;h=0ce0af5f167a19e81e826b2f410ab8f4e09b9245
Author: Alexandre Julliard <julliard at winehq.org>
Date: Sat Dec 27 19:45:52 2008 +0100
kernel32: Move AllocMappedBuffer/FreeMappedBuffer to thunk.c.
---
dlls/kernel32/heap.c | 73 -------------------------------------------------
dlls/kernel32/thunk.c | 72 ++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 72 insertions(+), 73 deletions(-)
diff --git a/dlls/kernel32/heap.c b/dlls/kernel32/heap.c
index 1240104..3120058 100644
--- a/dlls/kernel32/heap.c
+++ b/dlls/kernel32/heap.c
@@ -1119,79 +1119,6 @@ BOOL WINAPI LocalUnlock(
}
-/**********************************************************************
- * AllocMappedBuffer (KERNEL32.38)
- *
- * This is an undocumented KERNEL32 function that
- * SMapLS's a GlobalAlloc'ed buffer.
- *
- * RETURNS
- * EDI register: pointer to buffer
- *
- * NOTES
- * The buffer is preceded by 8 bytes:
- * ...
- * edi+0 buffer
- * edi-4 SEGPTR to buffer
- * edi-8 some magic Win95 needs for SUnMapLS
- * (we use it for the memory handle)
- *
- * The SEGPTR is used by the caller!
- */
-void WINAPI __regs_AllocMappedBuffer(
- CONTEXT86 *context /* [in] EDI register: size of buffer to allocate */
-) {
- HGLOBAL handle = GlobalAlloc(0, context->Edi + 8);
- DWORD *buffer = GlobalLock(handle);
- DWORD ptr = 0;
-
- if (buffer)
- if (!(ptr = MapLS(buffer + 2)))
- {
- GlobalUnlock(handle);
- GlobalFree(handle);
- }
-
- if (!ptr)
- context->Eax = context->Edi = 0;
- else
- {
- buffer[0] = (DWORD)handle;
- buffer[1] = ptr;
-
- context->Eax = ptr;
- context->Edi = (DWORD)(buffer + 2);
- }
-}
-#ifdef DEFINE_REGS_ENTRYPOINT
-DEFINE_REGS_ENTRYPOINT( AllocMappedBuffer, 0, 0 )
-#endif
-
-/**********************************************************************
- * FreeMappedBuffer (KERNEL32.39)
- *
- * Free a buffer allocated by AllocMappedBuffer
- *
- * RETURNS
- * Nothing.
- */
-void WINAPI __regs_FreeMappedBuffer(
- CONTEXT86 *context /* [in] EDI register: pointer to buffer */
-) {
- if (context->Edi)
- {
- DWORD *buffer = (DWORD *)context->Edi - 2;
-
- UnMapLS(buffer[1]);
-
- GlobalUnlock((HGLOBAL)buffer[0]);
- GlobalFree((HGLOBAL)buffer[0]);
- }
-}
-#ifdef DEFINE_REGS_ENTRYPOINT
-DEFINE_REGS_ENTRYPOINT( FreeMappedBuffer, 0, 0 )
-#endif
-
/***********************************************************************
* GlobalMemoryStatusEx (KERNEL32.@)
* A version of GlobalMemoryStatus that can deal with memory over 4GB
diff --git a/dlls/kernel32/thunk.c b/dlls/kernel32/thunk.c
index 3533051..29093de 100644
--- a/dlls/kernel32/thunk.c
+++ b/dlls/kernel32/thunk.c
@@ -1185,6 +1185,78 @@ FreeSLCallback(
FIXME("(0x%08x): stub\n",x);
}
+/**********************************************************************
+ * AllocMappedBuffer (KERNEL32.38)
+ *
+ * This is an undocumented KERNEL32 function that
+ * SMapLS's a GlobalAlloc'ed buffer.
+ *
+ * RETURNS
+ * EDI register: pointer to buffer
+ *
+ * NOTES
+ * The buffer is preceded by 8 bytes:
+ * ...
+ * edi+0 buffer
+ * edi-4 SEGPTR to buffer
+ * edi-8 some magic Win95 needs for SUnMapLS
+ * (we use it for the memory handle)
+ *
+ * The SEGPTR is used by the caller!
+ */
+void WINAPI __regs_AllocMappedBuffer(
+ CONTEXT86 *context /* [in] EDI register: size of buffer to allocate */
+) {
+ HGLOBAL handle = GlobalAlloc(0, context->Edi + 8);
+ DWORD *buffer = GlobalLock(handle);
+ DWORD ptr = 0;
+
+ if (buffer)
+ if (!(ptr = MapLS(buffer + 2)))
+ {
+ GlobalUnlock(handle);
+ GlobalFree(handle);
+ }
+
+ if (!ptr)
+ context->Eax = context->Edi = 0;
+ else
+ {
+ buffer[0] = (DWORD)handle;
+ buffer[1] = ptr;
+
+ context->Eax = ptr;
+ context->Edi = (DWORD)(buffer + 2);
+ }
+}
+#ifdef DEFINE_REGS_ENTRYPOINT
+DEFINE_REGS_ENTRYPOINT( AllocMappedBuffer, 0, 0 )
+#endif
+
+/**********************************************************************
+ * FreeMappedBuffer (KERNEL32.39)
+ *
+ * Free a buffer allocated by AllocMappedBuffer
+ *
+ * RETURNS
+ * Nothing.
+ */
+void WINAPI __regs_FreeMappedBuffer(
+ CONTEXT86 *context /* [in] EDI register: pointer to buffer */
+) {
+ if (context->Edi)
+ {
+ DWORD *buffer = (DWORD *)context->Edi - 2;
+
+ UnMapLS(buffer[1]);
+
+ GlobalUnlock((HGLOBAL)buffer[0]);
+ GlobalFree((HGLOBAL)buffer[0]);
+ }
+}
+#ifdef DEFINE_REGS_ENTRYPOINT
+DEFINE_REGS_ENTRYPOINT( FreeMappedBuffer, 0, 0 )
+#endif
/**********************************************************************
* GetTEBSelectorFS (KERNEL.475)
More information about the wine-cvs
mailing list