Changelog: - Added parameters to NtXxxPort functions prototypes (as reported by "Undocumented Windows NT" - from http://www.windowsitlibrary.com/Documents/Book.cfm?DocumentID=356) Alberto Index: nt.c =================================================================== RCS file: /home/wine/wine/dlls/ntdll/nt.c,v retrieving revision 1.47 diff -u -r1.47 nt.c --- nt.c 5 Dec 2002 19:56:16 -0000 1.47 +++ nt.c 10 Dec 2002 10:31:22 -0000 @@ -33,6 +33,41 @@ WINE_DEFAULT_DEBUG_CHANNEL(ntdll); +/* Structures used by NtConnectPort */ + +typedef struct LpcSectionInfo +{ + DWORD Length; + HANDLE SectionHandle; + DWORD Param1; + DWORD SectionSize; + DWORD ClientBaseAddress; + DWORD ServerBaseAddress; +} LPCSECTIONINFO, *PLPCSECTIONINFO; + +typedef struct LpcSectionMapInfo +{ + DWORD Length; + DWORD SectionSize; + DWORD ServerBaseAddress; +} LPCSECTIONMAPINFO, *PLPCSECTIONMAPINFO; + +/* Structure used by NtAcceptConnectPort, NtReplyWaitReceivePort */ + +#define MAX_MESSAGE_DATA 328 + +typedef struct LpcMessage +{ + WORD ActualMessageLength; + WORD TotalMessageLength; + DWORD MessageType; + DWORD ClientProcessId; + DWORD ClientThreadId; + DWORD MessageId; + DWORD SharedSectionSize; + BYTE MessageData[MAX_MESSAGE_DATA]; +} LPCMESSAGE, *PLPCMESSAGE; + /* * Timer object */ @@ -440,81 +475,100 @@ * NtCreatePort [NTDLL.@] * ZwCreatePort [NTDLL.@] */ -NTSTATUS WINAPI NtCreatePort(DWORD x1,DWORD x2,DWORD x3,DWORD x4,DWORD x5) +NTSTATUS WINAPI NtCreatePort(PHANDLE PortHandle,POBJECT_ATTRIBUTES ObjectAttributes, + DWORD MaxConnectInfoLength,DWORD MaxDataLength,DWORD unknown) { - FIXME("(0x%08lx,0x%08lx,0x%08lx,0x%08lx,0x%08lx),stub!\n",x1,x2,x3,x4,x5); - return 0; + FIXME("(%p,%p,0x%08lx,0x%08lx,0x%08lx),stub!\n",PortHandle,ObjectAttributes, + MaxConnectInfoLength,MaxDataLength,unknown); + return 0; } /****************************************************************************** * NtConnectPort [NTDLL.@] * ZwConnectPort [NTDLL.@] */ -NTSTATUS WINAPI NtConnectPort(DWORD x1,PUNICODE_STRING uni,DWORD x3,DWORD x4,DWORD x5,DWORD x6,DWORD x7,DWORD x8) -{ - FIXME("(0x%08lx,%s,0x%08lx,0x%08lx,0x%08lx,0x%08lx,0x%08lx,0x%08lx),stub!\n", - x1,debugstr_w(uni->Buffer),x3,x4,x5,x6,x7,x8); - return 0; +NTSTATUS WINAPI NtConnectPort(PHANDLE PortHandle,PUNICODE_STRING PortName,PVOID Unknown1, + PLPCSECTIONINFO sectionInfo,PLPCSECTIONMAPINFO mapInfo,PVOID Unknown2, + PVOID ConnectInfo,PDWORD pConnectInfoLength) +{ + FIXME("(%p,%s,%p,%p,%p,%p,%p,%p (%ld)),stub!\n",PortHandle,debugstr_w(PortName->Buffer),Unknown1, + sectionInfo,mapInfo,Unknown2,ConnectInfo,pConnectInfoLength,pConnectInfoLength?*pConnectInfoLength:-1); + if(ConnectInfo && pConnectInfoLength) + TRACE("\tMessage = %s\n",debugstr_an(ConnectInfo,*pConnectInfoLength)); + return 0; } /****************************************************************************** * NtListenPort [NTDLL.@] * ZwListenPort [NTDLL.@] */ -NTSTATUS WINAPI NtListenPort(DWORD x1,DWORD x2) +NTSTATUS WINAPI NtListenPort(HANDLE PortHandle,PLPCMESSAGE pLpcMessage) { - FIXME("(0x%08lx,0x%08lx),stub!\n",x1,x2); - return 0; + FIXME("(%p,%p),stub!\n",PortHandle,pLpcMessage); + return 0; } /****************************************************************************** * NtAcceptConnectPort [NTDLL.@] * ZwAcceptConnectPort [NTDLL.@] */ -NTSTATUS WINAPI NtAcceptConnectPort(DWORD x1,DWORD x2,DWORD x3,DWORD x4,DWORD x5,DWORD x6) +NTSTATUS WINAPI NtAcceptConnectPort(PHANDLE PortHandle,DWORD Unknown,PLPCMESSAGE pLpcMessage, + DWORD acceptIt,DWORD Unknown2,PLPCSECTIONMAPINFO mapInfo) { - FIXME("(0x%08lx,0x%08lx,0x%08lx,0x%08lx,0x%08lx,0x%08lx),stub!\n",x1,x2,x3,x4,x5,x6); - return 0; + FIXME("(%p,0x%08lx,%p,0x%08lx,0x%08lx,%p),stub!\n",PortHandle,Unknown,pLpcMessage,acceptIt,Unknown2,mapInfo); + return 0; } /****************************************************************************** * NtCompleteConnectPort [NTDLL.@] * ZwCompleteConnectPort [NTDLL.@] */ -NTSTATUS WINAPI NtCompleteConnectPort(DWORD x1) +NTSTATUS WINAPI NtCompleteConnectPort(HANDLE PortHandle) { - FIXME("(0x%08lx),stub!\n",x1); - return 0; + FIXME("(%p),stub!\n",PortHandle); + return 0; } /****************************************************************************** * NtRegisterThreadTerminatePort [NTDLL.@] * ZwRegisterThreadTerminatePort [NTDLL.@] */ -NTSTATUS WINAPI NtRegisterThreadTerminatePort(DWORD x1) +NTSTATUS WINAPI NtRegisterThreadTerminatePort(HANDLE PortHandle) { - FIXME("(0x%08lx),stub!\n",x1); - return 0; + FIXME("(%p),stub!\n",PortHandle); + return 0; } /****************************************************************************** * NtRequestWaitReplyPort [NTDLL.@] * ZwRequestWaitReplyPort [NTDLL.@] */ -NTSTATUS WINAPI NtRequestWaitReplyPort(DWORD x1,DWORD x2,DWORD x3) +NTSTATUS WINAPI NtRequestWaitReplyPort(HANDLE PortHandle,PLPCMESSAGE pLpcMessageIn,PLPCMESSAGE pLpcMessageOut) { - FIXME("(0x%08lx,0x%08lx,0x%08lx),stub!\n",x1,x2,x3); - return 0; + FIXME("(%p,%p,%p),stub!\n",PortHandle,pLpcMessageIn,pLpcMessageOut); + if(pLpcMessageIn) + { + TRACE("Message to send:\n"); + TRACE("\tActualMessageLength = %d\n",pLpcMessageIn->ActualMessageLength); + TRACE("\tTotalMessageLength = %d\n",pLpcMessageIn->TotalMessageLength); + TRACE("\tMessageType = %ld\n",pLpcMessageIn->MessageType); + TRACE("\tClientProcessId = %ld\n",pLpcMessageIn->ClientProcessId); + TRACE("\tClientThreadId = %ld\n",pLpcMessageIn->ClientThreadId); + TRACE("\tMessageId = %ld\n",pLpcMessageIn->MessageId); + TRACE("\tSharedSectionSize = %ld\n",pLpcMessageIn->SharedSectionSize); + TRACE("\tMessageData = %s\n",debugstr_an(pLpcMessageIn->MessageData,pLpcMessageIn->ActualMessageLength)); + } + return 0; } /****************************************************************************** * NtReplyWaitReceivePort [NTDLL.@] * ZwReplyWaitReceivePort [NTDLL.@] */ -NTSTATUS WINAPI NtReplyWaitReceivePort(DWORD x1,DWORD x2,DWORD x3,DWORD x4) +NTSTATUS WINAPI NtReplyWaitReceivePort(HANDLE PortHandle,PDWORD Unknown,PLPCMESSAGE pLpcMessageOut,PLPCMESSAGE pLpcMessageIn) { - FIXME("(0x%08lx,0x%08lx,0x%08lx,0x%08lx),stub!\n",x1,x2,x3,x4); - return 0; + FIXME("(%p,%p,%p,%p),stub!\n",PortHandle,Unknown,pLpcMessageOut,pLpcMessageIn); + return 0; } /* Index: ntdll.spec =================================================================== RCS file: /home/wine/wine/dlls/ntdll/ntdll.spec,v retrieving revision 1.83 diff -u -r1.83 ntdll.spec --- ntdll.spec 27 Nov 2002 20:21:24 -0000 1.83 +++ ntdll.spec 10 Dec 2002 10:31:22 -0000 @@ -54,7 +54,7 @@ @ extern NlsAnsiCodePage NlsAnsiCodePage @ extern NlsMbCodePageTag NlsMbCodePageTag @ extern NlsMbOemCodePageTag NlsMbOemCodePageTag -@ stdcall NtAcceptConnectPort(long long long long long long) NtAcceptConnectPort +@ stdcall NtAcceptConnectPort(ptr long ptr long long ptr) NtAcceptConnectPort @ stdcall NtAccessCheck(ptr long long ptr ptr ptr ptr ptr) NtAccessCheck @ stub NtAccessCheckAndAuditAlarm @ stub NtAdjustGroupsToken @@ -70,8 +70,8 @@ @ stdcall NtClearEvent(long) NtClearEvent @ stdcall NtClose(long) NtClose @ stub NtCloseObjectAuditAlarm -@ stdcall NtCompleteConnectPort(long) NtCompleteConnectPort -@ stdcall NtConnectPort(long long long long long long long long) NtConnectPort +@ stdcall NtCompleteConnectPort(ptr) NtCompleteConnectPort +@ stdcall NtConnectPort(ptr ptr ptr ptr ptr ptr ptr ptr) NtConnectPort @ stub NtContinue @ stdcall NtCreateDirectoryObject(long long long) NtCreateDirectoryObject @ stdcall NtCreateEvent(long long long long long) NtCreateEvent @@ -83,7 +83,7 @@ @ stub NtCreateMutant @ stub NtCreateNamedPipeFile @ stdcall NtCreatePagingFile(long long long long) NtCreatePagingFile -@ stdcall NtCreatePort(long long long long long) NtCreatePort +@ stdcall NtCreatePort(ptr ptr long long long) NtCreatePort @ stub NtCreateProcess @ stub NtCreateProfile @ stdcall NtCreateSection(ptr long ptr ptr long long long) NtCreateSection @@ -118,7 +118,7 @@ @ stub NtImpersonateClientOfPort @ stub NtImpersonateThread @ stub NtInitializeRegistry -@ stdcall NtListenPort(long long) NtListenPort +@ stdcall NtListenPort(ptr ptr) NtListenPort @ stub NtLoadDriver @ stdcall NtLoadKey(ptr ptr) NtLoadKey @ stub NtLockFile @@ -185,18 +185,18 @@ @ stub NtReadRequestData @ stub NtReadVirtualMemory @ stub NtRegisterNewDevice -@ stdcall NtRegisterThreadTerminatePort(long) NtRegisterThreadTerminatePort +@ stdcall NtRegisterThreadTerminatePort(ptr) NtRegisterThreadTerminatePort @ stub NtReleaseMutant @ stub NtReleaseProcessMutant @ stdcall NtReleaseSemaphore(long long ptr) NtReleaseSemaphore @ stub NtRemoveIoCompletion @ stdcall NtReplaceKey(ptr long ptr) NtReplaceKey @ stub NtReplyPort -@ stdcall NtReplyWaitReceivePort(long long long long) NtReplyWaitReceivePort +@ stdcall NtReplyWaitReceivePort(ptr ptr ptr ptr) NtReplyWaitReceivePort @ stub NtReplyWaitReceivePortEx @ stub NtReplyWaitReplyPort @ stub NtRequestPort -@ stdcall NtRequestWaitReplyPort(long long long) NtRequestWaitReplyPort +@ stdcall NtRequestWaitReplyPort(ptr ptr ptr) NtRequestWaitReplyPort @ stdcall NtResetEvent(long ptr) NtResetEvent @ stdcall NtRestoreKey(long long long) NtRestoreKey @ stdcall NtResumeThread(long long) NtResumeThread @@ -574,7 +574,7 @@ @ stdcall RtlxUnicodeStringToAnsiSize(ptr) RtlUnicodeStringToAnsiSize @ stdcall RtlxUnicodeStringToOemSize(ptr) RtlUnicodeStringToOemSize @ stub SaveEm87Context -@ stdcall ZwAcceptConnectPort(long long long long long long) NtAcceptConnectPort +@ stdcall ZwAcceptConnectPort(ptr long ptr long long ptr) NtAcceptConnectPort @ stdcall ZwAccessCheck(ptr long long ptr ptr ptr ptr ptr) NtAccessCheck @ stub ZwAccessCheckAndAuditAlarm @ stdcall ZwAdjustGroupsToken(long long long long long long) NtAdjustPrivilegesToken @@ -590,8 +590,8 @@ @ stdcall ZwClearEvent(long) NtClearEvent @ stdcall ZwClose(long) NtClose @ stub ZwCloseObjectAuditAlarm -@ stdcall ZwCompleteConnectPort(long) NtCompleteConnectPort -@ stdcall ZwConnectPort(long long long long long long long long) NtConnectPort +@ stdcall ZwCompleteConnectPort(ptr) NtCompleteConnectPort +@ stdcall ZwConnectPort(ptr ptr ptr ptr ptr ptr ptr ptr) NtConnectPort @ stub ZwContinue @ stdcall ZwCreateDirectoryObject(long long long) NtCreateDirectoryObject @ stdcall ZwCreateEvent(long long long long long) NtCreateEvent @@ -603,7 +603,7 @@ @ stub ZwCreateMutant @ stub ZwCreateNamedPipeFile @ stdcall ZwCreatePagingFile(long long long long) NtCreatePagingFile -@ stdcall ZwCreatePort(long long long long long) NtCreatePort +@ stdcall ZwCreatePort(ptr ptr long long long) NtCreatePort @ stub ZwCreateProcess @ stub ZwCreateProfile @ stdcall ZwCreateSection(ptr long ptr ptr long long long) NtCreateSection @@ -637,7 +637,7 @@ @ stub ZwImpersonateClientOfPort @ stub ZwImpersonateThread @ stub ZwInitializeRegistry -@ stdcall ZwListenPort(long long) NtListenPort +@ stdcall ZwListenPort(ptr ptr) NtListenPort @ stub ZwLoadDriver @ stdcall ZwLoadKey(ptr ptr) NtLoadKey @ stub ZwLockFile @@ -704,17 +704,17 @@ @ stub ZwReadRequestData @ stub ZwReadVirtualMemory @ stub ZwRegisterNewDevice -@ stdcall ZwRegisterThreadTerminatePort(long) NtRegisterThreadTerminatePort +@ stdcall ZwRegisterThreadTerminatePort(ptr) NtRegisterThreadTerminatePort @ stub ZwReleaseMutant @ stub ZwReleaseProcessMutant @ stdcall ZwReleaseSemaphore(long long ptr) NtReleaseSemaphore @ stub ZwRemoveIoCompletion @ stdcall ZwReplaceKey(ptr long ptr) NtReplaceKey @ stub ZwReplyPort -@ stdcall ZwReplyWaitReceivePort(long long long long) NtReplyWaitReceivePort +@ stdcall ZwReplyWaitReceivePort(ptr ptr ptr ptr) NtReplyWaitReceivePort @ stub ZwReplyWaitReplyPort @ stub ZwRequestPort -@ stdcall ZwRequestWaitReplyPort(long long long) NtRequestWaitReplyPort +@ stdcall ZwRequestWaitReplyPort(ptr ptr ptr) NtRequestWaitReplyPort @ stdcall ZwResetEvent(long ptr) NtResetEvent @ stdcall ZwRestoreKey(long long long) NtRestoreKey @ stdcall ZwResumeThread(long long) NtResumeThread