Re: [PATCH] mpr: Implement connected resources enumeration.
Hi Pierre, Thanks for working on this. Some comments below. Hugh On Tuesday, 13 September 2016 5:53 AM, Pierre Schweitzer wrote:
@@ -73,6 +74,7 @@ typedef struct _WNetProviderTable #define WNET_ENUMERATOR_TYPE_GLOBAL 1 #define WNET_ENUMERATOR_TYPE_PROVIDER 2 #define WNET_ENUMERATOR_TYPE_CONTEXT 3 +#define WNET_ENUMERATOR_TYPE_CONNECTED 4
Please align all of the #defines using two or four spaces after the definition.
- LPNETRESOURCEW lpNet; + union + { + NETRESOURCEW * net; + HANDLE * handles; + };
We prefer the * to sit directly adjacent to the variable name, so NETRESOURCEW *net (i.e. no space before the variable name).
+static PWNetEnumerator _createConnectedEnumerator(DWORD dwScope, DWORD dwType, + DWORD dwUsage) +{ + PWNetEnumerator ret = HeapAlloc(GetProcessHeap(), + HEAP_ZERO_MEMORY, sizeof(WNetEnumerator));
These lines do not need to be split.
+#define _copyStringToEnumW(s) \ + len = strlenW(buffer[i].s) + 1; \ + len *= sizeof(WCHAR); \ + if (left < len) \ + { \ + ret = WN_MORE_DATA; \ + break; \ + } \ + end = (PVOID)((ULONG_PTR)end - len); \ + curr->s = end; \ + memcpy(end, buffer[i].s, len); \ + left -= len;
This would be better understood as a helper function.
+static DWORD _enumerateConnectedW(PWNetEnumerator enumerator, DWORD * user_count, + VOID * user_buffer, DWORD * user_size)
Please fix the * position. Also, please align the second line of arguments beneath PWNetEnumerator. 'VOID' should be 'void'.
+{ + DWORD ret, index, count, size, i, len, left; + PVOID end; + LPNETRESOURCEW curr, buffer; + PHANDLE handles; Avoid LPnnn and Pnnn syntax. Use void *, NETRESOURCEW * and HANDLE * instead. This mistake happens later on in your patch too.
+ if (!user_count) + return WN_BAD_POINTER; + if (!user_buffer) + return WN_BAD_POINTER; + if (!user_size) + return WN_BAD_POINTER;
Unless you plan to change this code in another patch, you can combine these into two lines.
+ if (handles[index] == 0) + { + ret = providerTable->table[index].openEnum(enumerator->dwScope, + enumerator->dwType, + enumerator->dwUsage, + NULL, &handles[index]); + if (ret != WN_SUCCESS) + continue; + } + + ret = providerTable->table[index].enumResource(handles[index], + &count, + buffer, + &size);
Line formatting.
+ for (index = 0; index < providerTable->numProviders; index++) + { + if (providerTable->table[index].dwEnumScopes && handles[index] != 0) + providerTable->table[index].closeEnum(handles[index]); + }
You can remove the != 0 statement since you don't use it for providerTable->table[index].dwEnumScopes.
participants (1)
-
Hugh McMaster