DirectPlay 6.1a 지원하는 잔물결 시작 기술

기술 자료 번역 기술 자료 번역
기술 자료: 236614 - 이 문서가 적용되는 제품 보기.
이 문서가 보관되었습니다. "그대로" 제공되었으며, 업데이트가 되지 않을 것입니다.
모두 확대 | 모두 축소

요약

DirectPlay (DPlay) 6.1a DPlay 이전 버전 위에 주 향상 잔물결 실행 기술을 지원하는 것입니다. 정의에 따르면 ripple 시작 다른 프로그램을 시작하도록 한 프로그램을 사용합니다. 예를 들어, 따라서 타사 negotiator 되는 프로그램을 다른 프로그램이 요청한 대로 ripple 시작 관리자 프로그램 자체가 마스크합니다.

특히 ripple 표시 아이콘 게임을 시작하고 해당 불법 복제를 방지하는 데 사용되는 보안 프로그램의 프로그램입니다. ripple 시작 관리자 프로그램을 설치하고 실행하는 데 필요한 게임을 ripple 시작 관리자 프로그램을 각 프로그램에 암호화되어 있기 때문에 불법 수 및 중복될 수 없습니다. 이러한 이유로 잔물결 시작 기술은 소프트웨어 개발자 및 공급업체 사이를 인기도 얻기.

추가 정보

DPlay 6.1a 이전 버전을 사용하는 경우 (4/99 릴리스) 잔물결 Raunch 기능을 사용하여 만든 게임을 실행하려면 사용자가 게임을 온라인으로 연결하거나 DPlay의 핸드셰이킹 프로토콜을 ripple 시작 관리자 프로그램을 암호화 구성표를 나누기 때문에 있게 했던 연결 잃게 못할 수 있습니다. 게임 허용하도록 DPlay 6.1a 또는 나중에 업데이트된 또는 개발 중인 프로그램이 함께 DPlay이 암호화 기술을 사용하는. DPlay 원래 기능을 그대로 및 이전 버전에서 이전 버전과의 호환 가능한.

가장 중요한 변경 잔물결 실행 지원 DPlay 6.1a 수 있는 DirectPlayLobby 연결 프로세스 간 통신 (IPC) 기능 처리하는 것과 관련이 있습니다. 6.1a DPlay 전에 공유 IPC 개체 이름에 시작된 프로그램의 프로세스 ID를 포함하여 IPC 연결이 설정되었습니다. 각 프로그램에 대한 정적 글로벌 고유 식별자 (포함 및 프로그램과 함께 설치된 GUID) 및 동적 프로세스 ID를 자동으로 프로그램 실행 중인 각 인스턴스와 발급한 있습니다. DPlay 6.1a ripple 시작 관리자 프로그램에서 자체 프로세스 식별자를 사용하여 IPC 개체의 확인 이를 알리기 위해 프로그램을 명령줄 스위치를 보낼 때 IPC 연결이 설정됩니다. ripple 시작 시나리오에서 각 프로그램 또한 동적 프로세스 식별자 함께 동적 GUID를 발급할 수 있습니다.

해당 게임 로비 레지스트리 항목을 만들려면 설치 의존하지 ripple 시작 시나리오를 구현하는 데 DirectPlayLobby 레지스트리 키 "시작 관리자" 및 "파일" 변경해야 합니다. 레지스트리 키가 시작된 실행 파일의 경로 및 파일 이름이어야 합니다 표시 아이콘 (예: gameexename.icd) .icd 확장명이 .exe 확장명 대신 게임 원래 실행 파일 이름입니다.

이러한 레지스트리 변경 내용을 프로그램 및 lobbying 게임 등록 시작하면 ripple 수많은 요구 사항을 배치하십시오. 이러한 세부 사항은 다음과 같습니다.

RegisterApplication DirectPlayLobby 변경

이제 RegisterApplication LPDPAPPLICATIONDESC 및 LPDPAPPLICATIONDESC2 lpAppDesc 필드에 적용합니다.
HRESULT RegisterApplication(
     DWORD dwFlags,
     LPVOID lpAppDesc
);
				
