本文整理汇总了C++中GlobalLock16函数的典型用法代码示例。如果您正苦于以下问题:C++ GlobalLock16函数的具体用法?C++ GlobalLock16怎么用?C++ GlobalLock16使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了GlobalLock16函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: NE_LoadPEResource
/**********************************************************************
* NE_LoadPEResource
*/
static HGLOBAL16 NE_LoadPEResource( NE_MODULE *pModule, WORD type, LPVOID bits, DWORD size )
{
HGLOBAL16 handle;
TRACE("module=%04x type=%04x\n", pModule->self, type );
handle = GlobalAlloc16( 0, size );
switch (type)
{
case RT_MENU:
ConvertMenu32To16( bits, size, GlobalLock16( handle ) );
break;
case RT_DIALOG:
ConvertDialog32To16( bits, size, GlobalLock16( handle ) );
break;
case RT_ACCELERATOR:
ConvertAccelerator32To16( bits, size, GlobalLock16( handle ) );
break;
case RT_STRING:
FIXME("not yet implemented!\n" );
/* fall through */
default:
memcpy( GlobalLock16( handle ), bits, size );
break;
}
return handle;
}
开发者ID:howard5888,项目名称:wineT,代码行数:31,代码来源:resource16.c
示例2: GetInstanceData16
/***********************************************************************
* GetInstanceData (KERNEL.54)
*/
INT16 WINAPI GetInstanceData16( HINSTANCE16 instance, WORD buffer, INT16 len )
{
char *ptr = GlobalLock16( instance );
if (!ptr || !len) return 0;
if ((int)buffer + len >= 0x10000) len = 0x10000 - buffer;
memcpy( (char *)GlobalLock16(CURRENT_DS) + buffer, ptr + buffer, len );
return len;
}
开发者ID:Barrell,项目名称:wine,代码行数:11,代码来源:task.c
示例3: NE_DefResourceHandler
/***********************************************************************
* DefResourceHandler (KERNEL.456)
*
* This is the default LoadProc() function.
*/
HGLOBAL16 WINAPI NE_DefResourceHandler( HGLOBAL16 hMemObj, HMODULE16 hModule,
HRSRC16 hRsrc )
{
HGLOBAL16 handle;
WORD sizeShift;
NE_NAMEINFO* pNameInfo;
NE_MODULE* pModule = NE_GetPtr( hModule );
if (!pModule) return 0;
sizeShift = *(WORD *)((char *)pModule + pModule->ne_rsrctab);
pNameInfo = (NE_NAMEINFO *)((char *)pModule + hRsrc);
if ( hMemObj )
handle = GlobalReAlloc16( hMemObj, pNameInfo->length << sizeShift, 0 );
else
handle = AllocResource16( hModule, hRsrc, 0 );
if (handle)
{
if (!NE_READ_DATA( pModule, GlobalLock16( handle ),
(int)pNameInfo->offset << sizeShift,
(int)pNameInfo->length << sizeShift ))
{
GlobalFree16( handle );
handle = 0;
}
}
return handle;
}
开发者ID:howard5888,项目名称:wineT,代码行数:35,代码来源:resource16.c
示例4: SetCurrentDirectory16
/***********************************************************************
* SetCurrentDirectory (KERNEL.412)
*/
BOOL16 WINAPI SetCurrentDirectory16( LPCSTR dir )
{
char fulldir[MAX_PATH];
if (!GetFullPathNameA( dir, MAX_PATH, fulldir, NULL )) return FALSE;
if (!SetCurrentDirectoryA( dir )) return FALSE;
if (fulldir[0] && fulldir[1] == ':')
{
TDB *pTask = GlobalLock16( GetCurrentTask() );
char env_var[4] = "=A:";
env_var[1] = fulldir[0];
SetEnvironmentVariableA( env_var, fulldir );
/* update the directory in the TDB */
if (pTask)
{
pTask->curdrive = 0x80 | (fulldir[0] - 'A');
GetShortPathNameA( fulldir + 2, pTask->curdir, sizeof(pTask->curdir) );
}
}
return TRUE;
}
开发者ID:bilboed,项目名称:wine,代码行数:28,代码来源:file.c
示例5: MZ_Launch
static void MZ_Launch( LPCSTR cmdtail, int length )
{
TDB *pTask = GlobalLock16( GetCurrentTask() );
BYTE *psp_start = PTR_REAL_TO_LIN( DOSVM_psp, 0 );
DWORD rv;
SYSLEVEL *lock;
MZ_FillPSP(psp_start, cmdtail, length);
pTask->flags |= TDBF_WINOLDAP;
/* DTA is set to PSP:0080h when a program is started. */
pTask->dta = MAKESEGPTR( DOSVM_psp, 0x80 );
GetpWin16Lock( &lock );
_LeaveSysLevel( lock );
ResumeThread(dosvm_thread);
rv = DOSVM_Loop(dosvm_thread);
CloseHandle(dosvm_thread);
dosvm_thread = 0; dosvm_tid = 0;
CloseHandle(loop_thread);
loop_thread = 0; loop_tid = 0;
VGA_Clean();
ExitProcess(rv);
}
开发者ID:howard5888,项目名称:wineT,代码行数:27,代码来源:module.c
示例6: K32WOWHandle32
/***********************************************************************
* K32WOWHandle32 (KERNEL32.57)
*/
HANDLE WINAPI K32WOWHandle32( WORD handle, WOW_HANDLE_TYPE type )
{
switch ( type )
{
case WOW_TYPE_HWND:
case WOW_TYPE_HMENU:
case WOW_TYPE_HDWP:
case WOW_TYPE_HDROP:
case WOW_TYPE_HDC:
case WOW_TYPE_HFONT:
case WOW_TYPE_HRGN:
case WOW_TYPE_HBITMAP:
case WOW_TYPE_HBRUSH:
case WOW_TYPE_HPALETTE:
case WOW_TYPE_HPEN:
case WOW_TYPE_HACCEL:
return (HANDLE)(ULONG_PTR)handle;
case WOW_TYPE_HMETAFILE:
FIXME( "conversion of metafile handles not supported yet\n" );
return (HANDLE)(ULONG_PTR)handle;
case WOW_TYPE_HTASK:
return ((TDB *)GlobalLock16(handle))->teb->ClientId.UniqueThread;
case WOW_TYPE_FULLHWND:
FIXME( "conversion of full window handles not supported yet\n" );
return (HANDLE)(ULONG_PTR)handle;
default:
ERR( "handle 0x%04x of unknown type %d\n", handle, type );
return (HANDLE)(ULONG_PTR)handle;
}
}
开发者ID:howard5888,项目名称:wineT,代码行数:37,代码来源:wowthunk.c
示例7: GetDOSEnvironment16
/***********************************************************************
* GetDOSEnvironment (KERNEL.131)
*
* Note: the environment is allocated once, it doesn't track changes
* made using the Win32 API. This shouldn't matter.
*
* Format of a 16-bit environment block:
* ASCIIZ string 1 (xx=yy format)
* ...
* ASCIIZ string n
* BYTE 0
* WORD 1
* ASCIIZ program name (e.g. C:\WINDOWS\SYSTEM\KRNL386.EXE)
*/
SEGPTR WINAPI GetDOSEnvironment16(void)
{
static const char ENV_program_name[] = "C:\\WINDOWS\\SYSTEM\\KRNL386.EXE";
static HGLOBAL16 handle; /* handle to the 16 bit environment */
if (!handle)
{
DWORD size;
LPSTR p, env;
p = env = GetEnvironmentStringsA();
while (*p) p += strlen(p) + 1;
p++; /* skip last null */
size = (p - env) + sizeof(WORD) + sizeof(ENV_program_name);
handle = GlobalAlloc16( GMEM_FIXED, size );
if (handle)
{
WORD one = 1;
LPSTR env16 = GlobalLock16( handle );
memcpy( env16, env, p - env );
memcpy( env16 + (p - env), &one, sizeof(one));
memcpy( env16 + (p - env) + sizeof(WORD), ENV_program_name, sizeof(ENV_program_name));
GlobalUnlock16( handle );
}
FreeEnvironmentStringsA( env );
}
return WOWGlobalLock16( handle );
}
开发者ID:Barrell,项目名称:wine,代码行数:42,代码来源:task.c
示例8: TASK_AllocThunk
/***********************************************************************
* TASK_AllocThunk
*
* Allocate a thunk for MakeProcInstance().
*/
static SEGPTR TASK_AllocThunk(void)
{
TDB *pTask;
THUNKS *pThunk;
WORD sel, base;
if (!(pTask = TASK_GetCurrent())) return 0;
sel = pTask->hCSAlias;
pThunk = (THUNKS *)pTask->thunks;
base = (char *)pThunk - (char *)pTask;
while (!pThunk->free)
{
sel = pThunk->next;
if (!sel) /* Allocate a new segment */
{
sel = GLOBAL_Alloc( GMEM_FIXED, FIELD_OFFSET( THUNKS, thunks[MIN_THUNKS] ),
pTask->hPDB, WINE_LDT_FLAGS_CODE );
if (!sel) return 0;
TASK_CreateThunks( sel, 0, MIN_THUNKS );
pThunk->next = sel;
}
pThunk = GlobalLock16( sel );
base = 0;
}
base += pThunk->free;
pThunk->free = *(WORD *)((BYTE *)pThunk + pThunk->free);
return MAKESEGPTR( sel, base );
}
开发者ID:Barrell,项目名称:wine,代码行数:33,代码来源:task.c
示例9: DragQueryFile16
/*************************************************************************
* DragQueryFile [SHELL.11]
*/
UINT16 WINAPI DragQueryFile16(
HDROP16 hDrop,
WORD wFile,
LPSTR lpszFile,
WORD wLength)
{
LPSTR lpDrop;
UINT i = 0;
LPDROPFILESTRUCT16 lpDropFileStruct = (LPDROPFILESTRUCT16) GlobalLock16(hDrop);
TRACE("(%04x, %x, %p, %u)\n", hDrop,wFile,lpszFile,wLength);
if(!lpDropFileStruct) goto end;
lpDrop = (LPSTR) lpDropFileStruct + lpDropFileStruct->wSize;
while (i++ < wFile)
{
while (*lpDrop++); /* skip filename */
if (!*lpDrop)
{
i = (wFile == 0xFFFF) ? i : 0;
goto end;
}
}
i = strlen(lpDrop);
if (!lpszFile ) goto end; /* needed buffer size */
lstrcpynA (lpszFile, lpDrop, wLength);
end:
GlobalUnlock16(hDrop);
return i;
}
开发者ID:AlexSteel,项目名称:wine,代码行数:36,代码来源:shell.c
示例10: MZ_Launch
static DWORD MZ_Launch( LPCSTR cmdtail, int length )
{
TDB *pTask = GlobalLock16( GetCurrentTask() );
BYTE *psp_start = PTR_REAL_TO_LIN( DOSVM_psp, 0 );
DWORD rv;
SYSLEVEL *lock;
MSG msg;
MZ_FillPSP(psp_start, cmdtail, length);
pTask->flags |= TDBF_WINOLDAP;
/* DTA is set to PSP:0080h when a program is started. */
pTask->dta = MAKESEGPTR( DOSVM_psp, 0x80 );
GetpWin16Lock( &lock );
_LeaveSysLevel( lock );
/* force the message queue to be created */
PeekMessageW(&msg, NULL, WM_USER, WM_USER, PM_NOREMOVE);
ResumeThread(dosvm_thread);
rv = DOSVM_Loop(dosvm_thread);
CloseHandle(dosvm_thread);
dosvm_thread = 0; dosvm_tid = 0;
CloseHandle(loop_thread);
loop_thread = 0; loop_tid = 0;
if (rv) return rv;
VGA_Clean();
ExitProcess(0);
}
开发者ID:bpowers,项目名称:wine,代码行数:32,代码来源:dosexe.c
示例11: OleMetaFilePictFromIconAndLabel16
/******************************************************************************
* OleMetaFilePictFromIconAndLabel (OLE2.56)
*
* Returns a global memory handle to a metafile which contains the icon and
* label given.
* I guess the result of that should look somehow like desktop icons.
* If no hIcon is given, we load the icon via lpszSourceFile and iIconIndex.
* This code might be wrong at some places.
*/
HGLOBAL16 WINAPI OleMetaFilePictFromIconAndLabel16(
HICON16 hIcon,
LPCOLESTR16 lpszLabel,
LPCOLESTR16 lpszSourceFile,
UINT16 iIconIndex
) {
METAFILEPICT16 *mf16;
HGLOBAL16 hmf16;
HMETAFILE hmf;
INT mfSize;
HDC hdc;
if (!hIcon) {
if (lpszSourceFile) {
HINSTANCE16 hInstance = LoadLibrary16(lpszSourceFile);
/* load the icon at index from lpszSourceFile */
hIcon = HICON_16(LoadIconA(HINSTANCE_32(hInstance), (LPCSTR)(DWORD)iIconIndex));
FreeLibrary16(hInstance);
} else
return 0;
}
FIXME("(%04x, '%s', '%s', %d): incorrect metrics, please try to correct them !\n",
hIcon, lpszLabel, lpszSourceFile, iIconIndex);
hdc = CreateMetaFileW(NULL);
DrawIcon(hdc, 0, 0, HICON_32(hIcon)); /* FIXME */
TextOutA(hdc, 0, 0, lpszLabel, 1); /* FIXME */
hmf = CloseMetaFile(hdc);
hmf16 = GlobalAlloc16(0, sizeof(METAFILEPICT16));
mf16 = (METAFILEPICT16 *)GlobalLock16(hmf16);
mf16->mm = MM_ANISOTROPIC;
mf16->xExt = 20; /* FIXME: bogus */
mf16->yExt = 20; /* dito */
mfSize = GetMetaFileBitsEx(hmf, 0, 0);
mf16->hMF = GlobalAlloc16(GMEM_MOVEABLE, mfSize);
if(mf16->hMF)
{
GetMetaFileBitsEx(hmf, mfSize, GlobalLock16(mf16->hMF));
GlobalUnlock16(mf16->hMF);
}
return hmf16;
}
开发者ID:howard5888,项目名称:wineT,代码行数:54,代码来源:ole2_16.c
示例12: thread_attach
/***********************************************************************
* KERNEL thread initialisation routine
*/
static void thread_attach(void)
{
/* allocate the 16-bit stack (FIXME: should be done lazily) */
HGLOBAL16 hstack = WOWGlobalAlloc16( GMEM_FIXED, 0x10000 );
kernel_get_thread_data()->stack_sel = GlobalHandleToSel16( hstack );
NtCurrentTeb()->WOW32Reserved = (void *)MAKESEGPTR( kernel_get_thread_data()->stack_sel,
0x10000 - sizeof(STACK16FRAME) );
memset( (char *)GlobalLock16(hstack) + 0x10000 - sizeof(STACK16FRAME), 0, sizeof(STACK16FRAME) );
}
开发者ID:Dimillian,项目名称:wine,代码行数:12,代码来源:kernel.c
示例13: GetExePtrHelper
/***********************************************************************
* GetExePtrHelper
*/
static inline HMODULE16 GetExePtrHelper( HANDLE16 handle, HTASK16 *hTask )
{
char *ptr;
HANDLE16 owner;
/* Check for module handle */
if (!(ptr = GlobalLock16( handle ))) return 0;
if (((NE_MODULE *)ptr)->ne_magic == IMAGE_OS2_SIGNATURE) return handle;
/* Search for this handle inside all tasks */
*hTask = hFirstTask;
while (*hTask)
{
TDB *pTask = TASK_GetPtr( *hTask );
if ((*hTask == handle) ||
(pTask->hInstance == handle) ||
(pTask->hQueue == handle) ||
(pTask->hPDB == handle)) return pTask->hModule;
*hTask = pTask->hNext;
}
/* Check the owner for module handle */
owner = FarGetOwner16( handle );
if (!(ptr = GlobalLock16( owner ))) return 0;
if (((NE_MODULE *)ptr)->ne_magic == IMAGE_OS2_SIGNATURE) return owner;
/* Search for the owner inside all tasks */
*hTask = hFirstTask;
while (*hTask)
{
TDB *pTask = TASK_GetPtr( *hTask );
if ((*hTask == owner) ||
(pTask->hInstance == owner) ||
(pTask->hQueue == owner) ||
(pTask->hPDB == owner)) return pTask->hModule;
*hTask = pTask->hNext;
}
return 0;
}
开发者ID:Barrell,项目名称:wine,代码行数:47,代码来源:task.c
示例14: convert_icon_to_32
static HICON convert_icon_to_32( HICON16 icon16 )
{
CURSORICONINFO *info = GlobalLock16( icon16 );
void *and_bits = info + 1;
void *xor_bits = (BYTE *)and_bits + info->nHeight * 2 * ((info->nWidth + 15) / 16);
HICON ret = CreateIcon( 0, info->nWidth, info->nHeight, info->bPlanes, info->bBitsPerPixel,
and_bits, xor_bits );
GlobalUnlock16( icon16 );
return ret;
}
开发者ID:AlexSteel,项目名称:wine,代码行数:10,代码来源:shell.c
示例15: TASK_GetCodeSegment
/**********************************************************************
* TASK_GetCodeSegment
*
* Helper function for GetCodeHandle/GetCodeInfo: Retrieve the module
* and logical segment number of a given code segment.
*
* 'proc' either *is* already a pair of module handle and segment number,
* in which case there's nothing to do. Otherwise, it is a pointer to
* a function, and we need to retrieve the code segment. If the pointer
* happens to point to a thunk, we'll retrieve info about the code segment
* where the function pointed to by the thunk resides, not the thunk itself.
*
* FIXME: if 'proc' is a SNOOP16 return stub, we should retrieve info about
* the function the snoop code will return to ...
*
*/
static BOOL TASK_GetCodeSegment( FARPROC16 proc, NE_MODULE **ppModule,
SEGTABLEENTRY **ppSeg, int *pSegNr )
{
NE_MODULE *pModule = NULL;
SEGTABLEENTRY *pSeg = NULL;
int segNr=0;
/* Try pair of module handle / segment number */
pModule = GlobalLock16( HIWORD( proc ) );
if ( pModule && pModule->ne_magic == IMAGE_OS2_SIGNATURE )
{
segNr = LOWORD( proc );
if ( segNr && segNr <= pModule->ne_cseg )
pSeg = NE_SEG_TABLE( pModule ) + segNr-1;
}
/* Try thunk or function */
else
{
BYTE *thunk = MapSL( (SEGPTR)proc );
WORD selector;
if ((thunk[0] == 0xb8) && (thunk[3] == 0xea))
selector = thunk[6] + (thunk[7] << 8);
else
selector = HIWORD( proc );
pModule = NE_GetPtr( GlobalHandle16( selector ) );
pSeg = pModule? NE_SEG_TABLE( pModule ) : NULL;
if ( pModule )
for ( segNr = 1; segNr <= pModule->ne_cseg; segNr++, pSeg++ )
if ( GlobalHandleToSel16(pSeg->hSeg) == selector )
break;
if ( pModule && segNr > pModule->ne_cseg )
pSeg = NULL;
}
/* Abort if segment not found */
if ( !pModule || !pSeg )
return FALSE;
/* Return segment data */
if ( ppModule ) *ppModule = pModule;
if ( ppSeg ) *ppSeg = pSeg;
if ( pSegNr ) *pSegNr = segNr;
return TRUE;
}
开发者ID:Barrell,项目名称:wine,代码行数:68,代码来源:task.c
示例16: DragQueryPoint16
/*************************************************************************
* DragQueryPoint [SHELL.13]
*/
BOOL16 WINAPI DragQueryPoint16(HDROP16 hDrop, POINT16 *p)
{
LPDROPFILESTRUCT16 lpDropFileStruct;
BOOL16 bRet;
TRACE("\n");
lpDropFileStruct = (LPDROPFILESTRUCT16) GlobalLock16(hDrop);
memcpy(p,&lpDropFileStruct->ptMousePos,sizeof(POINT16));
bRet = lpDropFileStruct->fInNonClientArea;
GlobalUnlock16(hDrop);
return bRet;
}
开发者ID:AlexSteel,项目名称:wine,代码行数:16,代码来源:shell.c
示例17: TASK_CreateThunks
/***********************************************************************
* TASK_CreateThunks
*
* Create a thunk free-list in segment 'handle', starting from offset 'offset'
* and containing 'count' entries.
*/
static void TASK_CreateThunks( HGLOBAL16 handle, WORD offset, WORD count )
{
int i;
THUNKS *pThunk;
pThunk = (THUNKS *)((BYTE *)GlobalLock16( handle ) + offset);
pThunk->next = 0;
pThunk->magic = THUNK_MAGIC;
pThunk->free = FIELD_OFFSET( THUNKS, thunks );
for (i = 0; i < count-1; i++)
*(WORD *)&pThunk->thunks[i] = FIELD_OFFSET( THUNKS, thunks[i+1] );
*(WORD *)&pThunk->thunks[i] = 0; /* Last thunk */
}
开发者ID:Barrell,项目名称:wine,代码行数:19,代码来源:task.c
示例18: WINHELP_EntryPoint
/**************************************************************************
* WINHELP entry point
*
* FIXME: should go into winhlp32.exe, but we don't support 16-bit modules in executables yet.
*/
void WINAPI WINHELP_EntryPoint( CONTEXT86 *context )
{
static const WCHAR winhlp32W[] = {'\\','w','i','n','h','l','p','3','2','.','e','x','e',0};
PDB16 *psp;
INT len, total;
WCHAR *cmdline, *p;
PROCESS_INFORMATION info;
STARTUPINFOW startup;
DWORD count, exit_code = 1;
InitTask16( context );
TRACE( "(ds=%x es=%x fs=%x gs=%x, bx=%04x cx=%04x di=%04x si=%x)\n",
context->SegDs, context->SegEs, context->SegFs, context->SegGs,
context->Ebx, context->Ecx, context->Edi, context->Esi );
psp = GlobalLock16( context->SegEs );
len = MultiByteToWideChar( CP_ACP, 0, (char *)psp->cmdLine + 1, psp->cmdLine[0], NULL, 0 );
total = (GetSystemDirectoryW( NULL, 0 ) + len + 1) * sizeof(WCHAR) + sizeof(winhlp32W);
cmdline = HeapAlloc( GetProcessHeap(), 0, total );
GetSystemDirectoryW( cmdline, total );
lstrcatW( cmdline, winhlp32W );
p = cmdline + lstrlenW(cmdline);
if (len)
{
*p++ = ' ';
MultiByteToWideChar( CP_ACP, 0, (char *)psp->cmdLine + 1, psp->cmdLine[0], p, len );
p[len] = 0;
}
memset( &startup, 0, sizeof(startup) );
startup.cb = sizeof(startup);
if (CreateProcessW( NULL, cmdline, NULL, NULL, FALSE, 0, NULL, NULL, &startup, &info ))
{
/* Give 10 seconds to the app to come up */
if (wait_input_idle( info.hProcess, 10000 ) == WAIT_FAILED)
WARN("WaitForInputIdle failed: Error %d\n", GetLastError() );
ReleaseThunkLock( &count );
WaitForSingleObject( info.hProcess, INFINITE );
GetExitCodeProcess( info.hProcess, &exit_code );
CloseHandle( info.hThread );
CloseHandle( info.hProcess );
}
else
ReleaseThunkLock( &count );
HeapFree( GetProcessHeap(), 0, cmdline );
ExitThread( exit_code );
}
开发者ID:WASSUM,项目名称:longene_travel,代码行数:56,代码来源:kernel16.c
示例19: FindNextFile16
/*************************************************************************
* FindNextFile (KERNEL.414)
*/
BOOL16 WINAPI FindNextFile16( HANDLE16 handle, WIN32_FIND_DATAA *data )
{
HANDLE *ptr;
BOOL ret = FALSE;
if ((handle == INVALID_HANDLE_VALUE16) || !(ptr = GlobalLock16( handle )))
{
SetLastError( ERROR_INVALID_HANDLE );
return ret;
}
ret = FindNextFileA( *ptr, data );
GlobalUnlock16( handle );
return ret;
}
开发者ID:bilboed,项目名称:wine,代码行数:17,代码来源:file.c
示例20: FindClose16
/*************************************************************************
* FindClose (KERNEL.415)
*/
BOOL16 WINAPI FindClose16( HANDLE16 handle )
{
HANDLE *ptr;
if ((handle == INVALID_HANDLE_VALUE16) || !(ptr = GlobalLock16( handle )))
{
SetLastError( ERROR_INVALID_HANDLE );
return FALSE;
}
FindClose( *ptr );
GlobalUnlock16( handle );
GlobalFree16( handle );
return TRUE;
}
开发者ID:bilboed,项目名称:wine,代码行数:17,代码来源:file.c
注:本文中的GlobalLock16函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论