+136.7
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
BOOLEAN
KiCheckForAtlThunk (
IN PEXCEPTION_RECORD ExceptionRecord,
IN PCONTEXT Context
)
/*++
Routine Description:
This routine will determine whether an access violation was raised due to
an attempt to execute an ATL thunk in a no-execute, non-stack area.
If so, the thunk will be emulated and execution resumed.
Arguments:
ExceptionRecord - Supplies a pointer to an exception record.
Context - Supplies a pointer to a context frame.
Return Value:
TRUE - Context was updated to reflect the emulated ATL thunk, resume
execution.
FALSE - Not an ATL thunk, continue raising the exception.
--*/
//.........
//KiDispatchException:
//......
switch (ExceptionRecord->ExceptionCode) {
case STATUS_BREAKPOINT:
ContextFrame.Eip--;
break;
case KI_EXCEPTION_ACCESS_VIOLATION:
ExceptionRecord->ExceptionCode = STATUS_ACCESS_VIOLATION;
if (PreviousMode == UserMode) {
if (KiCheckForAtlThunk(ExceptionRecord,&ContextFrame) != FALSE) {
goto Handled1;
}
//................
Объявление KiCheckForAtlThunk (втыкать в комменты и название =)) ) Для тех кто в танке: исходники Windows, оконные классы ATL выделяют тупо в хипе кусок-переходник, который заменяет HWND, идущий первым параметром в оконную процедуру, на естественный, объектно-ориентированный this. Так вот, если у нас установлено где-то в реестре юзать защиту от выполнения данных, то, естественно, в хипе хер чего выполнишь, и возникнет #GP, и тут-то нам и придет на помощь KiCheckForAtlThunk =) Короче, ИМХО, вносить изменения в ядро, для того, чтобы нормально работала криво написанная юзермодная библиотека -- та еще жесть =) Все кто минусует -- не шарят :P
ISith,
30 Января 2010
+135.9
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
public class PlayerWindow
{
private readonly ScheduleManager _scheduleManager = new ScheduleManager();
...
private void OpenSchedule(string timesheetFilename)
{
if (!_scheduleManager.OpenSchedule(timesheetFilename))
{
_isOpen = false;
return;
}
_isOpen = false;
}
}
Собственное творчество. ^_^
spbAngel,
29 Января 2010
+109.8
- 1
- 2
- 3
- 4
- 5
- 6
- 7
for i := 1 to X do begin
tblitem.FindKey([tbltranitemno.text]);
tblitem.GotoKey;
button3.Click;
edit3.Text := floattostr(org-i);
x := 1-1;
end;
(c) India
хочется взять и уеб...
dmtr76,
29 Января 2010
+64.9
- 1
- 2
- 3
// ...
private Blob lClob; //файл
// ...
nxx,
29 Января 2010
−127.7
- 1
Выбрать * из РегистрСведений.Таблица Где Таблица.ДатаПодтверждения >= ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0))
Это вот условие писал мой бывший начальник..
KingOfShit,
29 Января 2010
+162.9
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
$results = $_POST['result'];
foreach ($results as $key => $result)
{
$has_results = true;
if ( ! $result['text'] OR ! $result['description'])
{
if ( ! $result['text'] AND ! $result['description'])
{
$has_results = false;
unset($results[$key]);
}
else
{
$post->add_error('result', 'required');
}
}
}
if ( ! $has_results)
{
$post->add_error('result', 'required');
}
Верификация $_POST
Говноговно,
29 Января 2010
+146.9
- 1
- 2
- 3
- 4
class ToBeOrNotToBe{};
void distortion(ToBeOrNotToBe...)
{
}
Код компилируется в 2008 MVS
Barmaglot,
28 Января 2010
+144.5
- 1
- 2
- 3
- 4
- 5
bool condition = item.AccessPermissionId.HasValue ? true : false;
if (condition)
{
...
}
зачем ?!
the_boris30,
28 Января 2010
+72.4
- 1
- 2
- 3
- 4
- 5
this->pRCH->setChckSize(this->pRCH->getChckSize() +
this->pvRP->at(this->pvRP->size() - 1)->getRHBidR()->getRHBSize()
+ sizeof(*this->pvRP->at(this->pvRP->size() - 1)->getRHBidR()->getRHBid()));
this->pRBCH->setChckSize(this->pRBCH->getChckSize() +
this->pvRP->at(this->pvRP->size() - 1)->getRHBR()->getRHB()->getRBSize());
Автор кода отчаянно доказывал прямоту кода...
Methos,
28 Января 2010
+923.7
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
vector<
#ifdef O_UNICODE
wstring
#else
string
#endif
> get_file_list(
#ifdef O_UNICODE
wstring
#else
string
#endif
dir) {
#ifdef O_UNICODE
wdirectory_iterator
#else
directory_iterator
#endif
e;
vector<
#ifdef O_UNICODE
wstring
#else
string
#endif
> ret;
for (
#ifdef O_UNICODE
wdirectory_iterator
#else
directory_iterator
#endif
d(dir); d != e; d++) {
if (is_directory(d->status())) {
vector<
#ifdef O_UNICODE
wstring
#else
string
#endif
> tmp = get_file_list(dir +
#ifdef O_UNICODE
L
#endif
"\\" + d->filename());
for (unsigned int i = 0; i < tmp.size(); i++)
ret.push_back(tmp[i]);
} else
ret.push_back(dir +
#ifdef O_UNICODE
L
#endif
"\\" + d->filename());
}
return ret;
}
Условная компиляция, однако
braindead,
28 Января 2010