DPAPPLICATIONDESC2 구조에 lpszAppLauncherName 지정하는 추가 필드가 있습니다 나타날 수 있습니다. 대신 프로그램을 시작할 이진 파일 이름입니다. ripple 시작 관리자 프로그램을 실제 이진 파일과 동일한 디렉터리에 있어야 합니다. 프로그램 이름 여전히 제공되어야 하는 및 WaitForConnectionSettings의 경우 시스템에서 실행 중인 프로그램을 찾는 데 사용됩니다.
typedef struct {
    DWORD   dwSize;
    DWORD   dwFlags;
    union {
      LPSTR    lpszApplicationNameA;
      LPWSTR   lpszApplicationName;
    }
    GUID    guidApplication;
    union {
      LPSTR     lpszFilenameA;
      LPWSTR    lpszFilename;
    }
    union {
      LPSTR   lpszCommandLineA;
      LPWSTR  lpszCommandLine;
    }
    union {
      LPSTR   lpszPathA;
      LPWSTR  lpszPath;
    }
    union {
      LPSTR    lpszCurrentDirectoryA;
      LPWSTR   lpszCurrentDirectory;
    }
    LPSTR   lpszDescriptionA;
    LPWSTR  lpszDescriptionW;
} DPAPPLICATIONDESC, FAR *LPDPAPPLICATIONDESC;
				
type def struct DPAPPLICATIONDESC2

{
    DWORD       dwSize;
    DWORD       dwFlags;
    union
    {
        LPSTR       lpszApplicationNameA;
        LPWSTR      lpszApplicationName;
    };
    GUID        guidApplication;
    union
    {
        LPSTR       lpszFilenameA;
        LPWSTR      lpszFilename;
    };
    union
    {
        LPSTR       lpszCommandLineA;
        LPWSTR      lpszCommandLine;
    };
    union
    {
        LPSTR       lpszPathA;
        LPWSTR      lpszPath;
    };
    union
    {
        LPSTR       lpszCurrentDirectoryA;
        LPWSTR      lpszCurrentDirectory;
    };
    LPSTR       lpszDescriptionA;
    LPWSTR      lpszDescriptionW;
    union
    {
    	LPSTR		lpszAppLauncherNameA;
    	LPWSTR      lpszAppLauncherName;
    };
} DPAPPLICATIONDESC2, *LPDPAPPLICATIONDESC2;
				

클래스 등록 변경 보여 주는 예제 코드

-전에
DPAPPLICATIONDESC	dpad;

...
dpad.dwSize = sizeof (DPAPPLICATIONDESC);
dpad.dwFlags = 0;
dpad.lpszApplicationNameA= "MyApp";
dpad.guidApplication = {12345678-...};
dpad.lpszFilenameA= "myapp.exe";
dpad.lpszCommandLineA= "/lobbied";
dpad.lpszPathA= "C:\\games";
dpad.lpszCurrentDirectoryA= "C:\\games";
dpad.lpszDescriptionA= "My Application";
dpad.lpszDescriptionW= L"My Application";

hr = lpDPLobby3A->RegisterApplication(0, &dpad);
...
				
"C:\games\myapp.exe/lobbied" RunApplication 있는 {12345678 - 함께...} GUID 호출될 때 실행됩니다.

DPAPPLICATIONDESC2	dpad2;

...
dpad2.dwSize = sizeof (DPAPPLICATIONDESC2);
dpad2.dwFlags = 0;
dpad2.lpszApplicationNameA= "MyApp";
dpad2.guidApplication = {12345678-...};
dpad2.lpszFilenameA= "myapp.exe";
dpad2.lpszCommandLineA= "/lobbied";
dpad2.lpszPathA= "C:\\games";
dpad2.lpszCurrentDirectoryA= "C:\\games";
dpad2.lpszDescriptionA= "My Application";
dpad2.lpszDescriptionW= L"My Application";
dpad2.lpszAppLauncherNameA= "launcher.exe";

hr = lpDPLobby3A->RegisterApplication(0, &dpad2);
...
				
