/*++ Copyright (c) 1993 Microsoft Corporation Module Name: nwwks.idl Abstract: This is the IDL file that describes the RPC interface for the NetWare workstation internal APIs. Author: Rita Wong (ritaw) 11-Feb-1993 Environment: User Mode -Win32 Revision History: Yi-Hsin Sung ( yihsins ) 24-Apr-1993 Added NwrOpenEnumPrintServers and NwrOpenEnumPrintQueues Glenn A. Curtis (glennc) 19-Oct-1995 Added NwrGetUser, NwrGetResourceInformation, and NwrGetResourceParent --*/ // // Interface Attributes // [ uuid(E67AB081-9844-3521-9D32-834F038001C0), version(1.0), pointer_default(unique) ] // // Interface Keyword // interface nwwks // // Interface Body // { import "imports.idl"; // // Handle types // typedef [handle] wchar_t * NWWKSTA_IMPERSONATE_HANDLE; typedef [handle] wchar_t * NWWKSTA_IDENTIFY_HANDLE; typedef [context_handle] PVOID NWWKSTA_CONTEXT_HANDLE; typedef NWWKSTA_CONTEXT_HANDLE *LPNWWKSTA_CONTEXT_HANDLE; typedef [context_handle] PVOID NWWKSTA_PRINTER_CONTEXT; typedef NWWKSTA_PRINTER_CONTEXT *LPNWWKSTA_PRINTER_CONTEXT; typedef struct _NW_JOB_INFO { DWORD nPosition; [string, unique] wchar_t *pDocument; [string, unique] wchar_t *pUserName; } NW_JOB_INFO, *PNW_JOB_INFO; // // Function prototype // DWORD NwrCreateConnection( [in,string,unique] NWWKSTA_IMPERSONATE_HANDLE Reserved, [in,string,unique] wchar_t * LocalName, [in,string] wchar_t * RemoteName, [in] DWORD Type, [in,string,unique] wchar_t * Password, [in,string,unique] wchar_t * UserName ); typedef struct _NWSERVER { [string] wchar_t * ServerName; } NWSERVER, *LPNWSERVER; DWORD NwrChangePassword( [in,string,unique] NWWKSTA_IDENTIFY_HANDLE Reserved, [in] DWORD UserLuid, [in,string] wchar_t * UserName, [in,string,unique] wchar_t * OldPassword, [in,string,unique] wchar_t * NewPassword, [in,string] wchar_t * TreeName ); DWORD NwrDeleteConnection( [in,string,unique] NWWKSTA_IMPERSONATE_HANDLE Reserved, [in,string] wchar_t * ConnectionName, [in] DWORD UseForce ); DWORD NwrQueryServerResource( [in,string,unique] NWWKSTA_IMPERSONATE_HANDLE Reserved, [in,string] wchar_t * LocalName, [in, out,string, unique, size_is(RemoteNameLen * sizeof(wchar_t))] wchar_t * RemoteName, [in] DWORD RemoteNameLen, [out] LPDWORD CharsRequired ); DWORD NwrOpenEnumConnections( [in,string,unique] NWWKSTA_IDENTIFY_HANDLE Reserved, [in] DWORD ConnectionType, [out] LPNWWKSTA_CONTEXT_HANDLE EnumHandle ); DWORD NwrOpenEnumContextInfo( [in,string,unique] NWWKSTA_IDENTIFY_HANDLE Reserved, [in] DWORD ConnectionType, [out] LPNWWKSTA_CONTEXT_HANDLE EnumHandle ); DWORD NwrOpenEnumServersAndNdsTrees( [in,string,unique] NWWKSTA_IDENTIFY_HANDLE Reserved, [out] LPNWWKSTA_CONTEXT_HANDLE EnumHandle ); DWORD NwrOpenEnumNdsSubTrees_Disk( [in,string,unique] NWWKSTA_IDENTIFY_HANDLE Reserved, [in,string] wchar_t * ParentPathName, [in,out,unique] LPDWORD ClassTypeOfNDSLeaf, [out] LPNWWKSTA_CONTEXT_HANDLE EnumHandle ); DWORD NwrOpenEnumNdsSubTrees_Print( [in,string,unique] NWWKSTA_IDENTIFY_HANDLE Reserved, [in,string] wchar_t * ParentPathName, [in,out,unique] LPDWORD ClassTypeOfNDSLeaf, [out] LPNWWKSTA_CONTEXT_HANDLE EnumHandle ); DWORD NwrOpenEnumNdsSubTrees_Any( [in,string,unique] NWWKSTA_IDENTIFY_HANDLE Reserved, [in,string] wchar_t * ParentPathName, [in,out,unique] LPDWORD ClassTypeOfNDSLeaf, [out] LPNWWKSTA_CONTEXT_HANDLE EnumHandle ); DWORD NwrOpenEnumVolumes( [in,string,unique] NWWKSTA_IDENTIFY_HANDLE Reserved, [in,string] wchar_t * ServerName, [out] LPNWWKSTA_CONTEXT_HANDLE EnumHandle ); DWORD NwrOpenEnumQueues( [in,string,unique] NWWKSTA_IDENTIFY_HANDLE Reserved, [in,string] wchar_t * ServerName, [out] LPNWWKSTA_CONTEXT_HANDLE EnumHandle ); DWORD NwrOpenEnumVolumesQueues( [in,string,unique] NWWKSTA_IDENTIFY_HANDLE Reserved, [in,string] wchar_t * ServerName, [out] LPNWWKSTA_CONTEXT_HANDLE EnumHandle ); DWORD NwrOpenEnumDirectories( [in,string,unique] NWWKSTA_IDENTIFY_HANDLE Reserved, [in,string] wchar_t * VolumeName, [in,string,unique] wchar_t * UserName, [in,string,unique] wchar_t * Password, [out] LPNWWKSTA_CONTEXT_HANDLE EnumHandle ); DWORD NwrEnum( [in] NWWKSTA_CONTEXT_HANDLE EnumHandle, [in] DWORD_PTR EntriesRequested, [out,size_is(BufferSize)] LPBYTE Buffer, [in] DWORD BufferSize, [out] LPDWORD BytesNeeded, [out] LPDWORD EntriesRead ); DWORD NwrEnumConnections( [in] NWWKSTA_CONTEXT_HANDLE EnumHandle, [in] DWORD EntriesRequested, [out,size_is(BufferSize)] LPBYTE Buffer, [in] DWORD BufferSize, [out] LPDWORD BytesNeeded, [out] LPDWORD EntriesRead, [in] DWORD fImplicitConnections ); DWORD NwrCloseEnum( [in,out] LPNWWKSTA_CONTEXT_HANDLE EnumHandle ); DWORD NwrLogonUser( [in,string,unique] NWWKSTA_IDENTIFY_HANDLE Reserved, [in] PLUID LogonId, [in,string] wchar_t * UserName, [in,string,unique] wchar_t * Password, [in,string,unique] wchar_t * ServerName, [in,string,unique] wchar_t * NdsServerName, [in,out,string,unique,size_is(LogonCommandLength * sizeof(wchar_t))] wchar_t * LogonCommand, [in] DWORD LogonCommandLength, [in] DWORD PrintOption ); DWORD NwrLogoffUser( [in,string,unique] NWWKSTA_IDENTIFY_HANDLE Reserved, [in] PLUID LogonId ); DWORD NwrSetInfo( [in,string,unique] NWWKSTA_IDENTIFY_HANDLE Reserved, [in] DWORD PrintOption, [in,string,unique] wchar_t * ServerName ); DWORD NwrValidateUser( [in,string,unique] NWWKSTA_IDENTIFY_HANDLE Reserved, [in,string,unique] wchar_t * ServerName ); DWORD NwrOpenPrinter( [in,string,unique] NWWKSTA_IDENTIFY_HANDLE Reserved, [in,string] wchar_t *PrinterName, [in] DWORD fKnownPrinter, [out] LPNWWKSTA_PRINTER_CONTEXT PrinterHandle ); DWORD NwrClosePrinter( [in,out] LPNWWKSTA_PRINTER_CONTEXT PrinterHandle ); DWORD NwrGetPrinter( [in] NWWKSTA_PRINTER_CONTEXT PrinterHandle, [in] DWORD Level, [in,out,unique,size_is(BufferSize)] LPBYTE PrinterInfo, [in] DWORD BufferSize, [out] LPDWORD BytesNeeded ); DWORD NwrSetPrinter( [in] NWWKSTA_PRINTER_CONTEXT PrinterHandle, [in] DWORD Command ); DWORD NwrEnumPrinters( [in,string,unique] NWWKSTA_IDENTIFY_HANDLE Reserved, [in,string,unique] wchar_t *ContainerName, [in,out,unique,size_is(BufferSize)] LPBYTE Buffer, [in] DWORD BufferSize, [out] LPDWORD BytesNeeded, [out] LPDWORD EntriesRead ); DWORD NwrStartDocPrinter( [in] NWWKSTA_PRINTER_CONTEXT PrinterHandle, [in,string,unique] wchar_t *DocumentName, [in,string,unique] wchar_t *UserName, [in] DWORD PrintOption ); DWORD NwrWritePrinter( [in] NWWKSTA_PRINTER_CONTEXT PrinterHandle, [in,size_is(BufferSize)] LPBYTE Buffer, [in] DWORD BufferSize, [out] LPDWORD BytesWritten ); DWORD NwrAbortPrinter( [in] NWWKSTA_PRINTER_CONTEXT PrinterHandle ); DWORD NwrEndDocPrinter( [in] NWWKSTA_PRINTER_CONTEXT PrinterHandle ); DWORD NwrEnumJobs( [in] NWWKSTA_PRINTER_CONTEXT PrinterHandle, [in] DWORD FirstJobRequested, [in] DWORD EntriesRequested, [in] DWORD Level, [in,out,unique,size_is(BufferSize)] LPBYTE Buffer, [in] DWORD BufferSize, [out] LPDWORD BytesNeeded, [out] LPDWORD EntriesRead ); DWORD NwrGetJob( [in] NWWKSTA_PRINTER_CONTEXT PrinterHandle, [in] DWORD JobId, [in] DWORD Level, [in,out,unique,size_is(BufferSize)] LPBYTE JobInfo, [in] DWORD BufferSize, [out] LPDWORD BytesNeeded ); DWORD NwrSetJob( [in] NWWKSTA_PRINTER_CONTEXT PrinterHandle, [in] DWORD JobId, [in] DWORD Level, [in, unique] PNW_JOB_INFO pNwJobInfo, [in] DWORD Command ); DWORD NwrAddJob( [in] NWWKSTA_PRINTER_CONTEXT PrinterHandle, [out] LPADDJOB_INFO_1W AddInfo1, [in] DWORD BufferSize, [out] LPDWORD BytesNeeded ); DWORD NwrScheduleJob( [in] NWWKSTA_PRINTER_CONTEXT PrinterHandle, [in] DWORD JobId ); DWORD NwrWaitForPrinterChange( [in] NWWKSTA_PRINTER_CONTEXT PrinterHandle, [in,out] LPDWORD Flags ); DWORD NwrAddPrinterConnection( [in,string,unique] NWWKSTA_IMPERSONATE_HANDLE Reserved, [in,string] wchar_t * PrinterName, [in,string] wchar_t * DriverName ); #ifndef QFE_BUILD DWORD NwrGetService( [in, string, unique] NWWKSTA_IDENTIFY_HANDLE Reserved, [in] WORD nServiceType, [in, string] wchar_t *lpServiceName, [in] DWORD dwProperties, [in, out, unique, size_is(dwBufferLength)] LPBYTE lpServiceInfo, [in] DWORD dwBufferLength, [out] LPDWORD lpdwBytesNeeded ); DWORD NwrSetService( [in, string, unique] NWWKSTA_IDENTIFY_HANDLE Reserved, [in] DWORD dwOperation, [in] LPSERVICE_INFOW lpServiceInfo, [in] WORD nServiceType ); DWORD NwrGetUser( [in, string, unique] NWWKSTA_IDENTIFY_HANDLE Reserved, [in, string, unique] wchar_t * lpRemoteName, [out, size_is(dwUserNameBufferSize)] LPBYTE lpUserName, [in] DWORD dwUserNameBufferSize, [out] LPDWORD lpdwCharsRequired ); DWORD NwrGetResourceInformation( [in, string, unique] NWWKSTA_IDENTIFY_HANDLE Reserved, [in, string, unique] wchar_t * lpRemoteName, [in] DWORD dwType, [out, size_is(dwBufferSize)] LPBYTE lpBuffer, [in] DWORD dwBufferSize, [out] LPDWORD lpdwBytesNeeded, [out] LPDWORD lpdwSystemOffset ); DWORD NwrGetConnectionPerformance( [in, string, unique] NWWKSTA_IDENTIFY_HANDLE Reserved, [in, string, unique] wchar_t * lpRemoteName, [out, size_is(dwBufferSize)] LPBYTE lpNetConnectInfo, [in] DWORD dwBufferSize ); DWORD NwrGetResourceParent( [in, string, unique] NWWKSTA_IDENTIFY_HANDLE Reserved, [in, string, unique] wchar_t * lpRemoteName, [in] DWORD dwType, [out, size_is(dwBufferSize)] LPBYTE lpBuffer, [in] DWORD dwBufferSize, [out] LPDWORD lpdwBytesNeeded ); DWORD NwrSetLogonScript( [in,string,unique] NWWKSTA_IDENTIFY_HANDLE Reserved, [in] DWORD ScriptOptions ); #endif }