34#define DbgP(_x_) NFS41DbgPrint _x_
38#define TRACE_TAG L"[NFS41_NP]"
39#define WNNC_DRIVER( major, minor ) ( major * 0x00010000 + minor )
53 szbuffer[255] = (
TCHAR)0;
105 if (*phMutex ==
NULL)
108 DbgP((
TEXT(
"OpenSharedMemory: OpenMutex failed\n")));
109 goto OpenSharedMemoryAbort1;
117 if (*phMemory ==
NULL)
120 DbgP((
TEXT(
"OpenSharedMemory: OpenFileMapping failed\n")));
121 goto OpenSharedMemoryAbort2;
128 DbgP((
TEXT(
"OpenSharedMemory: MapViewOfFile failed\n")));
129 goto OpenSharedMemoryAbort3;
134OpenSharedMemoryAbort3:
137OpenSharedMemoryAbort2:
142OpenSharedMemoryAbort1:
214 DbgP((
TEXT(
"StoreConnectionInfo: NextIndex %d, NumResources %d\n"),
222 FreeEntryFound =
TRUE;
243 pNfs41NetResource->
dwScope = lpNetResource->dwScope;
244 pNfs41NetResource->
dwType = lpNetResource->dwType;
245 pNfs41NetResource->
dwDisplayType = lpNetResource->dwDisplayType;
256 lpNetResource->lpRemoteName);
286 DbgP((
L"[aglo] calling CreateFile\n"));
296 DbgP((
L"[aglo] after CreateFile Device Handle\n"));
300 DbgP((
L"[aglo] calling DeviceIoControl\n"));
311 DbgP((
L"#### In except\n"));
313 DbgP((
L"[aglo] returned from DeviceIoControl %08lx\n", rc));
316 DbgP((
L"[aglo] SendTo_NFS41Driver: returning error from DeviceIoctl\n"));
321 DbgP((
L"[aglo] SendTo_NFS41Driver: The DeviceIoctl call succeded\n"));
328 DbgP((
L"[aglo] SendTo_NFS41Driver: error %08lx opening device \n",
Status));
330 DbgP((
L"[aglo] returned from SendTo_NFS41Driver %08lx\n",
Status));
341 DbgP((
L"[aglo] GetNetCaps %d\n", nIndex ));
394 *lpLogonScript =
NULL;
395 DbgP((
L"[aglo] NPLogonNotify: returning WN_SUCCESS\n" ));
409 DbgP((
L"[aglo] NPPasswordChangeNotify: WN_NOT_SUPPORTED\n" ));
442 WCHAR wszScratch[128];
451 DbgP((
L"[aglo] NPAddConnection3('%s', '%s')\n",
452 lpNetResource->lpLocalName, lpNetResource->lpRemoteName ));
453 DbgP((
L"[aglo] username = '%s', passwd = '%s'\n", lpUserName, lpPassword));
459 DbgP((
L"InitializeConnectionInfo failed with %d\n",
Status ));
466 if (
lstrlen(lpNetResource->lpLocalName) < 2 ||
467 lpNetResource->lpLocalName[1] !=
L':') {
472 LocalName[0] = (
WCHAR)
toupper(lpNetResource->lpLocalName[0]);
474 LocalName[2] =
L'\0';
480 if (lpNetResource->lpRemoteName[0] ==
L'\0' ||
481 lpNetResource->lpRemoteName[0] !=
L'\\' ||
482 lpNetResource->lpRemoteName[1] !=
L'\\') {
488 p = lpNetResource->lpRemoteName + 1;
489 ServerName[0] =
L'\\';
498 ServerName[
i] =
p[
i];
499 if (
p[
i] ==
L'\\')
break;
502 ServerName[
i] =
L'\0';
508#ifdef CONVERT_2_UNIX_SLASHES
514 if(
q[
j] ==
L'\0')
break;
515 if (
q[
j] ==
L'\\')
q[
j] =
L'/';
525 if(
q[
j] ==
L'\0')
break;
526 if (
q[
j] ==
L'/')
q[
j] =
L'\\';
532 DbgP((
L"[aglo] Full Connect Name: %s\n", ConnectionName ));
533 DbgP((
L"[aglo] Full Connect Name Length: %d %d\n",
549 DbgP((
L"[aglo] SendTo_NFS41Driver failed with %d\n",
Status));
553 DbgP((
L"[aglo] calling DefineDosDevice\n"));
556 lpNetResource->lpLocalName,
559 DbgP((
L"[aglo] DefineDosDevice failed with %d\n",
Status));
568 DbgP((
L"[aglo] StoreConnectionInfo failed with %d\n",
Status));
574 DbgP((
L"[aglo] NPAddConnection3: status %08X\n",
Status));
595 DbgP((
TEXT(
"NPCancelConnection\n")));
600 (
PVOID)&pSharedMemory);
608 DbgP((
TEXT(
"NPCancelConnection: NextIndex %d, NumResources %d\n"),
616 if (pNetResource->
InUse)
624 DbgP((
TEXT(
"NPCancelConnection: Connection Found:\n")));
636 DbgP((
TEXT(
"NPCancelConnection: SendToMiniRdr returned Status %lx\n"),
Status));
658 DbgP((
TEXT(
"NPCancelConnection: Name %S EntryName %S\n"),
661 DbgP((
TEXT(
"NPCancelConnection: Name Length %d Entry Name Length %d\n"),
664 DbgP((
TEXT(
"NPCancelConnection: Name Length %d Entry Name Length %d\n"),
673 (
PVOID)&pSharedMemory);
692 (
PVOID)&pSharedMemory);
704 if (pNetResource->
InUse)
706 if ( ( (
wcslen(lpLocalName) + 1) *
sizeof(
WCHAR) ==
710 if (*lpBufferSize < pNetResource->RemoteNameLength)
744 DbgP((
L"[aglo] NPOpenEnum\n"));
773 DbgP((
L"[aglo] NPOpenEnum returning Status %lx\n",
Status));
788 ULONG SpaceNeeded = 0;
789 ULONG SpaceAvailable;
797 DbgP((
L"[aglo] NPEnumResource\n"));
799 DbgP((
L"[aglo] NPEnumResource Count Requested %d\n", *lpcCount));
802 SpaceAvailable = *lpBufferSize;
808 (
PVOID)&pSharedMemory);
813 for (
Index = *(
PULONG)hEnum; EntriesCopied < *lpcCount &&
818 if (pNfsNetResource->
InUse)
823 SpaceNeeded += 5 *
sizeof(
WCHAR);
825 if ( SpaceNeeded > SpaceAvailable )
828 DbgP((
L"[aglo] NPEnumResource More Data Needed - %d\n", SpaceNeeded));
829 *lpBufferSize = SpaceNeeded;
834 SpaceAvailable -= SpaceNeeded;
843 StringZone = (
PWCHAR)( (
PBYTE) StringZone - SpaceNeeded );
858 *StringZone++ =
L'A';
859 *StringZone++ =
L'_';
860 *StringZone++ =
L'O';
861 *StringZone++ =
L'K';
862 *StringZone++ =
L'\0';
869 StringZone = (
PWCHAR)( (
PBYTE) StringZone - SpaceNeeded );
878 *lpcCount = EntriesCopied;
881 DbgP((
L"[aglo] NPEnumResource entries returned: %d\n", EntriesCopied));
890 DbgP((
L"[aglo] NPCloseEnum\n"));
901 DbgP((
L"[aglo] NPGetResourceParent: WN_NOT_SUPPORTED\n" ));
912 DbgP((
L"[aglo] NPGetResourceInformation: WN_NOT_SUPPORTED\n" ));
923 DbgP((
L"[aglo] NPGetUniversalName: WN_NOT_SUPPORTED\n" ));
BOOL WINAPI DeviceIoControl(IN HANDLE hDevice, IN DWORD dwIoControlCode, IN LPVOID lpInBuffer OPTIONAL, IN DWORD nInBufferSize OPTIONAL, OUT LPVOID lpOutBuffer OPTIONAL, IN DWORD nOutBufferSize OPTIONAL, OUT LPDWORD lpBytesReturned OPTIONAL, IN LPOVERLAPPED lpOverlapped OPTIONAL)
void MarshalConnectionInfo(IN OUT PCONNECTION_INFO Connection)
DWORD InitializeConnectionInfo(IN OUT PCONNECTION_INFO Connection, IN PMOUNT_OPTION_BUFFER Options, OUT LPWSTR *ConnectionName)
void FreeConnectionInfo(IN PCONNECTION_INFO Connection)
#define INVALID_HANDLE_VALUE
#define HeapFree(x, y, z)
GLdouble GLdouble GLdouble GLdouble q
GLint GLint GLint GLint GLint GLint GLint GLbitfield GLenum filter
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
_Inout_ PUSB_DEVICE_HANDLE DeviceHandle
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
#define EXCEPTION_CONTINUE_SEARCH
#define ERROR_FILE_NOT_FOUND
_In_ LPWSTR _In_ DWORD _In_ DWORD _In_ DWORD dwFlags
#define NFS41_USER_DEVICE_NAME
#define NFS41_DEVICE_NAME
#define IOCTL_NFS41_ADDCONN
#define NFS41_USER_SHARED_MEMORY_NAME
#define NFS41_PROVIDER_NAME_U
#define IOCTL_NFS41_DELCONN
DWORD APIENTRY NPEnumResource(HANDLE hEnum, LPDWORD lpcCount, LPVOID lpBuffer, LPDWORD lpBufferSize)
static DWORD StoreConnectionInfo(IN LPCWSTR LocalName, IN LPCWSTR ConnectionName, IN USHORT ConnectionNameLength, IN LPNETRESOURCE lpNetResource)
DWORD APIENTRY NPGetCaps(DWORD nIndex)
VOID CloseSharedMemory(PHANDLE hMutex, PHANDLE hMemory, PVOID *pMemory)
DWORD APIENTRY NPPasswordChangeNotify(__in LPCWSTR lpAuthentInfoType, __in LPVOID lpAuthentInfo, __in LPCWSTR lpPreviousAuthentInfoType, __in LPVOID lpPreviousAuthentInfo, __in LPWSTR lpStationName, LPVOID StationHandle, DWORD dwChangeInfo)
ULONG _cdecl NFS41DbgPrint(__in LPTSTR Format,...)
ULONG SendTo_NFS41Driver(IN ULONG IoctlCode, IN PVOID InputDataBuf, IN ULONG InputDataLen, IN PVOID OutputDataBuf, IN PULONG pOutputDataLen)
DWORD APIENTRY NPGetUniversalName(LPCWSTR lpLocalPath, DWORD dwInfoLevel, LPVOID lpBuffer, LPDWORD lpBufferSize)
DWORD APIENTRY NPCloseEnum(HANDLE hEnum)
DWORD APIENTRY NPGetResourceParent(LPNETRESOURCE lpNetResource, LPVOID lpBuffer, LPDWORD lpBufferSize)
DWORD APIENTRY NPGetResourceInformation(__in LPNETRESOURCE lpNetResource, __out_bcount(*lpBufferSize) LPVOID lpBuffer, __inout LPDWORD lpBufferSize, __deref_out LPWSTR *lplpSystem)
DWORD APIENTRY NPAddConnection(__in LPNETRESOURCE lpNetResource, __in_opt LPWSTR lpPassword, __in_opt LPWSTR lpUserName)
DWORD APIENTRY NPLogonNotify(__in PLUID lpLogonId, __in PCWSTR lpAuthentInfoType, __in PVOID lpAuthentInfo, __in PCWSTR lpPreviousAuthentInfoType, __in PVOID lpPreviousAuthentInfo, __in PWSTR lpStationName, __in PVOID StationHandle, __out PWSTR *lpLogonScript)
DWORD APIENTRY NPOpenEnum(DWORD dwScope, DWORD dwType, DWORD dwUsage, LPNETRESOURCE lpNetResource, LPHANDLE lphEnum)
DWORD APIENTRY NPGetConnection(__in LPWSTR lpLocalName, __out_bcount(*lpBufferSize) LPWSTR lpRemoteName, __inout LPDWORD lpBufferSize)
DWORD APIENTRY NPCancelConnection(__in LPWSTR lpName, __in BOOL fForce)
DWORD APIENTRY NPAddConnection3(__in HWND hwndOwner, __in LPNETRESOURCE lpNetResource, __in_opt LPWSTR lpPassword, __in_opt LPWSTR lpUserName, __in DWORD dwFlags)
#define WNNC_DRIVER(major, minor)
DWORD OpenSharedMemory(PHANDLE phMutex, PHANDLE phMemory, PVOID *pMemory)
#define NFS41NP_MUTEX_NAME
#define NFS41NP_MAX_DEVICES
#define WNNC_CON_GETCONNECTIONS
#define WNNC_SPEC_VERSION51
#define WNNC_CON_CANCELCONNECTION
#define WNNC_CON_ADDCONNECTION
#define WNNC_CON_ADDCONNECTION3
#define WNNC_SPEC_VERSION
#define WNNC_DRIVER_VERSION
#define _SEH2_GetExceptionCode()
#define _SEH2_EXCEPT(...)
_Check_return_ _CRTIMP int __cdecl wcscmp(_In_z_ const wchar_t *_Str1, _In_z_ const wchar_t *_Str2)
STRSAFEAPI StringCchCatW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszSrc)
STRSAFEAPI StringCbCopyW(STRSAFE_LPWSTR pszDest, size_t cbDest, STRSAFE_LPCWSTR pszSrc)
STRSAFEAPI StringCchVPrintfW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszFormat, va_list argList)
STRSAFEAPI StringCchCopyW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszSrc)
PCONNECTION_BUFFER Buffer
WCHAR LocalName[MAX_PATH]
WCHAR RemoteName[MAX_PATH]
USHORT ConnectionNameLength
WCHAR ConnectionName[MAX_PATH]
INT NumberOfResourcesInUse
NFS41NP_NETRESOURCE NetResources[NFS41NP_MAX_DEVICES]
DWORD WINAPI WaitForSingleObject(IN HANDLE hHandle, IN DWORD dwMilliseconds)
BOOL WINAPI DECLSPEC_HOTPATCH ReleaseMutex(IN HANDLE hMutex)
wchar_t tm const _CrtWcstime_Writes_and_advances_ptr_ count wchar_t ** out
_In_ WDFCOLLECTION _In_ ULONG Index
_Must_inspect_result_ _In_ WDFIOTARGET _In_opt_ WDFREQUEST _In_ ULONG IoctlCode
#define DDD_NO_BROADCAST_SYSTEM
DWORD WINAPI GetLastError(void)
#define DDD_EXACT_MATCH_ON_REMOVE
#define DDD_RAW_TARGET_PATH
#define DDD_REMOVE_DEFINITION
#define OutputDebugString
#define RESOURCE_CONNECTED
#define RESOURCEUSAGE_CONNECTABLE
#define WN_ALREADY_CONNECTED
#define WN_NO_MORE_DEVICES
NETRESOURCEA * LPNETRESOURCE
#define WN_NO_MORE_ENTRIES
#define WNNC_NET_RDR2SAMPLE