"C:\games\launcher.exe/dplay_ipc_guid: {12345678-...}/lobbied" RunApplication 있는 {12345678 - 함께...} GUID 호출될 때 실행됩니다. ripple 시작 프로그램 Myapp.exe 위해 모든 명령줄 매개 변수를 전달해야 합니다.

Launcher.exe 사용하여 시작 프로그램 요구 사항

ripple 시작 프로그램을 시작하는 프로그램 명령줄 매개 변수를 전달해야 합니다. launcher.exe 프로그램이 시작되는 프로그램 같은 폴더에 있어야 합니다.

Launcher.exe 사용하여 시작 프로그램 요구 사항

ripple 시작 프로그램을 시작한 프로그램을 자동으로 않지만 이해할 명령줄 매개 변수를 무시해야 합니다. 이러한 프로그램을 항상 GetConnectionSettings WaitForConnectionSettings 적어도 한 번 사용하기 전에 호출해야 합니다.

샘플 잔물결 시작 프로그램

// 
// ripple.c : example ripple launcher. Win32 Console Application
// 

#include <windows.h>
#include "stdio.h"

int main(int argc, char* argv[])
{
	PROCESS_INFORMATION ProcInfo;
	STARTUPINFO StartupInfo;
	BOOL bCreated;

	LPTSTR lpCommandLine;

	printf("Launcher application\n");

	lpCommandLine = GetCommandLineA();

	// Strip EXE name from command line, pass rest to ripple launched app.
	while(*lpCommandLine && *lpCommandLine!= ' ') lpCommandLine++;
	
	printf("passing command line: %s\n",lpCommandLine);

	memset(&StartupInfo,0,sizeof(StartupInfo));
	StartupInfo.cb = sizeof(StartupInfo);
	
	bCreated=CreateProcessA(
		"duel.exe",		// the program we are ripple launching.
		lpCommandLine,
		NULL,
		NULL,
		TRUE,
		0,
		NULL,
		NULL,
		&StartupInfo,
		&ProcInfo);


	if(bCreated){
		printf("Waiting for application to exit\n");
		WaitForSingleObject(ProcInfo.hThread, INFINITE);
	} else {
		printf("Failed to create process\n");
	}

	printf("launcher application has left the building...\n");

	return 0;
}
				

참조

Microsoft DirectX 및 DirectPlay 웹 사이트를 방문할 수 있습니다.:
http://www.gamesforwindows.com/en-US/AboutGFW/Pages/DirectX10.aspx

속성

기술 자료: 236614 - 마지막 검토: 2014년 2월 11일 화요일 - 수정: 3.5
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft Windows 2000 Server
  • Microsoft Windows 2000 Advanced Server
  • Microsoft Windows 2000 Professional Edition
  • Microsoft Windows NT Server 4.0 Standard Edition
  • Microsoft Windows NT 4.0 서비스 팩 4
  • Microsoft Windows NT Workstation 4.0 Developer Edition
  • Microsoft Windows NT Workstation 4.0 Developer Edition
  • Microsoft Windows NT Server 4.0 Enterprise Edition
  • Microsoft Windows NT 4.0 서비스 팩 4
키워드:?
kbnosurvey kbarchive kbmt kb3rdparty kbinfo kbinterop kbprogramming KB236614 KbMtko
기계 번역된 문서
중요: 본 문서는 전문 번역가가 번역한 것이 아니라 Microsoft 기계 번역 소프트웨어로 번역한 것입니다. Microsoft는 번역가가 번역한 문서 및 기계 번역된 문서를 모두 제공하므로 Microsoft 기술 자료에 있는 모든 문서를 한글로 접할 수 있습니다. 그러나 기계 번역 문서가 항상 완벽한 것은 아닙니다. 따라서 기계 번역 문서에는 마치 외국인이 한국어로 말할 때 실수를 하는 것처럼 어휘, 구문 또는 문법에 오류가 있을 수 있습니다. Microsoft는 내용상의 오역 또는 Microsoft 고객이 이러한 오역을 사용함으로써 발생하는 부 정확성, 오류 또는 손해에 대해 책임을 지지 않습니다. Microsoft는 이러한 문제를 해결하기 위해 기계 번역 소프트웨어를 자주 업데이트하고 있습니다.

피드백 보내기

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com