sharingViolation = 0;
do {
if (sharingViolation)
- Sleep(1);
+ Sleep(100);
fh = CreateFile(tbuffer, FILE_READ_DATA | FILE_WRITE_DATA,
FILE_SHARE_READ, NULL, OPEN_EXISTING,
FILE_FLAG_WRITE_THROUGH, NULL);
- sharingViolation = 1;
- } while (fh == INVALID_HANDLE_VALUE && GetLastError() == ERROR_SHARING_VIOLATION);
+ sharingViolation++;
+ } while (fh == INVALID_HANDLE_VALUE &&
+ GetLastError() == ERROR_SHARING_VIOLATION &&
+ sharingViolation < 100);
fflush(stdout);
if (fh == INVALID_HANDLE_VALUE) {
- int gonext = 0;
-
gle = GetLastError();
if (gle && ioctlDebug ) {
char buf[4096];
tbuffer,gle,buf);
}
errno = saveerrno;
+ SetLastError(gle);
}
+ }
+
+ if (fh == INVALID_HANDLE_VALUE &&
+ GetLastError() != ERROR_SHARING_VIOLATION) {
+ int gonext = 0;
lana_GetNetbiosName(szClient, LANA_NETBIOS_NAME_FULL);
sharingViolation = 0;
do {
if (sharingViolation)
- Sleep(1);
+ Sleep(100);
fh = CreateFile(tbuffer, FILE_READ_DATA | FILE_WRITE_DATA,
FILE_SHARE_READ, NULL, OPEN_EXISTING,
FILE_FLAG_WRITE_THROUGH, NULL);
- sharingViolation = 1;
- } while (fh == INVALID_HANDLE_VALUE && GetLastError() == ERROR_SHARING_VIOLATION);
+ sharingViolation++;
+ } while (fh == INVALID_HANDLE_VALUE &&
+ GetLastError() == ERROR_SHARING_VIOLATION &&
+ sharingViolation < 100);
fflush(stdout);
if (fh == INVALID_HANDLE_VALUE) {
gle = GetLastError();
tbuffer,gle,buf);
}
errno = saveerrno;
+ SetLastError(gle);
}
}
}
}
try_lsa_principal:
- if (fh == INVALID_HANDLE_VALUE) {
+ if (fh == INVALID_HANDLE_VALUE &&
+ GetLastError() != ERROR_SHARING_VIOLATION) {
int gonext = 0;
dwSize = sizeof(szUser);
sharingViolation = 0;
do {
if (sharingViolation)
- Sleep(1);
+ Sleep(100);
fh = CreateFile(tbuffer, FILE_READ_DATA | FILE_WRITE_DATA,
FILE_SHARE_READ, NULL, OPEN_EXISTING,
FILE_FLAG_WRITE_THROUGH, NULL);
- sharingViolation = 1;
- } while (fh == INVALID_HANDLE_VALUE && GetLastError() == ERROR_SHARING_VIOLATION);
+ sharingViolation++;
+ } while (fh == INVALID_HANDLE_VALUE &&
+ GetLastError() == ERROR_SHARING_VIOLATION &&
+ sharingViolation < 100);
fflush(stdout);
if (fh == INVALID_HANDLE_VALUE) {
gle = GetLastError();
tbuffer,gle,buf);
}
errno = saveerrno;
-
+ SetLastError(gle);
}
}
}
}
try_sam_compat:
- if ( fh == INVALID_HANDLE_VALUE ) {
+ if (fh == INVALID_HANDLE_VALUE &&
+ GetLastError() != ERROR_SHARING_VIOLATION) {
dwSize = sizeof(szUser);
if (GetUserNameEx(NameSamCompatible, szUser, &dwSize)) {
if ( ioctlDebug ) {
sharingViolation = 0;
do {
if (sharingViolation)
- Sleep(1);
+ Sleep(100);
fh = CreateFile(tbuffer, FILE_READ_DATA | FILE_WRITE_DATA,
FILE_SHARE_READ, NULL, OPEN_EXISTING,
FILE_FLAG_WRITE_THROUGH, NULL);
- sharingViolation = 1;
- } while (fh == INVALID_HANDLE_VALUE && GetLastError() == ERROR_SHARING_VIOLATION);
+ sharingViolation++;
+ } while (fh == INVALID_HANDLE_VALUE &&
+ GetLastError() == ERROR_SHARING_VIOLATION &&
+ sharingViolation < 100);
fflush(stdout);
if (fh == INVALID_HANDLE_VALUE) {
gle = GetLastError();
}
}
+ if (fh == INVALID_HANDLE_VALUE)
+ return -1;
+
/* return fh and success code */
*handlep = fh;
return 0;