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.
|
|
/****************************** Module Header ******************************\
* Module Name: clinit.c * * Copyright (c) 1985-1992 Microsoft Corporation * * This module contains all the client/server init code for MMSNDSRVL. * * History: * 1 May 92 SteveDav Pinched from USER \***************************************************************************/
#ifndef DOSWIN32
#include <nt.h>
#include <ntrtl.h>
#include <nturtl.h>
#include <ntcsrdll.h>
#include "winmmi.h"
#include "mci.h"
#include <mmsndcs.h>
#include <winss.h>
#include <ntcsrmsg.h>
#endif
/***************************************************************************\
* ServerInit * * When WINMM is loaded by an EXE (either at EXE load or at LoadModule * time) this routine is called by the loader. Its purpose is to initialize * everything that will be needed for future API calls by the app. * * History: * 1 May 92 SteveDav Pinched from USER \***************************************************************************/
UINT fServer; // Server Process id
BOOL ServerInit(VOID) {
#ifndef DOSWIN32
NTSTATUS status = 0; MMSNDCONNECT sndconnect; CSR_CALLBACK_INFO cbiCallBack; ULONG ulConnect = sizeof(MMSNDCONNECT);
sndconnect.ulVersion = MMSNDCURRENTVERSION; sndconnect.hFileMapping = 0; cbiCallBack.ApiNumberBase = 0; cbiCallBack.MaxApiNumber = 0; cbiCallBack.CallbackDispatchTable = 0;
dprintf3((" BEFORE %8x >> hFileMapping",sndconnect.hFileMapping)); dprintf4((" %8x >> hEvent",sndconnect.hEvent)); dprintf4((" %8x >> hMutex",sndconnect.hMutex));
status = CsrClientConnectToServer(WINSS_OBJECT_DIRECTORY_NAME, MMSNDSRV_SERVERDLL_INDEX, &cbiCallBack, &sndconnect, &ulConnect, (PBOOLEAN)&fServer);
if (!NT_SUCCESS(status)) { dprintf2(("could not connect to sound server, status is %8x", status)); return FALSE; }
dprintf3(("AFTER %8x = version, status is %x",sndconnect.ulCurrentVersion, status)); dprintf3((" %8x >> hFileMapping",sndconnect.hFileMapping)); dprintf4((" %8x >> hEvent",sndconnect.hEvent)); dprintf4((" %8x >> hMutex",sndconnect.hMutex));
if (sndconnect.hFileMapping) { base = MapViewOfFile( sndconnect.hFileMapping, FILE_MAP_ALL_ACCESS, 0, 0, 0); // from beginning for total length
if (!base) { DWORD n; n = GetLastError(); dprintf1(("Error %d mapping file view with server handle %x", n, sndconnect.hFileMapping)); } else { dprintf2(("Address %x mapping file view with server handle", base)); hEvent = sndconnect.hEvent; hMutex = sndconnect.hMutex; hFileMapping = sndconnect.hFileMapping; tidNotify = base->dwGlobalThreadId; } } else { dprintf1(("Server did not return a valid file mapping handle")); } #endif
return TRUE; }
|